Короче, я поставил себе задачу, на моем микросервере (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)
- Разбор установки Zabbix 5.0 LTS на Ubuntu 18.04 Server
- Устанавливаем Zabbix 5 + Nginx on Ubuntu 18.04 Server
- Установить и настроить 3proxy + Tor на Zabbix 5.0
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
- Активировано: Отмечаю галочкой
Так выглядят настройки:
В конце нажимаю "Добавить"
. Мои способы оповещения. Т.к. все способы я деактивировал среди всех присутствующих значится только что созданный:
Отсюда же можно сделать "Тест"
, нажимаю в строке где мой созданный способ оповещения:
Отправлять на: -CHAT_ID (GROUP)
Тема: Тестовая тема
Сообщение: Это тестовое сообщение от Zabbix
и нажимаю Тест
после чего мой смартфон завибрировал, и я получил в группу ekzit
сообщение:
Это значит, что способ уже добавлен и работает.
Шаг №6:
Теперь нужно присвоить либо группе, либо конкретному пользователю способ оповещения. Т.к. я один использую Zabbix
то могу оставить пользователя Admin
или же создать/добавить.
Пусть будет текущий – Admin
http://IP&DNS/zabbix - user&pass - Администрирование – Пользователи
– нажимаю на Username=Admin
, перехожу на вкладку "Оповещения" - "Добавить"
Тип: telegram.sh
Отправлять на: -CHAT_ID(GROUP)
Когда активен: 1-7,00:00-24:00
Использовать, если важность: Высокая, Чрезвычайная
Активировано: отмечаю галочкой
Скриншот для наглядного представления, как выглядят настройки способа оповещения для учетной записи:
И нажимаю "Добавить"
. Итого настроенный способ оповещения для учетной записи 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
приходит вот такое вот сообщение:
Если проблему закрыли, то также приходит уведомление:
Вот из сообщения видно, что можно дополнить шаблон, к примеру, под кем было закрыто сообщение.
На заметку: Какие дефолтные макросы бывают: 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.