Zabbix как настроить уведомления

Как научить Zabbix отправлять уведомления о проблемах прямо на рабочий стол


Картинка: источник

Привет, Хабр! Меня зовут Илья Аблеев, я работаю в отделе мониторинга Badoo.

Можно долго холиварить на тему того, какая система мониторинга круче. Основным инструментом для реакции на проблемы в Badoo является Zabbix, и мы неоднократно делились опытом его кастомизации.

«Из коробки» узнавать о новых проблемах можно либо через веб-интерфейс, либо по почте/SMS. Это хорошо работает и до определённого момента нас устраивали эти способы.

На сегодняшний день в нашей системе несколько инстансов сервера, тысячи хостов, сотни тысяч проверок и примерно столько же триггеров, на которые нужно как можно более оперативно реагировать. После ряда инцидентов, когда только на обнаружение проблемы мы тратили до десяти минут (что совершенно недопустимо), мы осознали, что нам жизненно необходимы другие способы уведомления о проблемах. Тогда, возможно, наша реакция была бы быстрее.

Оптимальным решением, на наш взгляд, был бы вывод важных уведомлений поверх всех окон (браузеров, чатов, консолей). В этой статье речь пойдёт о том, как мы допилили Zabbix, научив отправлять их прямо на рабочий стол.

