UMGUM.COM (лучше) 

Инсталляция сервера Zabbix ( Инсталляция сервера системы мониторинга Zabbix. )

27 марта 2010  (обновлено 15 августа 2016)

Эта публикация отнесена в архив. Она неактуальна.
Ресурс по следующей ссылке является преемником: Инсталляция сервера системы мониторинга Zabbix.

OS: Linux Debian Lenny.
Application: Zabbix Server 1.8.3.

Инсталлируем стабильную версию сервера проекта мониторинга Zabbix.

Практически везде далее устанавливаем версии библиотек "для разработчиков", так как Zabbix сервер ориентирован на программное обеспечение более свежее, чем имеющееся на нашей платформе.

Мы будем работать с PostgreSQL; предполагается комплексный мониторинг не менее 700-800 хостов по 10-15 параметров на каждом из них, возможно, что PostgreSQL справится с большими объёмами лучше, чем MySQL. Устанавливаем PostgreSQL сервер перед Zabbix для того, чтобы инсталлятор Zabbix мог конфигурировать подключение к базе данных в процессе установки:


# aptitude install postgresql libpq-dev

Инсталлятор потянет кроме сервера и клиента ещё как минимум openssl.

Если сильно хочется, то устанавливаем MySQL сервер вместо PostgreSQL. Инсталлируем сервер перед Zabbix для того, чтобы инсталлятор Zabbix мог конфигурировать подключение к базе данных в процессе установки:

# aptitude install mysql-server mysql-client libmysqlclient-dev

Инсталлятор потянет кроме сервера и клиента ещё как минимум openssl, psmisc и кучку библиотек perl.

Настройка работы Zabbix с MySQL не особо сильно отличается от настройки работы с PostgreSQL. Можно следовать рекомендациям работы с PostgreSQL и подсказкам здравого смысла, и все получится. На самом деле порог вхождения в MySQL несколько ниже, чем у PostgreSQL, так что проблем не предвидится.

Устанавливаем Apache2, PHP5 и сопутствующие библиотеки для поддержания работы панели управления Zabbix:

# aptitude install apache2 php5 php5-gd php5-pgsql

Инсталлятор потянет кроме указанных продуктов ещё как минимум defoma, fontconfig-config, psmisc, ttf-dejavu.

Устанавливаем SNMP службу для того, чтобы Zabbix мог работать с оборудованием по соответствующему протоколу:

# aptitude install snmp snmpd libsnmp-dev

Устанавливаем библиотеки Jabber IM платформы, так как мы будем использовать уведомления с помощью XMPP:

# aptitude install libiksemel3 libiksemel-dev

Устанавливаем библиотеки OpenIPMI, программного обеспечения, позволяющего обращаться к удалённому сетевому интерфейсу с целью контроля и управления оборудованием удалённого сервера на аппаратном уровне, без загрузки операционной системы:

# aptitude install libopenipmi-dev

Устанавливаем дополнительное программное обеспечение и библиотеки, которые требуются для корректной компиляции Zabbix сервера:

# aptitude install fping pkg-config libcurl4-dev

Устанавливаем утилиту, что соберет нам после сборки из исходных кодов пакет, готовый для установки в систему:

# aptitude install checkinstall

Инсталлятор потянет кроме указанных продуктов ещё как минимум build-essential, bzip, dpkg-dev, g++, make.

Устанавливаем Zabbix сервер:

Из репозитория Debian (современной версии мы таким образом не получим):

# aptitude install zabbix-server-pgsql

Инсталлятор потянет кроме сервера еще как минимум ca-certificates, dbconfig, fping, snmpd, postgresql-client.

Или собираем из исходных кодов с сайта разработчика.

Прямую установку с исходных кодов в систему применять не есть хорошо. На самом деле нужно этот процесс перехватывать каким либо менеджером изготовления пакетов для того, чтобы иметь в дальнейшем возможность управлять дистрибутивом в едином стиле системы. Я использую для создания пакетов утилиту checkinstall, но статья не о ней, так что подробности работы с утилитой изучите сами, а мануал осветит функционал достаточный для нашей точечной цели.

Скачиваем дистрибутив по ссылке полученной с сайта разработчиков:

# cd /usr/src
# wget http://sunet.dl.sourceforge.net/sourceforge/zabbix/zabbix-1.8.3.tar.gz

