Настройка уведомления по электронной почте zabbix

Введение

Если у вас еще нет почтового сервера, то читайте как установить и настроить почтовый сервер postfix, а если нет сервера мониторинга, то соответственно вот это — установка и настройка zabbix на centos или то же самое на debian. Для мониторинга я буду использовать известную утилиту pflogsumm, которая анализирует почтовый лог postfix. В разных системах он может называться по-разному:

  • /var/log/mail.log в debian и ubuntu
  • /var/log/maillog в centos и freebsd

Само содержание будет одно и то же, поэтому статья будет актуальна для любого сервера с postfix и любой версией мониторинга zabbix. Я за основу возьму bash скрипт, который чаще всего попадается, если в поисковике поискать что-то на тему мониторинга postfix в заббиксе. Не знаю, кто у кого его скопировал изначально, поэтому автора указывать не буду. Сам скрипт достаточно простой, я расскажу подробно что он делает и как работает, чтобы вы понимали и по возможности могли его изменить так, как вам потребуется.

Я буду показывать на примере системы CentOS. Нам понадобится установить утилиту pflogsumm. Делается это просто.

# yum install postfix-pflogsumm

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

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

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

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

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

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

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

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

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

Name Email
Type Script
Script name mail.sh

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

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

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

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

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

Проверка отложенных уведомлений

Для проверки отложенного уведомления, достаточно дождаться срабатывания какого-нибудь триггера. Вот мои примеры, когда оповещение не было отправлено вовсе, так как триггер работал менее 5 минут. И рядом же пример отправки уведомления только через 5 минут после срабатывания триггера.

Последнее событие длилось 1 минуту. Во время бэкапа сайта сработал триггер на нехватку места. После завершения бэкапа, скрипт подчистил за собой следы и места стало достаточно. Все случилось в течении 1 минуты, так что оповещения я вообще не получил.

Второе событие длилось 6 минут. Оповещение было отправлено только через 5 минут после срабатывания триггера.

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

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

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

Отправка уведомлений из Zabbix в Telegram

Как то я подумал о том, что было бы неплохо отправлять уведомления не на почту, а в TelegramХотелось получить что то интереснее, чем спам-рассылка по поводу и без повода. Telegram крут ещё и своими групповыми чатами (в том числе и приватными)

Установка каких либо дополнительных программ и библиотек меня вообще не впечатлила. Да и зачем всё это если можно использовать Telegram-бота и отправлять сообщения простым запросом

Первый шагНеобходимо создать бота в Telegram. Для этого нужно добавить в список контактов бота @BotFather, сказать ему /start и /newbot BotFather сперва спросит как назвать нового бота, а потом какое имя ему присвоить. В ответном сообщении вы получите всю необходимую информацию для его использования

Вы можете создать своего бота, а можете использовать моего Познакомьтесь,

его зовут @TradeNarK_ZabbixBot

его токен 256070243:SHAAHonjepm7mzR6doFLgSNAbKg3BNJzQQm Этого бота необходимо добавить либо к себе в список контактов либо в тот чат, куда вы планируете получать уведомления.

Эта информация нам пригодится немного позже.

Второй шаг Для того что бы отправить сообщение себе или в чат необходимо знать ID чата или контакта Сразу замечу, что по ID можно определить пользователь это или чат — ID чата начинается со знака «-» (минус)

Мой список контактовЧат для уведомленийКак и говорилось выше ID группы начинается со знака минус

Третий шагДля отправки сообщения достаточно выполнить зарос

# curl –header ‘Content-Type: application/json’ –request ‘POST’ –data ‘{“chat_id”:”_ID_”,”text”:”_MESSAGE_”}’ “https://api.telegram.org/bot_TOKEN_/sendMessage”

где _ID_ — ID чата или контакта полученный на втором шаге; _MESSAGE_ — текст сообщения;

_TOKEN_ — токен бота полученный на первом шаге;

Запрос приобретает вид:

# curl –header ‘Content-Type: application/json’ –request ‘POST’ –data ‘{“chat_id”:”1111111″,”text”:”test message for blog https://tradenark.com.ua here”}’ “https://api.telegram.org/bot256070243:SHAAHonjepm7mzR6doFLgSNAbKg3BNJzQQm/sendMessage”