Кому подойдёт данное решение:

  • дежурным администраторам, которые не только круглосуточно смотрят в монитор, но и занимаются решением других задач;
  • всем остальным администраторам, которым не нравится просматривать простыню PROBLEM и OK`ов в почте или SMS, но которые хотят своевременно узнавать о критичных проблемах.
Читайте также:  Как настроить магнитолу сони под фронт

Придётся потратить время на установку, но, думаю, если вы используете Zabbix и уже использовали кастомные скрипты, для вас это не составит труда.

Внимание! Получение уведомлений данным способом вызывает привыкание, долговременное его использование создаёт впечатление, что он является неотъемлемой частью Zabbix.

Расскажу по шагам, что и как мы делали. Техническая реализация достаточно проста:

  1. Zabbix отправляет алерт на какое-то событие.
  2. Скрипт-отправщик на сервере отправляет данные клиенту на десктоп по UDP.
  3. Скрипт-получатель принимает уведомление, и инициирует появление всплывающего сообщения посредством дополнительного приложения.

Третий пункт может отличаться в зависимости от того, какую операционную систему вы используете и какое приложение вам больше нравится.

Шаг первый: настройка Zabbix

В официальной документации подробно рассказано, как создать свои алерты.

  1. Заранее положим zbxpush.py в AlertScriptsPath на Zabbix-сервер.
  2. Далее в веб-интерфейсе: AdministrationMedia typesCreate.

3. Заранее пропишем IP/FQDN, на который мы будем отправлять алерты.

В веб-интерфейсе: AdministrationUsers%username%Media.

4. Создадим действие на триггеры.

В веб-интерфейсе: ConfigurationActions.

Формат отправки

@@@@@@

Первое — числовой формат триггера (4 или 5 — влияет на отображаемую иконку: High или Disaster), второе — заголовок уведомления, третье — тело сообщения.

@@@ — чтобы было удобно разбивать на столбцы, ибо в названиях триггеров может быть написано что угодно (по крайней мере, у нас :)), но точно не эта комбинация.

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

Логика простая: получаем событие, пересылаем его клиенту.

Здесь вы можете изменить UDP на TCP. Мы выбрали UDP по одной простой причине: Zabbix отправляет все уведомления последовательно, а значит, если ваш компьютер будет недоступен, в случае использования TCP уведомления будут отправляться с большой задержкой.

Не забудьте сделать скрипт исполняемым!

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

zbxlistenerd.py – скрипт, который будет крутиться в фоне и запускать уведомления

settings.cfg — файл с настройками клиента

icons/5.png , icons/4.png — иконки для разных критичностей триггеров
Дальше наши пути расходятся. «Клиентская» часть предполагает немного творчества, так как каждый создаёт окружение для себя.

Что бывает необходимо:

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

В нашей компании в качестве десктопной ОС в основном используются Linux и Mac OS, поэтому рассмотрим несколько примеров для них. Если же вы реализуете то же самое для Windows, добро пожаловать в комменты! С радостью дополним пост.

Linux

Приведу пример, который довелось использовать: notify-send в Xfce (на скриншоте выше). Почему notify-send, а не тот же Python с использованием libnotify? Да потому что он есть во всех популярных десктоп-дистрибутивах (Ubuntu, Fedora, SUSE) и работает со всеми (по крайней мере популярными) DE (Gnome, KDE, Xfce).

Совет: если у вас случаются периоды массовой недоступности чего-либо (например, отвалился свитч — и вы завалены горой триггеров о недоступности серверов), сразу настройте хоткей на завершение процесса notify-send.

Mac OS

Поскольку изначально решение реализовывалось на базе бесплатного приложения, а затем мы опробовали платное, примеров будет два.

terminal-notifier

После недолгого поиска был выбран бесплатный terminal-notifier.

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

Минусы: отсутствуют (особенно после того, как была добавлена поддержка иконок).

Growl


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

Во времена, когда terminal-notifier не умел использовать кастомные иконки, Growl вполне с этим справлялся. Поэтому наше любопытство победило жадность — и мы опробовали это довольно популярное приложение (которое, надо сказать, умеет не только иконки менять — это целый центр уведомлений).

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

Минус: платное.

Если же Growl у вас нет, рекомендую всё же воспользоваться terminal-notifier.

Заключение

Вот так, с помощью нехитрых приспособлений…

Что мы получили в итоге:

  • быстрая доставка уведомлений админам;
  • уменьшение времени реакции на события (от момента «узнали» до «починили» или «передали дальше»);
  • возможность совершать простые полуавтоматические действия:

Далее всё зависит от вашего творческого потенциала.

Когда-то давно, когда я работал в компании-провайдере, при падении интернет-канала из всех колонок и наушников на рабочем месте доносился звук сирены. Это приводило дежурного (меня) в ступор, не давало адекватно сообщить о проблеме по телефону, но он (я) старался как можно быстрее эту проблему решить.

Лично мне уже известны случаи прикручивания к скрипту звука свиньи из популярного антивируса и говорилки из популярного переводчика. 🙂

Источник

Zabbix Documentation 5.4

Table of Contents

5 Получение оповещения о проблеме

Обзор

В этом разделе вы узнаете как настроить в Zabbix уведомления из диалога оповещений.

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

Это то, что делают оповещения. E-mail является наиболее популярным способом для отправки уведомлений о проблемах, мы узнаем, как настроить уведомления через e-mail.

Настройки E-mail

Изначально в Zabbix имеется несколько предустановленных способов доставки оповещений. E-mail один из них.

Для конфигурирования настроек e-mail, перейдите в Администрирование → Способы оповещений и нажмите на Email в списке предустановленных способов оповещений.

Отобразится диалог определения настроек e-mail.

Все обязательные поля ввода отмечены красной звёздочкой.

Установите значения сервера SMTP, SMTP helo и SMTP e-mail в зависимости от вашей среды.

Нажмите Обновить, когда будет готово.

Теперь у вас есть настроенный ‘Email’ как рабочий способ оповещения. Способ оповещения должен быть связан с пользователями с указанными адресами доставки (как мы это делали, когда настраивали нового пользователя), в противном случае он не будет использоваться.

Новое действие

Доставка оповещений является одной из задач действий, которые делаются в Zabbix. Поэтому, для настройки оповещений перейдите в Настройка → Действия и нажмите на Создать действие.

Все обязательные поля ввода отмечены красной звёздочкой.

В этом диалоге введите имя действия.

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

Мы еще должны определить какое действие нужно делать — это настраивается на вкладке Операции. Нажмите во вкладке Операции на Новое, появится диалог новой операции.

Все обязательные поля ввода отмечены красной звёздочкой.

Здесь, нажмите на Добавить в блоке Отправлять пользователям и выберите пользователя (‘user’), которого мы добавили. Выберите ‘Email’ значением в Отправлять только через. Когда закончите с этим, нажмите на Добавить.

Макросы (или переменные) и , которые видно в полях Тема по умолчанию и Сообщение по умолчанию, будут заменены актуальными значениями состояния триггера и имени триггера.

Это всё что требуется для настройки простого действия, поэтому нажмите на Сохранить в диалоге действия.

Получение оповещения

Теперь, с настроенной отправкой оповещений вам на самом деле может быть интересно получить одно оповещение. Чтобы помочь с этим, мы попробовать увеличить нагрузку на наш узел сети — так, чтобы наш триггер “зажегся” и мы получили бы оповещение о проблеме.

Откройте консоль на вашем узле сети и выполните:

Вы можете запустить один или несколько этих процессов.

Теперь перейдите в Мониторинг → Последние данные и посмотрите как увеличиваются значения ‘Загрузка CPU’. Вспомните, для нашего триггера “поджигание” наступает при значении ‘Загрузка CPU’ больше ‘2’ в течении 3 минут. Как только это произойдет:

Источник

Оповещения & Автоматические действия

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

Отправка оповещений

Каналы отправки

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

Пользовательское сообщение

В сообщение оповещения можно включать информацию реального времени или данные инвентаризации, а также последние данные. Сообщение может содержать такие поля как:

Опции настройки сообщения:
  • Дата и время
  • Имя узла сети
  • Значение элемента данных
  • Значения триггеров
  • Профиль узла сети
  • Пользовательские макросы
  • История эскалаций

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

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

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

Выполнение удаленных команд

Shell-команды могут выполняться на удаленной системе для исправления ситуации, где система может быть перегружена или службы перестают работать должным образом. Используются наиболее типичные команды для перезапуска сервера или сервисов.

Команды, которые можно выполнять:
  • на Zabbix сервере
  • на Zabbix агенте
  • с использованием IPMI
  • с использованием telnet и SSH

Больше информации о выполнении удаленных команд доступно в документации.

Эскалация реакции на проблемы

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

Поддерживаемые опции эскалаций:
  • Незамедлительное информирование пользователей о новых проблемах
  • Упреждающее выполнение удаленных скриптов
  • Повторение оповещений до момента решения проблемы
  • Задержка оповещений и удаленные команды
  • Эскалация проблем другим группам пользователям
  • Разные пути эскалаций для подтвержденных и неподтвержденных проблем
  • Сообщение о восстановлении всем заинтересованным сторонам
  • Бесконечное количество шагов эскалаций
Пример сценария эскалации:

Zabbix предусматривает эффективные и чрезвычайно гибкие правила по созданию эскалаций. В зависимости от установки Zabbix может автоматически эскалировать (перейти на следующий шаг эскалации) нерешенные проблемы и выполнить действия назначенные на каждый шаг эскалации.

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

Источник

Оцените статью