Распаковываем архив. Переходим в корень директории с исходными кодами.

# tar -xvf zabbix-1.8.3.tar.gz
# cd ./zabbix-1.8.3

Смотрим, не придумали ли разработчики чего нового, нет ли несовместимых с прежней конфигурацией ключей:

# ./configure --no-create --help

Проверяем, удовлетворяет ли наша система зависимостям устанавливаемого программного обеспечения:

# ./configure --no-create --enable-server --without-mysql --with-pgsql=/usr/bin/pg_config --with-jabber --with-net-snmp --with-libcurl --with-openipmi

Поклонники и последователи MySQL могут конфигурировать сервер на работу со своей любимой СУБД:

# ./configure --no-create --enable-server --without-pgsql --with-mysql=/usr/bin/mysql_config --with-jabber --with-net-snmp --with-libcurl --with-openipmi

В результате удачной конфигурации мы должны получить отчёт как минимум содержащий что-то вроде следующего:

Enable server:       yes
With database:       PostgreSQL
WEB Monitoring via:  cURL
Native Jabber:       yes
SNMP:                net-snmp
IPMI:                openipmi

Какие-то позиции, вроде поддержки LDAP и IPv6 будут неактивны, но мы и не добивались их поддержки.

Исполняем конфигурирование заново, убрав ключ --no-create. До этого мы проверяли удовлетворение зависимостей, а теперь произведем реальное конфигурирование пакета.

Компилируем конфигурированный продукт:

# checkinstall -D --install=no --pkggroup=Zabbix --pkgname=zabbix-server-dep-pgsql --pkgversion=1.8.3 --pkgrelease=0.1 --pkgsource=zabbix.com --maintainer=mail@example.net make install

На выходе утилиты получаем готовый пакет, уложенный в директории с исходными кодами, если не было иных указаний на путь сохранения. Устанавливаем полученный пакет:

# dpkg -i ./zabbix-server-dep-pgsql_1.8.3-0.1_amd64.deb

Добавляем в систему пользователя, от имени которого будет работать сервер Zabbix:

# groupadd zabbix
# useradd --home-dir /var/zabbix --shell /bin/false --gid zabbix zabbix

Создаем директорию конфигураций сервера:

# mkdir -p /etc/zabbix
# chown -R zabbix:zabbix /etc/zabbix

Создаем директорию для PID файла процесса:

# mkdir /var/run/zabbix
# chown -R zabbix:zabbix /var/run/zabbix

Копируем конфигурационный файл сервера Zabbix из коллекции в архиве исходных кодов:

# cp ./misc/conf/zabbix_server.conf /etc/zabbix/

Копируем скрипт запуска сервера Zabbix из коллекции в архиве исходных кодов и корректируем его в соответствии с нашими реалиями:

# cp ./misc/init.d/debian/zabbix-server /etc/init.d/

Или создаем свой исполняемый скрипт примерно следующего содержания:

#! /bin/sh

### BEGIN INIT INFO
# Provides:          zabbix-server
# Required-Start:    $local_fs $network
# Required-Stop:     $local_fs
# Default-Start:     S
# Default-Stop:      0 6
# Short-Description: Start zabbix-server daemon
### END INIT INFO

set -e

DAEMON="/usr/local/sbin/zabbix_server"
NAME="zabbix_server"
DESC="Zabbix server"
PID="/var/run/zabbix/$NAME.pid"

# Проверяем наличие исполняемого файла запускаемого сервиса
test -f $DAEMON || exit 0

# На всякий случай добавляем в переменную перечня путей поиска ресурсов наши целевые
export PATH="${PATH:+$PATH:}/usr/local/sbin:/usr/sbin:/sbin"

case "$1" in
  start)
    rm -f "$PID"
    echo "Starting $DESC: $NAME"
    start-stop-daemon --oknodo --start --pidfile "$PID" --exec "$DAEMON" >/dev/null 2>&1
  ;;
  stop)
    echo "Stopping $DESC: $NAME"
    start-stop-daemon --oknodo --stop --pidfile "$PID" --exec "$DAEMON"
  ;;
  restart|force-reload)
    $0 stop
    sleep 2
    $0 start
  ;;
  *)
    echo "Usage: $0 {start|stop|restart|force-reload}" >&2
    exit 1
  ;;
