Система мониторинга уровня предприятия. Создание своих показателей Zabbix.

Первый пример создания собственных показателей в Zabbix.

Для начала можете ознакомиться с соответствующей страницей руководства

1. Мониторинг Linux Software RAID (MD устройств)

1.1 Первым делом опишу общий принцип создания своих элементов данных и триггеров (items, triggers) на практическом примере. На клиенте (если не указана ОС клиента, то подразумевается Linux) в конце файл zabbix-agent.conf вы найдете примерно такие строки:
####### USER-DEFINED MONITORED PARAMETERS#######
# Format: UserParameter=,
# Note that shell command must not return empty string or EOL only
UserParameter=mdstat,cat /proc/mdstat | grep -c _
#UserParameter=system.test,who|wc -l
### Set of parameter for monitoring MySQL server (v3.23.42 and later)
### Change -u and add -p if required
#UserParameter=mysql.ping,mysqladmin -uroot ping|grep alive|wc -l
#UserParameter=mysql.uptime,mysqladmin -uroot status|cut -f2 -d":"|cut -f1 -d"T" ...

Как видите, одна строка не закомментирована и состоит из трех элементов UserParameter — указывает, что это пользовательский параметр mdstat — ключ-команда, которую должен запросить Заббикс-сервер cat /proc/mdstat | grep -c _ — команда, которую выполняет Заббикс-агент и возвращает серверу результат.

Результатом выполнения команды cat /proc/mdstat | grep -c _ в Debian будет количество строк, в которых при выводе команды cat /proc/mdstat найден символ подчеркивания. Он встречается только тогда, когда рейд работает в дегрейдед режиме, а при нормальном состоянии всех md устройств команда cat /proc/mdstat | grep -c _ вернет 0 (ноль).

1.2 Добавьте строку
UserParameter=mdstat,cat /proc/mdstat | grep -c _
в конец файла \etc\zabbix\zabbix-agent.conf

1.3 В интерфейсе администрирования (далее Zabbix GUI, GUI) зайдите в Configuration — Hosts. Справа вверху выберите из списка Items — Create Item и создайте элемент данных как показано на рисунке. В поле Host укажите хост или шаблон к которому будет применяться данный итем, в поле key укажите ключ, который описан в \etc\zabbix\zabbix-agent.conf.  Остальные поля и так понятны без пояснений.

1.4 Посмотрите через Monitoring — Latest Data получает ли сервер данные от клиента.

1.5 Создайте триггер (Configuration — Hosts — Triggers — Create Trigger) как показано на рисунке. Поле Expression вы должны заполнить через кнопку Select, выбрав ранее созданный итем.

1.6 С помощью Monitoring — Overview проверьте корректную работу тригера (с помощью mdadm можете, смоделировать падение md в дегрейдед 😉 )

2 .  rsyslogd Vs syslogd

Начиная с Debain Lenny вместо syslogd идет rsyslogd, а заббикс по умолчанию ищет наличие именно syslogd, поэтому триггер Syslogd is not running on … выглядит красным. Но создавать для Lenny отдельный триггер не понадобится, благо заббикс позволяет очень гибко создавать условия срабатывания  триггеров.

Первым делом идете в нужный шаблон (хост) и создаете новый итем для rsyslogd. Процесс  прост — заходите в итем Number of running processes syslogd, клонируйте его, корректируете название и в поле ключа значение syslogd меняете на rsyslogd, то есть строка будет выглядеть как proc.num[rsyslogd].

Далее редактируете существующий триггер Syslogd is not running on … Нужно добавить условие, чтобы триггер срабатывал при отсутствии на машине запущенного syslogd и rsyslogd, т.е. условие теперь выглядит так —

{RPK_Lin_Srv:proc.num[syslogd].last(0)}<1&{RPK_Lin_Srv:proc.num[rsyslogd].last(0)}<1

Идите в Monitoring — Overview и проверяйте результат 😉

Использование сложных условий срабатывания может быть полезным для объединения триггеров. Например — почтовый сервер, на котором крутится IMAP и POP3. Можно объединить оба триггера в один, чтобы он срабатывал в случае падения того или иного сервиса.

3. Мониторинг температуры HDD с помощью  hddtemp

Установите hddtemp
aptitude install hdddtemp
Если указать параметр -n, hddtemp выводит только значение темперетуры HDD без лишней информации, что нам и надо. Поэтому значение UserParameter для устройства /dev/sda будет примерно таким:
UserParameter=sensors.hddtemp,hddtemp -n /dev/sda
Все бы ничего, но на выходе в логе заббикса вы увидите ошибку Permission Denied. А все потому, что по умолчанию непривилегированному  пользователю zabbix нельзя читать данные smart с /dev/sda. Следует добавить zabbix в sudoers для разрешения выполнения команды без пароля. Ставьте sudo если его еще нет.
aptitude install sudo
Добавьте следующую строку в /etc/sudoers
zabbix ALL=NOPASSWD:/usr/sbin/hddtemp
Сейчас результат выполнения hddtemp -n /dev/sda будет корректным.
На этом можно и закончить, но в таком случае вам придется для всех жестких дисков указывать свой UserParameter, а это не оптимально, т.к. заббикс позволяет задавать переменные. Заострять внимание на этом не буду, вот тут все прекрасно разъяснено. В итоге строка выглядит вот так:
UserParameter=sensors.hddtemp[*],sudo hddtemp -n /dev/s$1
Обратите внимание, что для /dev/hda параметр будет таким —
UserParameter=sensors.hddtemp[*],sudo hddtemp -n /dev/h$1
Теперь в веб-интерфейсе заббикса, выбрав соответствующий шаблон, нужно создать несколько item`ов для всех требуемых дисков — sda(b,c,d…) или hda(b,c,d…).  Подробно описывать нет смысла, подскажу лишь, что итем для /dev/sda (ровно как и для /dev/hda) будет выглядеть как hddtemp[da], для /dev/sda и /dev/hda — hddtemp[db] соотвественно.  Тип данных — numeric(float). Ну и триггеры  на выше усмотрение — какую температуру считать завышенной.

Продолжение следует…

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *