Решение проблемы

Отправка email уведомлений в zabbix 2.4


Поле установки сервер мониторинга Zabbix не настроен на отправку уведомлений о сработавших триггерах. Более того, штатный функционал по отправке оповещений на email не умеет авторизовываться на почтовом сервере. То есть вы сможете использовать эту возможность только если у вас есть свой собственный почтовый сервер, на котором вы разрешите заббиксу отправлять уведомления без авторизации.

Использовать в такой ситуации публичные сервера не получится. Это неудобно и не практично. Мне зачастую не хочется возиться с настройкой почтового сервера, гораздо удобнее и быстрее воспользоваться готовым. Этим мы и займемся далее — научим zabbix отправлять email уведомления с авторизацией на smtp сервере.

Настройка ssmtp для авторизации на почтовом сервере

Для отправки уведомлений на почту с помощью smtp авторизации нам понадобится почтовый клиент ssmtp. Установим его:

# yum install -y ssmtp

Если у вас еще не подключен репозиторий Epel, сделайте это. Пакет устанавливается оттуда. Теперь нужно настроить почтовый клиент на отправку писем через указанную учетную запись. Для этого открываем файл /etc/ssmtp/ssmtp.conf и приводим его к следующему виду для отправки через почтовый сервер Яндекса:

cat ssmtp.conf
root=zabbix@zeroxzed.ru

mailhub=smtp.yandex.ru:465
AuthUser=zabbix@zeroxzed.ru
AuthPass=password
AuthMethod=LOGIN
FromLineOverride=YES
UseTLS=YES
RewriteDomain=zeroxzed.ru
Hostname=zeroxzed.ru
Debug=YES
TLS_CA_File=/etc/pki/tls/certs/ca-bundle.crt
В данном примере я использую почтовый домен zeroxzed.ru, он у меня прикреплен к Яндексу и обслуживается им. Если у вас обычный почтовый ящик, используйте адрес вида mailbox@yandex.ru.

Если вы хотите использовать учетную запись gmail то настройки ssmtp должны быть следующие:

root=mailbox@gmail.com

mailhub=smtp.gmail.com:587
RewriteDomain=gmail.com
AuthUser=mailbox
AuthPass=parolchik
Hostname=gmail.com
UseSTARTTLS=YES
AuthMethod=LOGIN
FromLineOverride=YES
UseTLS=YES
Debug=YES
TLS_CA_File=/etc/pki/tls/certs/ca-bundle.crt

И редактируем там же файл revaliases, добавляя одну строку для яндекса:

root:zabbix@zeroxzed.ru:smtp.yandex.ru:465

И для gmail:

root:mailbox@gmail.com:smtp.gmail.com:587

Теперь проверим работу почтового клиента. Отправляем через консоль тестовое письмо:

# echo "test_message" | ssmtp -v zeroxzed@gmail.com

[<-] 220 smtp3m.mail.yandex.net ESMTP
[->] EHLO zeroxzed.ru
[<-] 250 ENHANCEDSTATUSCODES
[->] AUTH LOGIN
[<-] 334 VXNlcb5hbDU6
[->] emFiYml4QEplcm94tmVkLnJ1
[<-] 334 UGFzR3dvc2Q6
[<-] 235 2.7.0 Authentication successful.
[->] MAIL FROM:<zabbix@zeroxzed.ru>
[<-] 250 2.1.0 <zabbix@zeroxzed.ru> ok
[->] RCPT TO:<zeroxzed@gmail.com>
[<-] 250 2.1.5 <zeroxzed@gmail.com> recipient ok
[->] DATA
[<-] 354 Enter mail, end with "." on a line by itself
[->] Received: by zeroxzed.ru (sSMTP sendmail emulation); Thu, 05 Nov 2015 18:32:18 +0300
[->] From: "root" <zabbix@zeroxzed.ru>
[->] Date: Thu, 05 Nov 2015 18:32:18 +0300
[->] test_message
[->]
[->] .
[<-] 250 2.0.0 Ok: queued on smtp3m.mail.yandex.net as 1446737539-AXVW9QixF9-WJAWKNV9
[->] QUIT
[<-] 221 2.0.0 Closing connection.
Когда писал статью, не думал, что мне будут приходить на почту тестовые письма. Но долгое время не мог понять, что за сообщения с текстом test_message периодически прилетают в почту. Теперь понял, что это копипастом с этой статьи люди мне шлют тестовые письма. Не забывайте менять адрес получателя, мне ваши тестовые письма ни к чему ?

Все в порядке, письмо улетело. Если что, логи работы почтового клиента можно посмотреть в файле /var/log/maillog.

Email script для отправки оповещений

Отправка email уведомлений в zabbix 2.4

Отправлять почтовые уведомления из zabbix будем с помощью скрипта. Первым делом выясним, где наш заббикс хранит скрипты для оповещений. Для этого открываем файл конфигурации и ищем там строку AlertScriptsPath:

