среда, 16 января 2013 г.

Установка Zabbix-сервера и Zabbix-агента на сервере

Добрый день.

Сегодня начальство одобрило проект внедрения мониторинга состояния серверов Zabbix.
ZABBIX — свободная система мониторинга и отслеживания статусов разнообразных сервисов компьютерной сетисерверов и сетевого оборудования, написанная Алексеем Владышевым.

Начну небольшой цикл статей по Zabbix:

  1. Установка Zabbix-сервера и Zabbix-агента на сервере (для слежения его состояния).
  2. Первоначальная настройка Zabbix веб-интерфейса.
  3. Добавление новых серверов для отслеживания.
  4. Создание триггеров, сценариев, графиков.
  5. Zabbix SMS + ePochta SMS API (v3.0)
  6. Мониторинг MySQL с помощью Zabbix 

Это первая статья и здесь будет рассмотрен процесс установки Zabbix-сервера и Zabbix-агента. Для интересующихся прошу под кат.




В данный момент у нас есть 4 сервер: 3 сервера на которых работают клиентские системы и dev-сервер для разработки. На dev-сервере будет Zabbix-сервер + Zabbix-агент (для мониторинга самого dev-сервера), а на остальных серверах пассивный Zabbix-агент.

1. Установка Zabbix-сервера и Zabbix-агента на dev-сервер.
Подключимся по ssh к серверу (пусть его IP условно будет равен 192.168.0.1, на самом деле сервера с реальными IP-адресами).

1.1 Скачаем исходные коды Zabbix с официального сайта.
Перейдем во временную папку и скачаем zabbix_2.0.4:
$ cd /tmp
$ wget http://sourceforge.net/projects/zabbix/files/ZABBIX%20Latest%20Stable/2.0.4/zabbix-2.0.4.tar.gz

Разархивируем архив:
$ tar xfz zabbix-2.0.4.tar.gz

Используемые ключи в команде:
  • x - позволяет вам извлекать файлы из архива.
  • f - является обязательной опцией. Без неё tar пытается использовать магнитную ленту вместо файла архива.
  • z - позволяет вам обрабатывать архив, сжатый gzip'ом (с расширением .gz). Если вы забудете указать эту опцию, tar выдаст ошибку. И наоборот, эта опция не должна использоваться для несжатых архивов.
1.2 Создание пользователя zabbix
Все демоны Zabbix процессов требуют непривилегированного пользователя. Если демон Zabbix запущен от аккаунта пользователя без привилегий, то он будет работать под этим пользователем.
Если Zabbix сервер и агент работают на одной машине, то рекомендуется использовать разных пользователей для запуска сервера и для запуска агента. В противном случае, если сервер и агент запущены под одним пользователем, агент будет иметь доступ к файлу конфигурации сервера и любой пользователь с правами Администратора в Zabbix может с легкостью получить, например, пароль от базы данных.
Однако, если демон запущен из под аккаунта 'root', демон переключится на аккаунт пользователя 'zabbix', который должен существовать.
Создадим группу zabbix:
$ groupadd zabbix
$ useradd -g zabbix zabbix
1.3 Создание базы данных пользователя zabbix необходимо для Zabbix-сервера.
Зайдем в MySQL:
$ mysql -uroot -p
Введем пароль рута от MySQL.
mysql> creqate database zabbix character set utf8;
mysql> GRANT ALL PRIVILEGES ON zabbix.* TO 'zabbix'@'192.168.0.1' IDENTIFIED BY 'password' WITH GRAND OPTION;
mysql> quit;
Именно в таком порядке или будут проблемы с созданием.
$ mysql -uzabbix -ppassword zabbix < /tmp/zabbix-2.0.4/database/mysql/schema.sql
$ mysql -uzabbix -ppassword zabbix < /tmp/zabbix-2.0.4/database/mysql/images.sql
$ mysql -uzabbix -ppassword zabbix < /tmp/zabbix-2.0.4/database/mysql/data.sql
1.4 Сконфигурируем исходные коды
$ cd /tmp/zabbix-2.0.4/
$ ./configure --enable-server --enable-agent --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-jabber
Конфигурируем сервер и агент, с использованием mysql, net-snmp, libcurl, jabber с поддержкой Ipv6.
Во время конфигурирования могут отсутствовать те или иные библиотеки, вот пример флаг, ошибка и способ решения:
Флаг: --with-mysql
Ошибка: configure: error: MySQL library not found
Решение: apt-get install libmysqlclient-dev