esac

exit 0

Прописываем наш скрипт для нужных уровней исполнения в системе:

# update-rc.d zabbix-server start 10 2 3 4 5 . stop 10 0 1 6 .

Если мы устанавливали Zabbix сервер из официального репозитория Debian, то после инсталляции утилита dbconfig (устанавливается в связке с postgresql-client и mysql-client) нам предложит конфигурировать подключение к СУБД. Можно согласится, а можно и отказаться, хотя бы для лучшего понимания принципов работы связки серверов можно сделать это позже вручную.

Скрипт инсталляции может заругаться на некорректно заведённого пользователя, но, проверив файлы /etc/passwd и /etc/group, можно удостоверится, что все, в общем-то, нормально.

Если мы хотим получить устаревшую панель управления Zabbix, то устанавливаем из официального репозитория Debian пакет "zabbix-frontend-php:"

# aptitude install zabbix-frontend-php

Инсталлятор потянет кроме панели управления ещё как минимум apache2, defoma, fontconfig-config, php5, php5-gd, psmisc, ttf-dejavu и, с неясными целями, mysql-client и mysql-server. Подозреваю, что mysql тянется в связи с некорректно указанными зависимостями и вполне можно было бы от него отказаться, но с учётом того, что этот сервер так или иначе используется большим количеством служб, оставим его.

Если мы хотим иметь актуальный сервер Zabbix с соответствующей панелью управления, то до этого момента мы уже скомпилировали и установили из скачанных с сайта разработчика исходных кодов программное обеспечение. В архиве с исходными кодами лежит директория "frontends", там находится собственно сама панель управления написанная на PHP. Её мы и используем в дальнейшем взамен устаревшей панели из репозитория Debian.

Настроим СУБД с которой будет работать сервер Zabbix:

Проверим, запущен ли сервер PostgreSQL:

# /etc/init.d/postgresql-8.3 status

Если сервер не запущен, то запустим его:

# /etc/init.d/postgresql-8.3 start

Для начала "укрощаем" СУБД и приводим к единой системе аутентификации.

Задаём пользователю "postgres" операционной системы желаемый пароль:

# passwd postgres

Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully

Меняем для пользователя СУБД "postgres" метод аутентификации на "trust" в файле конфигурации "/etc/postgres/8.3/main/pg_hba.conf". После этого пользователь "postgres" сможет войти без пароля. Перезапускаем СУБД.

Входим в консоль PostgreSQL от имени пользователя "postgres":

# psql -U postgres

Меняем/устанавливаем пользователю "postgres" произвольный пароль с помощью интерактивной утилиты консоли:

# postgres=# alter user postgres with password 'пароль';
# postgres=# \q

Устанавливаем для пользователя "postgres" (и для всех остальных вариантов входа) в файле конфигурации "/etc/postgres/8.3/main/pg_hba.conf" метод аутентификации "md5". Перезапускаем СУБД.

Создадим пользователя от имени которого будет обращаться сервер Zabbix к базе данных. Пользователь сможет создавать новые схемы (-d), не будет являться суперпользователем (-S), не будет иметь возможности менять роли и права пользователей (-R), не будет иметь возможности изменять пароли пользователей (-P):

# createuser --username postgres --pwprompt -d -S -R -P zabbix

Enter password for new role:
Enter it again:
Password:

Понятно, что выше вначале дважды вводим пароль для новой учётной записи СУБД, а в третий раз указываем пароль пользователя "postgres", от имени которого мы выполняем требуемые операции.

Если позже спохватимся, что пароль пользователя нас не устраивает, то в консоли psql можно будет его сменить с помощью интерактивной утилиты:

# psql -U postgres
# postgres=# \password zabbix
# postgres=# \q

Создадим схему (базу данных) от имени пользователя которой с ней, в дальнейшем, будем работать, с принудительным указанием желаемой кодировки:

# createdb --username zabbix -E UTF8 zabbix

С помощью следующей команды мы сможем убедится в том, что желаемая схема с требуемыми параметрами создана для определённого пользователя:

# psql -U postgres -l

Вывод, нечто вроде следующего, покажет, что схема удачно создана:

        List of databases
   Name    |  Owner   | Encoding