# cat /etc/zabbix/zabbix_server.conf | grep AlertScriptsPath

AlertScriptsPath=/usr/lib/zabbix/alertscripts

Идем в указанную папку и создаем там скрипт отправки уведомлений на почту:

# mcedit /usr/lib/zabbix/alertscripts/mail.sh
#!/bin/sh

export smtpemailfrom=zabbix@zeroxzed.ru
echo "To: $1" > /tmp/mymailinput
echo "Subject: $2" >> /tmp/mymailinput
echo "Content-Type: text/plain; charset="utf-8"" >> /tmp/mymailinput
echo "From: "Zabbix Zeroxzed"<$smtpemailfrom>" >> /tmp/mymailinput
echo "" >> /tmp/mymailinput
echo "$3" >> /tmp/mymailinput
/usr/sbin/ssmtp $1 -F $smtpemailfrom < /tmp/mymailinput

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

# chmod 0777 mail.sh

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

Теперь идем в web интерфейс zabbix и настраиваем отправку оповещений на почту с smtp авторизацией. Для этого переходим в раздел Administration -> Media types и нажимаем на ссылку Email:

Настройка email оповещений в zabbix

Заполняем необходимые параметры как на картинке:

Включения скрипта отправки сообщений

Name Email
Type Script
Script name mail.sh

Сохраняем настройки, нажав Update. Дальше идем в раздел Administration -> Users. Меняем отображение с групп на пользователей:

Активация отправки уведомлений администратору

Нажимаем на пользователя Admin и переходим на вкладку Media, там жмем на add. Откроется окно добавления источника оповещений. Заполняем как на картинке:

добавление источника оповещений

Нажимаем Update. Затем в разделе Media пользователя Admin еще раз жмем Update для применения настроек:

zabbix-notifications-05

Теперь последний штрих, который лично я частенько забываю сделать, а потом долго разбираюсь, почему zabbix не отправляет оповещения на почту. Идем в раздел Configuration -> Actions и в единственной строке Report problems to Zabbix administrators жмем на Disabled в столбце статус, чтобы он стал Enabled:

zabbix-notifications-06

Теперь все готово. Надо ждать срабатывания тригера и проверять почту. После срабатывания тригера и отправки заббиксом письма, в системном почтовом логе /var/log/maillog должны появиться записи об этом.

Проверка оповещений в Zabbix

Отправка email уведомлений в zabbix 2.4

Частенько возникают всякие нюансы в механизме отправки уведомлений в Zabbix. К сожалению, в самом заббиксе нет удобного средства мониторинга отправки уведомлений. И если возникают какие-то проблемы, не всегда бывает просто определить, где ошибка. Я рекомендую следующую последовательность действий при разборе ошибок отправки уведомлений zabbix с авторизацией по smtp. Без авторизации чаще всего все в порядке.

  1. Открываем dashboard и смотрим на сработавший триггер. В столбце Actions должны быть цифра 1, означающая, что уведомление было отправлено. При наведении мышки на эту цифру появится дополнительная информация. проверка оповещений на почту
  2. Затем идем в раздел Administration -> Notifications и смотрим на счетчик email уведомлений. Он должен увеличиваться при каждом новом срабатывании тригера. zabbix-notifications-08
  3. Если эти два условия выполняются, значит zabbix нормально отрабатывает событие отправки уведомления на почту. Если же нет, то нужно проверять настройки самого заббикса касательно отправки сообщений. Аккуратно проверить все разделы, которые имеют к этому отношения.
  4. Дальше нужно смотреть почтовый лог — /var/log/maillog. Там должны быть записи об отправке сообщения. Это будут либо успешные отправки, либо сообщения об ошибках. Если есть ошибки, то нужно разбираться с почтовым клиентом, в котором настроена авторизация smtp и скриптом отправки сообщений.
  5. Если все в порядке, а уведомления все равно не приходят, то можно попробовать сменить почтовый сервер. Идеальным был бы вариант почтового сервера, к логам которого у вас есть доступ. Так проще всего отладить работу, так как если в скрипте отправки есть какая-то ошибка, которую не видно на клиенте, ее можно заметить на сервере.

Заключение

Подведем итог того, что мы сделали. Нашей задачей была настройка уведомлений в zabbix о срабатываемых триггерах. Причем оповещения нам нам нужно было отправлять через сторонний smtp сервер с авторизацией. Так как стандартного средства авторизации smtp в zabbix нет, мы использовали ssmtp клиент для этих целей. Затем мы создали скрипт, с помощью которого заббикс будет отправлять уведомления, используя ssmtp.

После этого мы настроили через web интерфейс все необходимые параметры для успешной отправки оповещений. И в заключении провели диагностику возможных проблем.


СМОТРИ ТАКЖЕ