Мониторинг с помощью Zabbix: установка Zabbix (FreeBSD)
Как и многие коллеги-администраторы, долгое время я пользовался для мониторинга всего и вся чем-то самописным. В последнее время стало изрядно лениво лазить по конфигурационным файлам, чтоб добавить хост, сервис и т.п., а потом еще и проверять в веб-интерфейсе, все ли видно хорошо. Захотелось некой удобной софтины для мониторинга, с конфигурацией в БД, удобным веб-интерфейсом. В результате был выбран Zabbix и честно говоря, вполне себя оправдывает, разве что требователен к ресурсам.
Приступим:
# cd /usr/ports/net-mgmt/zabbix-server # make install ┌────────────────────────────────────────────────────────────────────┐ │ Options for zabbix-server 1.8.1,2 │ │ ┌────────────────────────────────────────────────────────────────┐ │ │ │ [X] MYSQL Use MySQL backend │ │ │ │ [ ] PGSQL Use PostgreSQL backend │ │ │ │ [ ] SQLITE Use SQLite backend │ │ │ │ [ ] IPV6 Support for IPv6 │ │ │ │ [ ] LDAP Support for checking LDAP servers │ │ │ │ [X] JABBER Use jabber media type │ │ │ │ [X] FPING Use fping for pinging hosts │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├─└────────────────────────────────────────────────────────────────┘─┤ │ [ OK ] Cancel │ └────────────────────────────────────────────────────────────────────┘
Пока он ставится, немного расскажу о идеологии софтины. Состоит она из нескольких частей: сервера, агента, фронтенда. Сервер умеет опрашивать агентов или сами объекты мониторинга (в случае с последними поддерживаются протоколы SNMP и IPMI). Агент ставится на объект мониторинга (версии агента есть для широкого перечня операционных систем, включая винды) и шлет данные на сервер, также умеет выполнять на объекте заданные команды, фронтенд стоит на веб-сервере и показывает весь процесс. К базе данных обращаются сервер и фронтенд, агентам она не нужна. Создаем ее (исходим из того, что MySQL у нас на том же хосте, где zabbix-сервер):
# mysql CREATE USER 'zabbix'@'localhost' IDENTIFIED BY 'zabbixpassword'; GRANT USAGE ON * . * TO 'zabbix'@'localhost' IDENTIFIED BY 'zabbixpassword' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ; CREATE DATABASE IF NOT EXISTS `zabbix` ; GRANT ALL PRIVILEGES ON `zabbix` . * TO 'zabbix'@'localhost'; quit; # cd /usr/local/share/zabbix/server/create # cat schema/mysql.sql data/data.sql data/images_mysql.sql | mysql -uzabbix -pzabbixpassword zabbix # echo zabbix_server_enable="YES" >> /etc/rc.conf # cp /usr/local/etc/zabbix/zabbix_server.conf.sample /usr/local/etc/zabbix/zabbix_server.conf # ee /usr/local/etc/zabbix/zabbix_server.conf
Настройки по умолчанию достаточно разумны, потому файл /usr/local/etc/zabbix/zabbix_server.conf небольшой, для справки потом можно будет заглянуть в дефолтный файл:
# Исходящий IP, с него будут осуществляться соединения с агентами и объектами мониторинга SourceIP=192.168.1.10 # Лог-файл LogFile=/var/log/zabbix_server.log # Размер лог-файла, в мегабайтах, 0 отключает ротацию лога LogFileSize=10 # Уровень дебага, 0 - отключить, 1 - критические ошибки, 2 - ошибки, 3 - предупреждения, 4 - дебаг DebugLevel=3 # Хост БД DBHost=localhost # Название БД DBName=zabbix # Пользователь БД DBUser=zabbix # Пароль БД DBPassword=zabbixpassword # Путь к Mysql-сокету DBSocket=/tmp/mysql.sock # Порт SQL-сервера, если используем сокет - не надо # DBPort=3306
Если заббикс стоит, как в моем случае, в джейле, то на хост-машине надо в /etc/sysctl.conf добавить:
security.jail.sysvipc_allowed=1 kern.ipc.shmall=2097152 kern.ipc.shmmax=2147483648
На этом все, сервер можно запускать:
# touch /var/log/zabbix_server.log # chown zabbix:zabbix /var/log/zabbix_server.log # /usr/local/etc/rc.d/zabbix_server start
Теперь займемся фронтендом.
# cd /usr/ports/math/php5-bcmath # make install # cd /usr/ports/net-mgmt/zabbix-server/work/zabbix-1.8.1/frontends/php # cp -R * /usr/local/www/vhosts/zabbix.jared.kiev.ua # cd /usr/local/www/vhosts/zabbix.jared.kiev.ua/conf/ # cp zabbix.conf.php.example zabbix.conf.php # ee zabbix.conf.php
Тут вписываем параметры доступа к БД и прочее:
<?php global $DB; $DB["TYPE"] = "MYSQL"; $DB["SERVER"] = "localhost"; $DB["PORT"] = "0"; $DB["DATABASE"] = "zabbix"; $DB["USER"] = "zabbix"; $DB["PASSWORD"] = "zabbixpassword"; $ZBX_SERVER = "localhost"; $ZBX_SERVER_PORT = "10051"; $ZBX_SERVER_NAME = ""; $IMAGE_FORMAT_DEFAULT = IMAGE_FORMAT_PNG; ?>
Все, теперь можно смело заходить в фронтенд с логином Admin и паролем zabbix и заниматься дальнейшей настройкой системы.