Короче, я поставил себе задачу, на моем микросервере (HP MicroServer Gen8 (4CPUs x 2,494Ghz, Intel Xeon CPU E3-1265L V2 2.50GHz, RAM 12Gb)) будет виртуальная машина с операционной системой Ubuntu 18.04 Server + установлен Zabbix 5. С ее помощью я хочу мониторить и получать различные уведомления о своих проектах, рабочей инфраструктуре. Просто на работе нет свободных ресурсов дабы развернуть сервис по мониторингу за инфраструктурой, а у меня есть. Плюс еще один пункт чтобы работодатель зависел от тебя, а не ты от него. Как-то ранее я делал, что уведомления с Zabbix правда 4.4 мне присылались в Telegram, и я хочу оптимизировать/переработать ту заметку применительно к Zabbix 5.0.

Необходимые приготовления:

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

VM: srv-mon (172.35.35.3)

VM: srv-fog – Сервис по автоматизированному развертыванию операционных система: Windows, Ubuntu, HirensCD и т.д.

Socks5: 172.35.35.3:50000

Шаг №1: В локальной сети развернут сервис мониторинга Zabbix Server 5.0 on Ubuntu 18.04 Server amd64

Шаг №2: На эту же систему где у меня Zabbix Server 5.0 устанавливаю связку 3proxy + tor, т.е. применяю заметку «Установить и настроить 3proxy + Tor на Zabbix 5.0»

Шаг №3: Далее задействую заметку «Получить CHAT_ID группы для отправки сообщения ботом»

Шаг №4: Итого у меня есть групповой ID: "id": -CHAT_ID (GROUP)

Шаг №5: Перехожу к настройке в серверной части Zabbix 5.0 способа оповещения:

http://IP&DNS/zabbix - user&pass - Администрирование – Способы оповещений

Я деактивирую все имеющиеся: Выделить все – Отключить - Да

и создаю свой собственный: нажимаю на "Создать способ оповещения"

  • Имя: именую просто и со вкусом, как telegram.sh
  • Тип: изменяю на Script/Скрипт
  • Имя скрипта: у меня это telegram.sh
  • Параметры скрипта: — Нажимаю "Добавить" и создаю параметры которые я передавал скрипту при тестовом запуске, их будет три параметра: {ALERT.SENDTO},{ALERT.SUBJECT}, {ALERT.MESSAGE}

Где

    • {ALERT.SENDTO} — это chat_id
    • {ALERT.SUBJECT} — это тема
    • {ALERT.MESSAGE} — это сообщение
  • Описание: Оповещение через Telegram
  • Активировано: Отмечаю галочкой

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

Способ оповещения через telegram.sh

В конце нажимаю "Добавить". Мои способы оповещения. Т.к. все способы я деактивировал среди всех присутствующих значится только что созданный:

У меня только один пока способ оповещения - это telegram.sh

Отсюда же можно сделать "Тест", нажимаю в строке где мой созданный способ оповещения:

  • Отправлять на: -CHAT_ID (GROUP)
  • Тема: Тестовая тема
  • Сообщение: Это тестовое сообщение от Zabbix

и нажимаю Тест

Тестирую оповещение через telegram.sh

после чего мой смартфон завибрировал, и я получил в группу ekzit сообщение:

Тестовое сообщение от моего бота Ekzbot в мою группу ekzit

Это значит, что способ уже добавлен и работает.

Шаг №6: Теперь нужно присвоить либо группе, либо конкретному пользователю способ оповещения. Т.к. я один использую Zabbix то могу оставить пользователя Admin или же создать/добавить.

Пусть будет текущий – Admin

http://IP&DNS/zabbix - user&pass - Администрирование – Пользователи – нажимаю на Username=Admin, перехожу на вкладку "Оповещения" - "Добавить"

  • Тип: telegram.sh
  • Отправлять на: -CHAT_ID(GROUP)
  • Когда активен: 1-7,00:00-24:00
  • Использовать, если важность: Высокая, Чрезвычайная
  • Активировано: отмечаю галочкой

Скриншот для наглядного представления, как выглядят настройки способа оповещения для учетной записи:

Указываю что оповещения через telegram.sh только для Важности

И нажимаю "Добавить". Итого настроенный способ оповещения для учетной записи Admin:

Результат настроенного оповещения для важности

И нажимаю "Обновить".