и бот присылает сообщениеУбедившись что вся эта кухня работает нужно написать скрипт который поможет нам в отправке.

Смотрим дефолтное расположение скриптов для отправки

# grep -i AlertScriptsPath /etc/zabbix/zabbix_server.conf | grep -v ^# AlertScriptsPath=/usr/lib/zabbix/alertscripts

Теперь создаём скрипт в этой папке с таким содержимым:

# cat /usr/lib/zabbix/alertscripts/telegram_bot.sh #!/bin/bash TOKEN=’256070243:SHAAHonjepm7mzR6doFLgSNAbKg3BNJzQQm’ if ; then echo ‘Error! You must to define three params’ && exit 1 ; fi CHAT_ID=”$1″ SUBJECT=”$2″ MESSAGE=”$3″ # Определяем emoji для темы сообщения if ] then ICON=”uD83DuDE31″ elif ] then ICON=”uD83DuDC4C” else ICON=”u26A0″ fi curl -s –header ‘Content-Type: application/json’ –request ‘POST’ –data “{“chat_id”:”${CHAT_ID}”,”text”:”$ICON ${SUBJECT} ${MESSAGE}”}” “https://api.telegram.org/bot${TOKEN}/sendMessage” | grep -q ‘”ok”:false,’

Тут я добавил немного «развлекухи». В зависимости от темы бот будет добавлять смайлик. Как оказалось это одна из самых сложных задач. По той причине что вместо смайликов отображался текст / чистый кодРешение всё же нашлось. Для этого необходимо выбрать смайлик и определить его Unicode-формат. К примеру для обычного улыбающегося смайлика

Прикручиваем к Zabbix оповещения в VKontakte

Существующий аккаунт в vk (от его имени будут рассылаться уведомления)
Создать свое приложения в vk
Получить access_token (через Implicit Flow)
Написать alertscript для отправки сообщений (через messages.send)
Запилить его в Zabbix

Создаем новое приложение в vk

Перейдем в раздел VK Developers -> Мои приложения и жмем кнопку «Создать приложение». Платформа нашего приложения — «Standalone-приложение», название — придумайте любое (Например, my_access_token). Жмем «Подключить приложение».

Далее, будет необходимо подтвердить данное действие. Мне удобнее это сделать по SMS. Получаем код подтверждения СМСкой и вбиваем его в соответствующее поле, все просто. После чего нас редиректит в раздел управления приложением.

Готово!

Получаем acces_token

В разделе редактирования приложения, перейдем на вкладку «Настройки» и скопируем «ID приложения».

Само собой, на место «ID_ПРИЛОЖЕНИЯ» — подставляем ID нашего приложения. «scope» — права доступа приложения к соответствующим разделам. Если необходимо только слать сообщения — можно обойтись разделом «messages». В моем случае — я разрешил все.

html и, о чудо (!!!), в адресной строке браузера, мы видим наш access_token.

Копируем его к себе, и никому не показываем! С помощью данного токена, приложение может выполнять любые (разрешенные) запросы к API от имени пользователя под кем генерировался токен.

Готово!

Пишем alertscript

Все alertscript’ы zabbix’а лежат в отдельной директории, путь до которой указывается в переменной AlertScriptsPath, в zabbix_server.conf. 

Создаем скрипт в данной директории, назовем его, допустим — «zabbix_vk_alert.sh»:

# Input params from zabbixvk_full_message=”%0A$vk_message%0A”# Access token from vk appvk_access_token=”**************************************************”vk_api_method_url=”https://api.vk.com/method/messages.send”curl -d “access_token=$vk_access_token&user_id=$vk_user_id&message=$vk_full_message” $vk_api_method_url

$1, $2, $3 — входные параметры, с которыми zabbix будет дергать скрипт; vk_full_message — полный текст сообщения; %0A — перенос строки;

vk_access_token — наш токен (не забудьте подставить).

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

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

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

Шаг третий: получаем событие и отображаем уведомления

  • иконки, соответствующие критичностям триггеров;
  • звуковое сопровождение всплывающих уведомлений;
  • выполнение действия по нажатию на уведомление (SSH-логин, открытие ссылки, заведение тикета о проблеме и т. д.).

terminal-notifier

