Найти в Дзене
Записки сисадмина

Zabbix. Оповещения через мессенджер MAX.

Последнее время очень много работаю с системой мониторинга. Возможно, когда-нибудь я найду время и силы в себе, чтобы написать еще несколько статей по трюкам в zabbix. Но пока что остановимся на оповещениях. Я до конца буду придерживаться своего мнения, что специалист, настраивающий систему, должен подстраивать ее под нужды и удобства пользователей. Так и с zabbix: если человеку удобно получать оповещения через почту, мы настроим отправку писем. Через телеграм - создадим бота и будем отправлять сообщения через него. Но в данном случае мы собрались настроить оповещения через мессенджер MAX. Итак, я считаю, что вы уже настроили себе zabbix сервер, зарегистрировали свой аккаунт на платформе max и получили токен для бота. pip install maxapi touch /usr/lib/zabbix/alertscripts/max.py Поскольку скрипт будет вызываться приложением zabbix-server, нужно указать интерпретатор в шапке скрипта. #!/usr/bin/python3 from maxapi import Bot
import asyncio
import sys
async def allert(user, title, mess

Последнее время очень много работаю с системой мониторинга. Возможно, когда-нибудь я найду время и силы в себе, чтобы написать еще несколько статей по трюкам в zabbix. Но пока что остановимся на оповещениях.

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

Так и с zabbix: если человеку удобно получать оповещения через почту, мы настроим отправку писем. Через телеграм - создадим бота и будем отправлять сообщения через него.

Но в данном случае мы собрались настроить оповещения через мессенджер MAX.

Итак, я считаю, что вы уже настроили себе zabbix сервер, зарегистрировали свой аккаунт на платформе max и получили токен для бота.

  • Устанавливаем библиотеку maxapi
pip install maxapi

  • Создаем в директории /usr/lib/zabbix/alertscripts скрипт max.py
touch /usr/lib/zabbix/alertscripts/max.py

  • Прописываем в него содержимое:

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

  • Корректный код будет выглядеть так:
#!/usr/bin/python3
from maxapi import Bot
import asyncio
import sys
async def allert(user, title, message):
await bot.send_message(user_id=user, text=f'{title}\n{message}')
await bot.close_session()
if __name__ == '__main__':
bot = Bot(token='place_bot_token')
asyncio.run(allert(user=sys.argv[1], title=sys.argv[2], message=sys.argv[3]))

В строке bot = Bot(token='place_bot_token') вставьте полученный токен от своего бота.

Также, поскольку скрипт у нас будет "одноразовым" (на каждое уведомление будет отдельный запуск), после отправки сообщения, мы будем закрывать api сессию бота. Назовем это хорошим тоном.

  • Делаем скрипт исполняемым:
chmod +x /usr/lib/zabbix/alertscripts/max.py

Выходим из консоли и благополучно забываем про нее. Далее все настройки будут в web интерфейсе zabbix.

  • На самом Zabbix заходим в "Оповещения" - "Способы оповещений":
-2
  • Справа сверху нажимаем "Создать способ оповещения".

Выбираем имя, тип - "Скрипт", имя скрипта - "max.py"

-3
  • В параметры скрипта добавляем строки:

{ALERT.SENDTO} - Кому будем отправлять сообщение

{ALERT.SUBJECT} - Тема сообщение (имя триггера)

{ALERT.MESSAGE} - Текст сообщения (текст проблемы)

-4
  • Переходим в "Шаблоны сообщений" и создаем два пункта: "Проблема" и "Восстановление проблемы":
-5
  • Проблема:
-6

Тема - "Problem: {EVENT.NAME}"

Сообщение:

Problem started at {EVENT.TIME} on {EVENT.DATE}
Problem name: {EVENT.NAME}
Host: {HOST.NAME}
Severity: {EVENT.SEVERITY}
Operational data: {EVENT.OPDATA}
Original problem ID: {EVENT.ID}
{TRIGGER.URL}

  • Восстановление проблемы:
-7

Тема - "Resolved in {EVENT.DURATION}: {EVENT.NAME}"

Сообщение:

Problem has been resolved at {EVENT.RECOVERY.TIME} on {EVENT.RECOVERY.DATE}
Problem name: {EVENT.NAME}
Problem duration: {EVENT.DURATION}
Host: {HOST.NAME}
Severity: {EVENT.SEVERITY}
Original problem ID: {EVENT.ID}
{TRIGGER.URL}

  • Заходим в "Пользователи" и выбираем конкретного пользователя, которому будем добавлять способ оповещения (в моем случае - Admin):
-8
  • Во вкладке "Оповещения" нажимаем "Добавить":
-9

Тип - max (который мы только что создали)

Отправлять на - id в мессенджере max (придется узнать отдельно, мы это делали в предыдущих статьях)

  • Сохраняем все и проверяем работу нашего оповещения:
-10

Как видите, настройка нового оповещения заняла у нас не более 5 минут.