Флаг: --with-jabber
Ошибка: checking for IKSEMEL... configure: error: Jabber library not found
Решение: apt-get install libiksemel-dev

Флаг: --with-libcurl
Ошибка: configure: error: Curl library not found
Решение: apt-get install libcurl4-openssl-dev

Флаг: --with-net-snmp
Ошибка: configure: error: Not found NET-SNMP library
Решение: apt-get install libsnmp-dev

Флаг: --with-openipmi
Ошибка: configure: error: Invalid OPENIPMI directory - unable to find ipmiif.h
Решение: apt-get install libipenipmi-dev
1.5 Соберем и установим все
$ make install
Проверяем есть ли это в /etc/services, если нет добавляем:
$ cat /etc/services | grep zabbix
zabbix-agent 10050/tcp Zabbix Agent
zabbix-agent 10050/udp Zabbix Agent
zabbix-trapper 10051/tcp Zabbix Trapper
zabbix-trapper 10051/udp Zabbix Trapper
1.6 Просмотрим и отредактируем файлы конфигурации
Вам нужно сконфигурировать этот файл для каждого хоста на котором установлен zabbix_agentd.
В файле вы должны указать IP адрес Zabbix сервера. Подключение с остальных хостов будут отключены.
$ nano /usr/local/etc/zabbix_agentd.conf
Я решил поменять у себя такие поля:
EnableRemoteCommands=1 - разрешение на удаленные команды с zabbix сервера.
LogRemoteCommands=1 - журналирование выполненных shell команд, как предупреждений.
Server=127.0.0.1 - Айпишник Zabbix-сервера.
Сохраняем (Ctrl+O) и выходим (Ctrl+X).

  • Файл конфигурации Zabbix-сервера /usr/local/etc/zabbix_server.conf
Вы должны указать имя базы данных, пользователя и пароль.
Остальные параметры подойдут вам по умолчанию, если у вас небольшая установка (до десяти наблюдаемых хостов).
$ nano /usr/local/etc/zabbix_server.conf
DBHost=localhost - по дефолту, можно не менять
DBName=zabbix - имя базы которую мы создавали
DBUser=zabbix - пользователь БД которого мы создали
DBPassword=password - пароль созданного нами пользователя

StartDiscoverers=10 - кол-во форков автообнаружения
Сохраняем (Ctrl+O) и выходим (Ctrl+X).
1.7 Копируем скрипты автозапуска.
Мне пришлось сначала отредактировать скрипты автозапуска.
$ nano /tmp/zabbix-2.0.4/misc/init.d/debian/zabbix-agent
После комментариев строки #Copyright (C) 2000-2012 Zabbix SIA и до NAME=zabbix_agent. Добавляем:

### BEGIN INIT INFO
# Provides:             zabbix_agent
# Required-Start:       $local_fs $remote_fs $network $syslog
# Required-Stop:        $local_fs $remote_fs $network $syslog
# Should-Start:         $all
# Should-Stop:          $all
# Default-Start:        2 3 4 5
# Default-Stop:         0 1 6
# Short-Description:    start/stop zabbix agent daemon
# Description:          start/stop zabbix agent daemon
### END INIT INFO

$nano /tmp/zabbix-2.0.4/misc/init.d/debian/zabbix-server
Туда же добавляем:
### BEGIN INIT INFO
# Provides:             zabbix_server
# Required-Start:       $local_fs $remote_fs $network $syslog
# Required-Stop:        $local_fs $remote_fs $network $syslog
# Should-Start:         $all
# Should-Stop:          $all
# Default-Start:        2 3 4 5
# Default-Stop:         0 1 6
# Short-Description:    start/stop Zabbix server daemon
# Description:          start/stop Zabbix server daemon
### END INIT INFO