terminal-notifier

  • можно устанавливать разные иконки для разных критичностей;
  • можно формировать ссылки на графики в Zabbix и открывать их по клику на уведомление;
  • можно реализовать открытие SSH-ссылок: увидели нотификацию -> кликнули -> сразу зашли на хост.

Growl

Для включения установите growl_enabled = True в settings.cfg.

  • возможно, у вас приложение уже установлено;
  • можно выбрать разные иконки под разные критичности;
  • так же, как и в terminal-notifier, можно настроить действия по нажатию на уведомления.

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

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

Name Email
Type Script
Script name mail.sh

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

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

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

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

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

Zabbix. Видео урок №4. Настройка email оповещений. Часть 2 (zabbix gmail)

In видео уроки, системы мониторинга, ubuntu, zabbix  With 24 comments  Предполагается что вы уже ознакомились с первой частью и вы уже можете отправлять сообщения из консоли вашего zabbix сервера. Если же вы еще настроили ssmtp, то читать дальше – нет смысла.Перейдем к описанию настроек. Имеется сервер с zabbix 2.0 установленный в virtualbox.

Два сетевых интерфейса, один настроен как NAT(для интернета), другой как virtualbox host-only(для подключения к серверу). Создан хост (мой компьютер) и к нему привязан шаблон с двумя элементами данных (ping и loss). Подробная инструкция о том, как создать шаблон с элементами данных описана в предыдущем уроке.

Здесь же я просто приведу несколько скриншотов Хост

Шаблон

Выберем элемент данных ping

В итоге должно получиться что-то в этом роде:

Жмем “вставить”. И сохраняем

Должно получиться следующее:

Если в колонке “ошибка” у вас горит красный квадрат, просто обновите страницу через секунд 5-10.

sudo vi /usr/local/etc/zabbix_server.conf

Находим там строчку AlertScriptsPath, раскомментируем ее или допишем ниже, указав нужный нам путь

После этого необходимо перезагрузить zabbix-сервер.

Создадим сам скрипт в указанной нами папке

sudo vi /home/cooper/zabbix/alertscripts/send_mail.sh

с следующим содержанием

#!/bin/bashto=$1subject=$2body=$3

Теперь необходимо настроить действия. Настройка->Действия. Источник событий должен быть Триггер. Создадим действие

в итоге в условиях должно получиться следующее:

и настроим операции

На этом настройка окончена. Для проверки можно отключить у себя на компьютере интерфейс virtialbox host-only секунд на 10-15, затем снова включить и проверить в Мониторинг->События

Если проверите указанный вами почтовый ящик, то должны обнаружить там два письма, о пропаже ping-a и о его восстановлении.

Рекомендуется смотреть в HD качестве

Share This:  

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

Ввиду того файла что сейчас у меня система мониторинга на базе Zabbix и ее версия 3.2.6 (Ставилась по заметке:)

я вдруг вспомнил, а почему у меня еще до сих пор не настроено уведомление на почту для своевременного оповещения о неполадках . Покопавшись в заметках также пришел к выводу, что и заметки на этот счет нет. Да еще настройки почты будут применены к функционалу « Яндекс — почта для домена ». Таким образом я сделаю два дела и пусть наработанное мне еще раз пригодится, либо с учетом новых версий я для себя уже буду знать что менялось, а что нет при написании заметок настроек сервисов.

Настраиваем в Zabbix’ксе, что присылать все уведомления от имени данного почтового ящика:

  • Name: Email
  • Type : Email
  • SMTP server: smtp.yandex.ru
  • SMTP server port: 465
  • SMTP helo: ekzorchik
  • SMTP email: [email protected]
  • Connection security: SSL/TLS
  • SSL verify peer: отметить галочкой
  • SSL verify host: отметить галочкой
  • Authentication: Normal password
  • Username: [email protected]
  • Password: PASSWORD
  • Enabled: отмечаю галочкой

И нажимаю кнопку Update

Теперь создаем пользователя или связываем уже существующего административного пользователя Zabbix с почтой кому следует присылать уведомления:

Administration – Users – сортируем по Users (а можно по User Groups)

