|
www.lissyara.su
—> статьи
—> FreeBSD
—> программы
—> Установка Zabbix-1.6
Установка и первоначальная настройка Zabbix-1.6
Автор: LHC.
Установка и первоначальная настройка системы мониторинга Zabbix (версия 1.6)
Небольшое предисловие. У организации возникла необходимость внедрения системы мониторинга. Причин было множество: оперативное реагирование в случае выхода из строя сервера или сервиса, сбор статистики для выявления узких мест в аппаратной части и скорости канала связи и т.п. Требования поставлены следующие: лицензия GPL (к чему лишние проблемы во время проверок правоохранительными органами), высокая доступность и масштабируемость, простота установки и развертывания, поддержка SNMP, по возможности русскоязычный интерфейс. В процессе подбора я наткнулся на очень любопытную страничку со сводной таблицей возможностей различных систем мониторинга: http://en.wikipedia.org/wiki/Comparison_of_network_monitoring_systems
Выбор пал на тестирование двух продуктов: Cacti (не отдельно, конечно, а в связке с кое-каким самописом, реализующим WMI-функционал) и Zabbix. К сожалению при обкатке Cacti столкнулся с некоторыми проблемами, поэтому решил остановится на Zabbix-е.
Устанавливаем MySQL по инструкции уважаемого lissyara. У меня версия 5.0.
Устанавливаем Apache 2.x по этой статье
Устанавливаем из портов Zabbix:
cd /usr/ports/net-mgmt/zabbix/
make install clean
| Выскочит окно, в котором выбираем MySQL для бэкендов и fping для отправки ICMP-пакетов.
Внимательнее к зависимостям. Тянет за собой iksemel, cyrus-sasl, fping и некоторые X-овые библиотеки.
Конфигурируем MySQL (создаем пользователя, предоставляем права доступа к базе):
mysql -u root -p
CREATE DATABASE zabbix;
GRANT ALL ON zabbix.* TO zab IDENTIFIED BY 'YourPassword';
FLUSH PRIVILEGES;
quit;
| Далее вносим необходимые данные в базу:
cat /usr/local/share/zabbix/create/schema/mysql.sql | mysql -u zab -p zabbix
cat /usr/local/share/zabbix/create/data/data.sql | mysql -u zab -p zabbix
cat /usr/local/share/zabbix/create/data/images_mysql.sql | mysql -u zab -p zabbix
| Приводим файл /usr/local/etc/zabbix/zabbix_server.conf к следующему виду:
# Это конфигурационный файл серверного даемона Zabbix
# Для получения более детальной информации о ZABBIX,
# посетите http://www.zabbix.com
############ ОСНОВНЫЕ ПАРАМЕТРЫ#################
# Если вы планируете использовать
# несколько Zabbix-серверов
# для распределенного мониторинга,
# то этот параметр задает номер узла
#NodeID=0
# Количество запускаемых форков поллера
# По умолчанию 5 .Должно быть между 0 и 255. Оставляем умолчания.
#StartPollers=5
# Количество форков поллера для недоступных
# узлов. По умолчанию 1. Должно быть между 0 и 255.
#StartPollersUnreachable=1
# Количество запускаемых форков ловушек (а-ля SNMP traps)
# По умолчанию 5. Должно быть между 0 и 255. Оставляем умолчания.
#StartTrappers=5
# Количество запускаемых форков ICMP-пингеров
# По умолчанию 5. Должно быть между 0 и 255. Оставляем умолчания.
#StartPingers=1
# Number of pre-forked instances of discoverers
# Default value is 1
# This parameter must be between 0 and 255
#StartDiscoverers=1
# Количество запускаемых форков HTTP-поллера (мониторинг веб-сервисов)
# По умолчанию 1. Должно быть между 0 и 255.
# Оставляем умолчания.
#StartHTTPPollers=1
# Порт, прослушиваемый Zabbix-сервером (траппером)
# Порт задаем в интервале между 1024 и 32767
ListenPort=10051
# Сетевой интерфейс, прослушиваемый zabbix-сервером
# Будет прослушивать все интрефейсы, если параметр не задан
#ListenIP=127.0.0.1
# Как часто (в часах) будет производиться
# "сборка мусора" (удаление неактуальных данных,
# актуальность в днях можно задать в PHP-фронтенде).
# По умолчанию - 1 час
# Значения должны быть между 1 и 24
HousekeepingFrequency=2
# Как часто ZABBIX будет повторно отсылать
# недоставленные сообщения(в секундах)
# По умолчанию - 30 секунд
SenderFrequency=60
# Раскомментируйте, если нет необходимости (!!??!!)
# в процедуре "сборки мусора"
#DisableHousekeeping=1
# Уровень протоколирования в логах
# 0 - протоколирование не ведеться
# 1 - критическая информация
# 2 - ошибки
# 3 - предупреждения (умолчание)
# 4 - для отладки
DebugLevel=3
# Длительность ожидания ответа от Zabbix-агента
# в секундах. Между 1 и 30.
Timeout=5
# Количество времени в секундах, затрачиваемое на обработку "ловушкой"
#(zabbix-сервером) свежепоступивших данных.
# Между 1 и 30.
#TrapperTimeout=5
# После какого количества секунд недоступности агента (или SNMP-хоста) статус
# узла в фронтэнде изменяется на "недоступен"
UnreachablePeriod=90
#Как часто (в секундах) проверять доступность узла во время статуса "недоступен"
#UnavailableDelay=15
# How ofter check host for availability during the unavailability period
#UnavailableDelay=60
# Имя PID-файла
PidFile=/var/tmp/zabbix_server.pid
# Имя файла журнала
# Если не задано, пишет в syslog
# !Не забываем проверить существование каталога и
# права доступа на файл!
LogFile=/var/log/zabbix/zabbix_server.log
# Максимальный размер файла журнала в мегабайтах.
# Если установлен в 0, то автоматическая ротация выключена
LogFileSize=1
# Location for custom alert scripts
AlertScriptsPath=/home/zabbix/bin/
# Расположение дополнительных скриптов
#ExternalScripts=/etc/zabbix/externalscripts
# Расположение бинарника fping
# Нужно проверить, что владельцем является root и
# на файл установлен SUID-бит
FpingLocation=/usr/local/sbin/fping
# Частота отправи ICMP-пингов. По умолчанию 60 секунд
#PingerFrequency=60
# Хост с СУБД MySQL (или другой)
# По умолчанию localhost
DBHost=localhost
# Имя БД
DBName=zabbix
# Пользователь БД с необходимыми привилегиями
DBUser=zab
# Пароль для доступа к БД
# Закомментировать строку, если пароль пустой
DBPassword=YourPassword
# Соединяться с MySQL, используя UNIX-сокеты
# (не используя TCP/IP транспорт)
DBSocket=/tmp/mysql.sock
| Теперь необходимо убедиться, что файл журнала, указанный в конфигурации выше
(/var/log/zabbix/zabbix_server.log) существует и на него выставлены необходимые права доступа.
Конфигуририем Apache. Лично я создал новый виртуальный хост, мне так удобнее.
Включаемые конфигурации у меня лежат в /usr/local/etc/apache2/Includes/. Файл привел к следующему виду:
<Directory "/usr/local/share/zabbix/php">
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
<VirtualHost *:80>
DocumentRoot "/usr/local/share/zabbix/php"
ServerName monitoring.domain.local
ErrorLog /var/log/zabbix-error_log
CustomLog /var/log/zabbix-access_log common
DirectoryIndex index.php
</VirtualHost>
| После этого не забываем добавить А-запись узла в соответствующую зону на Вашем DNS-сервере. Вот моя:
less /etc/namedb/slave/domain.local | grep monitoring
monitoring IN A 192.168.0.1
| Правим rc.conf:
echo 'zabbix_server_enable=YES' >> /etc/rc.conf
| Запускаем демона:
/usr/local/etc/rc.d/zabbix_server start
| Проверяем функционирование:
Получаем что-то в этом роде:
zabbix zabbix_ser 56771 4 tcp6 *:10051 *:*
zabbix zabbix_ser 56771 5 tcp4 *:10051 *:*
zabbix zabbix_ser 56771 6 stream -> /tmp/mysql.sock
zabbix zabbix_ser 56770 4 tcp6 *:10051 *:*
zabbix zabbix_ser 56770 5 tcp4 *:10051 *:*
zabbix zabbix_ser 56770 6 stream -> /tmp/mysql.sock
zabbix zabbix_ser 56769 4 tcp6 *:10051 *:*
zabbix zabbix_ser 56769 5 tcp4 *:10051 *:*
zabbix zabbix_ser 56769 6 stream -> /tmp/mysql.sock
zabbix zabbix_ser 56768 4 tcp6 *:10051 *:*
|
Заходим на веб-интерфейс по ссылке http://monitoring.domain.local
и переходим к конфигурированию PHP-фронтенда:
1. Пропускаем приветствие:
2. Соглашаемся с лицензией:
3. Проверка параметров PHP:
Установщик попросил откорректировать значения в php.ini (в моем случае задать временную зону и время выполнения скриптов).
Ищем и правим в /usr/local/etc/php.ini следующие строки:
date.timezone = "Europe/Moscow"
max_execution_time = 300
| Т.к. PHP в даном случае работает модулем к Apache, то для принятия изменений выполняем:
4. Вводим параметры MySQL сервера (хост, порт и т.п.)
СУБД у меня находится на этой же машине, ввел только пользователя и пароль (см. выше)
5. Вводим адрес сервера, на котором выполняется демон zabbix_server (я ничего не менял):
6. Получаем сводную таблицу с настройками:
7. Скачиваем сформированный кофигурационный скрипт и помещаем его в указанный установщиком каталог (в данном случае /usr/local/share/zabbix/php/conf/) и жмем далее. Конфигурирование фронтенда закончено.
Теперь можно попасть в панель управления по основной ссылке http://monitoring.domain.local, введя логин Admin и пароль zabbix (для версии 1.4.4 пароль был пустой):
Можно приступать к добавлению узлов и настройке параметров мониторинга.
Установка агента Zabbix на машины с ОС FreeBSD
Естественно ставим агента из портов. Агент 1.4.4 успешно работает с сервером 1.6, но не наоборот.
Если нужна версия 1.4, то скомпилированный пакет можно скачать с официального сайта Zabbix:
cd /usr/ports/net-mgmt/zabbix-agent
make install clean
| После успешной сборки можем править конфигурационный файл /usr/local/etc/zabbix/zabbix_agentd.conf:
# Это конфигурационный файл zabbix_agentd
# Для получения более детальной информации о ZABBIX, посетите http://www.zabbix.com
##################ОСНОВНЫЕ ПАРАМЕТРЫ ####################################
# Разделяемый запятыми список IP-адресов (или DNS-имен) Zabbix-серверов.
# Пробелы не допускаются! Первый хост в списке используется для "активных" запросов
# (т.е. со стороны самого агента).
# Помните, что прямое и обратное преобразование DNS-имен должны функционировать.
# Агент в данном случае установлен на машине с Zabbix-сервером.
Server=127.0.0.1
# Порт сервера (для "активных" запросов)
ServerPort=10051
# Уникальное имя узла. Обязательно для "активных" запросовю
Hostname=localhost
# Прослушиваемый порт. По умолчанию - 10050
ListenPort=10050
# IP-адрес, прослушиваемый агентом
# Если запись закомментирована или отсутствует - прослушивать на всех адресах
#ListenIP=127.0.0.1
# Количество форков zabbix_agentd.
# По умолчанию 5
# Параметр должен находится в интервале от 1 до 16
StartAgents=5
# Частота обновления агентом списка "активных" запросов. 2 минуты по умолчанию.
#RefreshActiveChecks=120
# Отключить "активные" запросы. Агент будет работать только в режиме
# прослушивания.
DisableActive=1
# Включить прием комманд для агента ZABBIX. По умолчанию выключено.
#EnableRemoteCommands=1
# Уровень протоколирования в журнале
# 0 - не создается
# 1 - только критическая информация
# 2 - только ошибки
# 3 - предупреждения (по умолчанию)
# 4 - for debugging (produces lots of information)
DebugLevel=3
# Создаваемый процессом PID-файл
PidFile=/var/zabbix/zabbix_agentd.pid
# Имя файла журнала.
# Если не задано, то будет использоваться системный
# !Не забываем проверить права доступа на файл!
LogFile=/var/log/zabbix/zabbix_agentd.log
# Максимальный размер файла в мегабайтах. Установите в 0
# для отключения автоматической ротации.
LogFileSize=2
# Не затрачивать на обработку более чем указанного параметром времени (в секундах)
# Должен быть между 1 и 30
Timeout=3
########## ПОЛЬЗОВАТЕЛЬСКИЕ ПАРАМЕТРЫ ДЛЯ МОНИТОРИНГА ##########
# Формат: UserParameter=<ключ>,<команда оболочки>
# Помните, что команда после выполнения не должна возвращать пустую строку
# иначе она теряет всякий смысл, т.к. "мониторится" ничего не будет :)
#UserParameter=system.test,who|wc -l
# На самом деле, это, можно сказать, самый ценный раздел,
# потому что в связке с dmidecode с легкостью позволяет инвентаризировать
# аппаратную составляющую машины.
### Набор параметров для мониторинга MySQL (версия 3.23.42 и старше)
### Смените -u<username> и добавьте -p<password> при необходимости
#UserParameter=mysql.ping,mysqladmin -uroot ping|grep alive|wc -l
#UserParameter=mysql.uptime,mysqladmin -uroot status|cut -f2 -d":"|cut -f1 -d"T"
#UserParameter=mysql.threads,mysqladmin -uroot status|cut -f3 -d":"|cut -f1 -d"Q"
#UserParameter=mysql.questions,mysqladmin -uroot status|cut -f4 -d":"|cut -f1 -d"S"
#UserParameter=mysql.slowqueries,mysqladmin -uroot status|cut -f5 -d":"|cut -f1 -d"O"
#UserParameter=mysql.qps,mysqladmin -uroot status|cut -f9 -d":"
| Для автоматического запуска агента редактируем /etc/rc.conf:
echo 'zabbix_agentd_enable="YES"' >> /etc/rc.conf
| Теперь можно запускать агента:
/usr/local/etc/rc.d/zabbix_agentd start
| Теперь панели управления можно добавить машину с только что установленным агентом и привязать к ней уже существующий шаблон Template_FreeBSD
Установка агента Zabbix на машины с ОС Windows NT 5.x/6.x (читать: Windows 2000/XP/2003/Vista)
Важное замечание насчет Zabbix версии 1.6 и проблем с агентами той же версии для ОС Windows NT 5.x/6.x (для тех, кто не посещает сайт разработчиков или не хочет, либо не в состоянии читать документацию). Заранее скомпилированный агент версии 1.4.4 для M$ Windows (с официального сайта SIA Zabbix) поддерживается и отлично работает с Zabbix Server 1.6. Из этого следует, что при переходе на новую версию нет необходимости обновлять агентов на всех машинах. Агент 1.6 плохо понимает локализованные версии Windows, т.к. не может обработать русифицированные названия счетчиков производительности. Так что смело пользуемся предыдущей версией там, где не удалось запустить новую, или где руки не дошли.
Итак, установка. Выкладываю эдакий "инсталлер".
Скачиваем отсюда
На самом деле это обычный cmd-шный скрипт, копирующий бинарник и конфигурационный файл в папку, создающий и запускающий службу. Вам остается только подправить в конфигурационном файле строку Server=. Все остальное уже проделано для Вас вашим покорным слугой.
Я создал еще и полноценный установщик с помощью InnoSetup, но потом обнаружил, что ищу вчерашний день. Как всегда Google подсказал, что "все уже украдено до нас".
Идем СЮДА и скачиваем ту версию программы установки агента, которая требуется.
Установка агента Zabbix на машины с ОС Linux с ядром 2.6
Для Debian Etch/Lenny/Squeeze - пользуемся системой apt. Внимательней к версии! Если у вас стабильный Etch, то установится старый агент 1.1, который с версией сервера 1.6 несовместим.
Поэтому, предварительно доводим до ума /etc/apt/sources.list, добавив тестируемый дистрибутив, создаем файл /etc/apt/apt.conf следующего содержания:
APT::Default-Release "stable";
| и для установки выполняем
apt-get update && apt-get -t testing install zabbix-agent
| В качестве альтернативы можно было-бы использовать проект Debian Backports, но сейчас там откомпилированного пакета нет.
Если у Вас Lenny или Squeeze, то поставится нужная версия. Достаточно выполнить
apt-get update
apt-get install zabbix-agent
| Конфигурационный файл идентичен приведенному выше FreeBSD-шному, повторяться не буду.
Ну и запускаем:
/etc/init.d/zabbix-agent start
| Для Gentoo все как всегда элементарно, если до этого вы корректно сконфигурировали Portage:
emerge --sync
emerge --verbose zabbix-agent
| Про конфигурационный файл - см. выше
Если у Вас другой дистрибутив, то читайте документацию к системе пакетов вашего дистрибутива, если она есть или компилируйте и ставьте из исходников.
Небольшое отступление про почтовые уведомления
Многие задаются вопросом, где настроить SMTP-авторизацию для отсылки уведомлений? Никакой авторизации не будет и быть не должно! Почту система отправляет исправно. Запрашивает MX-запись для домена (например yandex.ru), открывает SMTP-сессию до приоритетного сервера (mxциферка.yandex.ru в примере) и отправляет данные. Как конкретно это реализовано, то ли php-скриптингом, то ли возможностями mail (1), не выяснял. Другое дело, что поскольку скорее всего для Вашего Zabbix-сервера, а точнее его внешнего IP-адреса (или того, на который производится NAT-трансляция, если он в интрасети) не прописана корректная PTR-запись в реверс-зоне, в EHLO-приветствии он отдает localhost (это по умолчанию), либо zabbix.domain.ru (это если Вы внесли изменения, подставив в поле имя хоста + зарегистрированный организацией внешний домен), а в качестве отправителя выступает указанный в дефолте zabbix@localhost (или zabbix@domain.ru если поправили), то такое сообщение будет на нормально настроенном MTA принимающей стороны со 100% вероятностью восприниматься как спам. Можно пойти двумя путями:
1. Изменить PTR-запись для предоставляемого провайдером IP-адреса например на zabbix.domain.ru, добавить MX-запись zabbix.domain.ru с наибольшим (например 120) приоритетом (это чтобы отправляющие MTA даже не думали к мониторингу соваться), не забыть добавить A-запись в зоне Вашего домена для zabbix.domain.ru. При такой конфигурации можете смело использовать встроенный функционал по отправке Email-уведомлений. Рубиться письма хотя-бы при начальных спам-проверках не будут.
2. Если у Вас все гораздо хуже, лень заниматься вышеописанными действиями, провайдер закрыл 25 порт из-за того что вам лень вылечить офисные ПК от спам-ботов, вы сами спаммер, то делаем следующее. Ставим ssmtp (хорошая штука, дополняет полноценный MTA, легка в настройке, понимает авторизацию и TLS/SSL, соответственно здравствуй порт 465, который провайдер не блокирует)
cd /usr/ports/mail/ssmtp && make install clean
| Создаем отдельный тип средств передачи MailScript с типом "сценарий" и названием, например, mailscript.sh
Не забываем выставить chmod +x на этот файл. В папке с внешними скриптами (она указывется в конфигурационном файле Zabbix-а) создаем файл mailscript.sh следующего содержания:
#!/bin/sh
smtpemailfrom=zabbix@domain.ru
zabbixmailto=$1
zabbixsubject=$2
zabbixbody=$3
smtpdomain=domain.ru
smtpserver=smtp.domain.ru
smtplogin=zabbix@domain.ru
smtppass=secret
echo "From: \"Zabbix Monitoring\"<$smtpemailfrom>" > /tmp/notify.eml
echo "To: $zabbixmailto" >> /tmp/notify.eml
echo "Subject: $zabbixsubject" >> /tmp/notify.eml
echo "" >> /tmp/notify.eml
echo "This is Zabbix Monitoring. $zabbixbody" >> /tmp/notify.eml
echo "."
/usr/local/sbin/ssmtp -au ${smtplogin} -ap ${smtppass} ${zabbixmailto} < /tmp/notify.eml
| Добавляем для пользователя, который должен получать уведомления по почте новое средство передачи MailScript и в поле "Отправлять" вбиваем корректный
E-Mail. Все. Получаем уведомления и радуемся (или возмущаемся, в зависимости от количества действий, завязанных на триггеры)
Как мониторить активное сетевое оборудование (коммутаторы, маршрутизаторы, модемы и т.п.)?
Вывожу в отдельный раздел, т.к. многие ошибочно полагают, что Zabbix на это не способен.
Достаточно в фронтэнде добавить сетевой узел, изменить порт для поллинга на 161 (умолчальный для SNMP) и привязать к узлу шаблон SNMP по умолчанию, либо заботливо созданный другими для конкретного сетевого оборудования (например Catalyst-ов). В первом случае придется описания MIB-ов менять на что-то читаемое.
размещено: 2009-03-18,
последнее обновление: 2009-10-26,
автор: LHC
|
|
Комментарии пользователей [26 шт.]