Настройка оповещения ZABBIX 2.0 через e-mail

оповещения ZABBIX 2
http://www.zabbix.com/

Логичным продолжением в настройке системы мониторинга будет реализация уведомлений хотя бы по электронной почте. По части ZABBIX, к сожалению, есть одно ограничение – из “коробки” он не поддерживает отправку сообщений на e-mail. Именно поэтому придется эту задачу решать путем использования скриптов, поддержка которых в ZABBIX широко присутствует. Об этом и пойдет речь в статье. Приступим сразу к делу.


Если вам интересна тематика ZABBIX, рекомендую обратиться к основной статье – Система мониторинга ZABBIX, в ней вы найдете дополнительную информацию.


E-mail оповещения ZABBIX 2

Начнем конечно же с установки MTA. В принципе подойдет любой агент, вы можете ставить тот, с которым больше знакомы, а у меня будет рассмотрен пример с sendemail:
root@debian7:~# apt-get install sendemail

Ищем папку для скриптов. Для этого смотрим файл конфигурации zabbix-сервера:
root@debian7:~# nano /usr/local/etc/zabbix_server.conf

Нам нужна опция “AlertScriptsPath“. Видим закомментированную строчку:
# AlertScriptsPath=${datadir}/zabbix/alertscripts

Необходимо определить папку, в которой будут храниться скрипты и назначить её параметру “AlertScriptsPath“:
AlertScriptsPath=/usr/local/bin/alertscripts

Поскольку такой папки изначально не было, надо её создать:
root@debian7:~# mkdir /usr/local/bin/alertscripts

Далее в этой папке создаем скрипт:
root@debian7:~# nano /usr/local/bin/alertscripts/zabbix_sendemail

Вставляем в него следующий текст:
#!/bin/sh

export smtpemailfrom=bissquit.email.bot@mail.ru
export zabbixemailto=$1
export zabbixsubject=”$2″
export zabbixbody=”$3″
export smtpserver=smtp.mail.ru
export smtplogin=bissquit.email.bot
export smtppass=bissquit.email.bot147258369

/usr/bin/sendEmail -f $smtpemailfrom -t $zabbixemailto -u $zabbixsubject -m $zabbixbody -s $smtpserver:25 -xu $smtplogin -xp $smtppass

Небольшая заметка: я не являюсь автором этого скрипта, он был взят отсюда, но надо сказать, что в исходном виде он работать не будет, т.к. параметры “$2” и “$3” передаются без кавычек. Поскольку в этих параметрах передается тема и текст сообщения, а они обычно всегда идут с пробелами, скрипт у вас отрабатывать не будет. Такая же проблема встретилась авторам этого поста.

Изменим права доступа к файлу:
root@debian7:~# chmod 755 /usr/local/bin/alertscripts/zabbix_sendemail

Вернемся в корневую директорию:
root@debian7:/usr/local/bin/alertscripts# cd /root/

Проверим работу скрипта:
root@debian7:~# /usr/local/bin/alertscripts/zabbix_sendemail адрес_отправителя адрес_получателя тема текст адрес_smtp_сервера:25 логин пароль

Небольшая подсказка: вводить аргументы для проверки работы скрипта нужно точно в таком же порядке, в каком они стоят в самом скрипте (см. последнюю строчку), то есть так – адрес отправителя, адрес получателя, тема сообщения, текст сообщения, адрес smtp-сервера с портом, имя учетной записи для авторизации, пароль.

Получаем ошибку:

zabbix email alerts 01

Дело в том, что я использую mail.ru и с недавнего времени они запретили использовать незащищенные соединения. Произошло это примерно с сентября 2014 года и заметил это я конечно же на своих продакшн-серверах, поскольку они тоже используют ящики на mail.ru. Отлично, раз так, придется немного изменить скрипт, добавив в него в самом конце “-o tls=yes“. В итоге весь скрипт будет выглядеть следующим образом:
#!/bin/sh

export smtpemailfrom=bissquit.email.bot@mail.ru
export zabbixemailto=$1
export zabbixsubject=”$2″
export zabbixbody=”$3″
export smtpserver=smtp.mail.ru
export smtplogin=bissquit.email.bot
export smtppass=bissquit.email.bot147258369

/usr/bin/sendEmail -f $smtpemailfrom -t $zabbixemailto -u $zabbixsubject -m $zabbixbody -s $smtpserver:25 -xu $smtplogin -xp $smtppass -o tls=yes

Однако и тут получим ошибку:

zabbix email alerts 02

Решение нашел в теме форума “Отправка e-mail из консоли (скрипта)” –
Установим необходимые библиотеки:
root@debian7:~# apt-get install libio-socket-ssl-perl libnet-ssleay-perl

И снова получаем ошибку:

zabbix email alerts 03

В топике “invalid SSL_version specified at /usr/share/perl5/IO/Socket/SSL.pm line 332” –
есть решение проблемы. Оказывается это баг и он даже есть на багрепортах – “Debian Bug report logs – #679911“.
Надо сказать, что и два года назад, когда я впервые ставил ZABBIX, эта ошибка тоже была и кажется ситуация за это время не изменилась. Придется исправлять вручную.

Открываем файл:
root@debian7:~# nano /usr/share/perl5/IO/Socket/SSL.pm

Ищем строчку
m{^(!?)(?:(SSL(?:v2|v3|v23|v2/3))|(TLSv1[12]?))$}i
и заменяем на
m{^(!?)(?:(SSL(?:v2|v3|v23|v2/3))|(TLSv1[12]?))}i
Сохраняем изменения.

Пробуем после этого отправить сообщение:

zabbix email alerts 04

Все получилось! Теперь можно быть уверенным в корректной работе скрипта, идем дальше.

Переходим в веб интерфейс, идем в “Администрирование/Способы оповещений”, создаем новый способ оповещения:

zabbix email alerts 05

Теперь необходимо назначить пользователю способ оповещения. Для этого переходим в “Администрирование/Пользователи”, выбираем нужного пользователя и переходим во вкладку “Оповещения”:

zabbix email alerts 06

Настроим действие на срабатывание триггера – “Настройка/Действия” – создать действие. В сообщение по умолчанию я использую следующий шаблон:

<html><body><font size=”4″ color=”black” face=”Arial”>
<B>Name:</B> {HOST.NAME}<BR>
<B>Trigger:</B>{TRIGGER.NAME}<BR>
<B>Status:</B> {TRIGGER.STATUS}<BR><BR>

<B>Last Value:</B> {{HOSTNAME}:{TRIGGER.KEY}.last(0)}<BR>
</font></body></html>

Полные настройки выглядят так:

zabbix email alerts 07

Переходим на вкладку “Условие”, тут оставляем как есть.

zabbix email alerts 08

Далее надо настроить операции – вкладка “Операции” – “Новый”. Нас интересует отправка уведомлений всего одному пользователю, поэтому настройки для группы пользователей оставляем как есть. Остальные настройки будут выглядеть как на скриншоте. Не забываем нажать “Добавить”, но не в самом низу, а сразу под “Условия”.

zabbix email alerts 09

В конечном счете все будет выглядеть примерно так:

zabbix email alerts 10

На этом настройка уведомлений завершена. Позже приложу примеры работы.


Использованные источники, кроме упомянутых выше:

Бесплатная отправка SMS уведомлений в Zabbix

Яндекс.Метрика