$ cp /tmp/zabbix-2.0.4/misc/init.d/debian/zabbix-* /etc/init.d/
$ update-rc.d zabbix-server defaults
$ update-rc.d zabbix-agent defaults
1.8 Запустим демоны.
Запустим zabbix_server
$ /etc/init.d/zabbix-server start
Так как на нашем сервере есть и zabbix-agent, запускаем и его:
$ /etc/init.d/zabbix-agent start
2. Установка веб интферфейса.
Общепринятые места размещения папок HTL Документов для веб-сервера Apache включают:
  • /usr/local/apache2/htdocs (папка по умолчанию при установке Apache из исходных кодов)
  • /srv/www/htdocs (OpenSUSE, SLES)
  • /var/www/html (Fedora, RHEL, CentOS)
  • /var/www (Debian, Ubuntu)
Предлагаю использовать подпапку вместо корневой папки HTML. Что бы создать подпапку и скопировать файлы веб-интерфейса Zabbix, выполним следующие команды, заменив <htdocs> на корректный путь для вашей системы:
$ mkdir <htdocs>/zabbix
$ cd frontends/php
$ cp -a . <htdocs>/zabbix

Шаг 1.
Откройте http://192.168.0.1/zabbix в браузере.
Вы должны увидеть первую страницу помощника установки веб-интерфейса.
Шаг 2.
Убедитесь, что все требования к программному обеспечению выполнены.
Если какие-то параметры не подходят:
$ nano /etc/php5/apache2/php.ini
Редактируем соответствующие поля и перезагружаем веб-сервер Apache.
$ /etc/init.d/apache2 restart

ТребованиеМинимальное значениеОписание
Версия PHP 5.1.6
PHP опция memory_limit 128МБ В php.ini:
memory_limit = 128M
PHP опция post_max_size 16МБ В php.ini:
post_max_size = 16M
PHP опция upload_max_filesize 2МБ В php.ini:
upload_max_filesize = 2M
PHP опция max_execution_time 300 секунд В php.ini:
max_execution_time = 300
PHP опция max_input_time 300 секунд В php.ini:
max_input_time = 300
PHP опция session.auto_start должно быть отключено В php.ini:
session.auto_start = 0.
требуется начиная с версии Zabbix 2.0.4.
Поддержка баз данных Одна из: IBM DB2, MySQL, Oracle, PostgreSQL, SQLite Один из следующих модулей должен быть установлен:
ibm_db2, mysql, oci8, pgsql, sqlite3
bcmath php-bcmath
mbstring php-mbstring
sockets php-net-socket. Требуется для поддержки пользовательских скриптов.
gd 2.0 или выше php-gd. Расширение PHP GD должно поддерживать PNG изображения (--with-png-dir), JPEG (--with-jpeg-dir) изображения и FreeType 2 (--with-freetype-dir).
libxml 2.6.15 php-xml или php5-dom
xmlwriter php-xmlwriter
xmlreader php-xmlreader
ctype php-ctype
session php-session
gettext php-gettext

Шаг 3.
Укажите детали для подключения к базе данных. База данных Zabbix должна быть уже создана.
Шаг 4.
Введите подробные сведения о сервере Zabbix.
Шаг 5.
Просмотрите результат настроек.
Шаг 6.
Скачайте файл конфигурации и поместите его в папку conf/.
Шаг 7.
Завершение установки.
Шаг 8.
Веб-интерфейс Zabbix готов! По умолчанию имя пользователя Admin, пароль zabbix.

2 комментария:

  1. отличная копипаста, только вот уже несколько месяцев доступны в более удобоваримом виде, тут напирмер http://www.dotdeb.org/2012/12/31/zabbix-is-now-available-on-dotdeb/

    ОтветитьУдалить
    Ответы
    1. Спасибо за замечание, писал больше для себя. Прекрасно понимаю, что копипаст. За ссылку отдельное спасибо

      Удалить