-----------+----------+----------
postgres  | postgres | UTF8
....
zabbix    | zabbix   | UTF8

Заполним созданную базу данных полагающейся информацией. В дистрибутиве zabbix-frontend-php в директории "create" лежат файлы данных для конфигурации с СУБД MySQL. Нам нужно использовать файлы расположенные в директории "/usr/share/zabbix-server".

Применяем команды SQL к схеме zabbix от имени пользователя zabbix:

# cat /usr/share/zabbix-server/postgresql.sql | psql --username zabbix zabbix
# cat /usr/share/zabbix-server/data.sql | psql --username zabbix zabbix
# cat /usr/share/zabbix-server/images_pgsql.sql | psql --username zabbix zabbix

В случае установки с исходных кодов файлы данных могут иметь иное расположение:

# cd /usr/src/zabbix-1.8.3
# cat ./create/schema/postgresql.sql | psql --username zabbix zabbix
# cat ./create/data/data.sql | psql --username zabbix zabbix
# cat ./create/data/images_pgsql.sql | psql --username zabbix zabbix

В процессе применения файлов данных изображений выводятся предупреждения консоли СУБД, вызывающие опасения за здоровье базы, остается пока верить разработчикам.

Применяем к серверу Zabbix в конфигурационном файле zabbix_server.conf настройки подключения к СУБД:

DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=пароль

Создаем директорию для журнальных файлов, делаем её собственностью пользователя zabbix:

# mkdir -p /var/log/zabbix
# touch /var/log/zabbix/zabbix_server.log
# chown -R zabbix /var/log/zabbix
# chgrp -R zabbix /var/log/zabbix

Указываем в конфигурационном файле путь к директории лог файлов /etc/zabbix/zabbix_server.conf:

LogFile=/var/log/zabbix/zabbix_server.log
LogFileSize=10

Указываем в конфигурационном файле на месторасположение утилиты fping:

FpingLocation=/usr/sbin/fping

Необходимо задать исполняемому файлу fping "suid" бит для того, чтобы им могли бы воспользоваться непривилегированные пользователи:

# chmod u+s /usr/sbin/fping

В том случае, если мы имеем на сервере конфигурацию с несколькими сетевыми интерфейсами () и есть необходимость мониторить сеть с определённого IP, проделаем это путём создания символического имени для утилиты "fping" в конфигурационном файле "/etc/bash.bashrc":

....
alias fping='fping -Sip.monitor.interface'
....

Запускаем или перезапускаем сервер Zabbix:

# /etc/init.d/zabbix-server restart

Проконтролировать факт корректного запуска сервера Zabbix в лог файле zabbix_server.log

Конфигурируем "сайт" Zabbix.

Копируем содержимое директории "./frontends/php/" из архива исходных кодов сервера Zabbix в то место, где будет располагаться наш "сайт" - панель управления Zabbix.

Корректируем конфигурационный файл Apache2 (например "/etc/apache2/sites-available/default"). Обеспечиваем поддержку исполнения скриптов PHP. Добавляем новый виртуальный хост.

Обеспечиваем поддержку в сети и на сервере соответствующего доменного имени.

Теперь обратимся через браузер к скрипту конфигурирования панели управления Zabbix. В случае, если панель управления ещё не настроена, скрипт конфигурирования запускается автоматически.

Запускается web конфигуратор. Требует установить в php.ini значение параметра timezone (берем из /etc/timezone) и максимальное время исполнения скриптов не менее 300 (трехсот) секунд. Удовлетворяем его требования, на меньшее он не согласен:

date.timezone = Country/Town
max_execution_time = 300

Перезапускаем web-сервер. "Обновляем" станицу конфигуратора.

Проверяем подключение к СУБД.

Конфигуратор предложит нам ввести имя сервера и порт, на котором мы будем слушать клиентов. Не будем умничать и вносить путаницу - оставим номер порта предложенного разработчиками: "10051".

Сохраняем генерированный конфигурационный файл в директории "conf" сервера zabbix-frontend-php

Все. Первоначальная настройка завершена. Имя административного пользователя для входа в систему по умолчанию "Admin", пароль пуст или "zabbix".


Заметки и комментарии к публикации:


Оставьте свой комментарий ( выразите мнение относительно публикации, поделитесь дополнительными сведениями или укажите на ошибку )