Шаг №7: После активирую дефолтную настройку отправки отчета о проблемах Zabbix администраторам:

http://IP&DNS/zabbix - user&pass - Настройка – Действия – Создать действие

вкладка "Действие"

  • Имя: Report problems to Zabbix from telegram
  • Условия: Добавить
  • Тип: Важность триггеров
  • Оператор: больше чем или равно
  • Важность: Высокая

и нажимаю "Добавить"

Затем перехожу на вкладку "Операции"

  • Длительность шага операции по умолчанию: 1h
  • Приостановить операции для подавленных проблем: отмечая галочкой

(Операции) Добавить

  • Тип операции: Отправить сообщение
  • Шаги: 1-1
  • Длительность шага: 0
  • Send to user groups: Добавить –выбираю Zabbix administrators
  • Отправлять только через: выбираю telegram.sh

и нажимаю Add (окна "Детали операции«)

и нажимаю Add

(Операции восстановления) Добавить

  • Тип операции: Оповещать всех участников

и нажимаю "Добавить" окна настройки "Действия"

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

Шаг №8: Изменяю шаблон оповещений:

http://IP&DNS/zabbix - user&pass - Администрирование – Способы оповещений – выбираю свой способ, он у меня под именем telegram.sh, перехожу на вкладку "Шаблоны сообщений" — нажимаю "Добавить"

  • Тип сообщения: Проблема
  • Тема: Зафиксирована проблема {EVENT.TIME} on {EVENT.DATE}
  • Сообщение: 
    • Имя проблемы:  {EVENT.NAME}
    • Имя хоста:  {HOST.NAME}
    • Уровень  тревоги:  {EVENT.SEVERITY}
    • Триггер на: {TRIGGER.EXPRESSION}
    • Текущие показания: {{HOSTNAME}:{TRIGGER.KEY}.last(0)}
    • Описание: {TRIGGER.DESCRIPTION}
    • Идентификатор проблемы:  {EVENT.ID}  {TRIGGER.URL}

и нажимаю "Добавить", после снова нажимаю "Добавить"

  • Тип сообщения: Восстановление проблемы
  • Тема: Тема по умолчанию: Проблема устранена: {EVENT.NAME}
  • Сообщение:
    • Проблема была устранена {EVENT.RECOVERY.TIME} on {EVENT.RECOVERY.DATE}
    • Имя проблемы: {EVENT.NAME}
    • Имя хоста:  {HOST.NAME}
    • Уровень тревоги: {EVENT.SEVERITY}
    • Триггер на: {TRIGGER.EXPRESSION}
    • Текущие показания: {{HOSTNAME}:{TRIGGER.KEY}.last(0)}
    • Идентификатор проблемы:  {EVENT.ID} {TRIGGER.URL}

и нажимаю "Добавить", а вот только после нажимаю "Обновить" настройки "Способы оповещения": telegram.sh

Шаг №9: Теперь если срабатывает триггер, то мне в группу Telegram: ekzit приходит вот такое вот сообщение:

Сообщение в Telegram о сработавшем триггере

Если проблему закрыли, то также приходит уведомление:

Если проблему закрыли, то также приходит уведомление:

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

На заметку: Какие дефолтные макросы бывают: https://www.zabbix.com/documentation/4.4/ru/manual/appendix/macros/supported_by_location

  • Тип сообщения: Восстановление проблемы
  • Тема: Тема по умолчанию: Проблема устранена: {EVENT.NAME}
  • Сообщение:
  • Проблема была устранена {EVENT.RECOVERY.TIME} on {EVENT.RECOVERY.DATE} из под {USER.FULLNAME}
  • Имя проблемы: {EVENT.NAME}
  • Имя хоста:  {HOST.NAME}
  • Уровень тревоги: {EVENT.SEVERITY}
  • Триггер на: {TRIGGER.EXPRESSION}
  • Текущие показания: {{HOSTNAME}:{TRIGGER.KEY}.last(0)}
  • Идентификатор проблемы: {EVENT.ID} {TRIGGER.URL}

Итого по заметке. Она работоспособная и для моего домашнего «Умного дома» и центра где совмещено хобби и работа система мониторинга Zabbix 5.0 подходит. А еще я в последнее время начал стараться стандартизировать и оптимизировать свои шаблоны, скрипты и конечно же заметки.

На этом заметку пока считаю завершенной, с уважением автор блога Олло Александр aka ekzorchik.