Щелкаем по учетной записи (я щелкаю по доменной учетной записи, где сопряжение Active Directory и Zabbix настроено по заметке), после переходим на вкладку: Media – Add

  • Type: Email
  • Send to: НА_КАКОЙ_@_СЛАТЬ_УВЕДОМЛЕНИЯ
  • When active: 1-7,00:00-24:00
  • Use if severity: отмечаю галочкой: Not classified,Information,Warning, Average, High, Disaster
  • Status: Enabled

и нажимаю Add, а после когда вернулся обратно на элемент “Users — Media” нажимаю Update для сохранения изменений внутри учетной записи.

http://IP&DNS — Configuration – Actions – (по умолчанию такая возможность выключена), нажимаю на “Report problems to Zabbix administrators” –

Name: Report problems to Zabbix administrators

Trigger severifity = HIGH

и нажимаю Add

Enabled: отмечена галочка.

  • Default operation step duration: 3600 (minimum 60 seconds)
  • Default subject:
  • Текущее время:
  • Узел сети:
  • Элемент данных:
  • Trigger severity:
  • Pause operations while in maintenance: отмечаю галочкой

После перехожу в настройки Operations: Send message to user groups: Zabbix administrators via all media immediately → Edit

  • Steps: 1
  • Step duration: 60
  • Operation type: Send message
  • Send to User groups: → Add → отмечаю Zabbix administrators и нажимаю Select
  • Send to Users: → Add → отмечаю учетную запись alexander.ollo и нажимаю Select
  • Default message: отмечаю галочкой

И нажимаю Update. Либо же можно оставить то что было только уведомлять всех в группе Zabbix administrators, а не персонифицировано:

Затем переключаюсь на вкладку Recovery operations

  • Текущее время:
  • Узел сети:
  • Элемент данных:
  • Trigger severity:
  • Operations: Notify all who received any messages regarding the problem before →
  • Operation type: Send recovery message
  • Default message: отмечаем галочкой

И нажимаем Update → Update

Затем переходу в профиль, т. к. я один то и учетная запись по умолчанию у меня (Admin) и появление сообщение о проблемах в Web-панель администрирования Zabbix

http://IP&DNS — Profile —

  • Message timeout (seconds): 60
  • Frontend messaging: Отмечаю галочкой
  • Play sound: Once
  • Trigger severify: отмечаю галочками: Recovery, Warning, High, Disaster и нажимаю Update

Проверяю как работает уведомление на почту, выключаю любой сервис/хост в инфраструктуре у которого настроен триггер с уведомлением High.

ReportsAction Log

Итого я пока получил заготовку от которой я буду отталкиваться при настройке уведомлений на почту и выполнения дополнительных скриптов. К примеру я хочу чтобы после уведомления на почту, посредством АТС мне на мобильный происходил звонок где уже заранее записанный голос произносит что-то не так с сервисом и это уже срочно.

А посему я могу смело попрощаться, до встречи, с уважением автор блога — Олло Александр aka ekzorchik.

Используйте прокси ((заблокировано роскомнадзором, используйте vpn или proxy)) при использовании Telegram клиента:

Поблагодари автора и новые статьи

Карта МКБ: 4432-7300-2472-8059 Yandex-деньги: 41001520055047

источник

Заключение

Мониторинг почтового сервера postfix нетривиальная и ответственная задача. Почтовые сервера постоянно находятся в зоне повышенного внимания со стороны злоумышленников, которые непрерывно пытаются найти уязвимые места и использовать ваш сервер для рассылки спама.

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

Надеюсь, моя статья поможет вам повысить эффективность администрирования почтового сервера. Буду рад замечаниям, советам и информации о собственном опыте в мониторинге почты, в частности postfix. Хотя опыт других серверов тут тоже применим. Zabbix универсальный инструмент, на котором можно реализовать практически любые проверки.

Онлайн курс «DevOps практики и инструменты»

Если у вас есть желание научиться строить и поддерживать высокодоступные и надежные системы, научиться непрерывной поставке ПО, мониторингу и логированию web приложений, рекомендую познакомиться с онлайн-курсом «DevOps практики и инструменты» в OTUS. Курс не для новичков, для поступления нужны базовые знания по сетям и установке Linux на виртуалку. Обучение длится 5 месяцев, после чего успешные выпускники курса смогут пройти собеседования у партнеров.

Проверьте себя на вступительном тесте и смотрите программу детальнее по .

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Техноарена
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: