Задача: Хочу как факультатив разобрать как уведомлять о происшествиях не в Telegram, а в jabber дабы не зависеть от облачного чего-то там, а все только свое и подконтрольное самому себе.

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

План действий:

Т.к. благодаря тому что я заморочился развернув в своей локальной сети DNS то у меня сервисы имеют суффик polygon.lan, а значит и данные в заметке получат их.

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

и посмотрю как их можно связать.

Шаг №1: Создаю VM в своем тестовом полигоне на базе Debian 10 + Proxmox 6 которая будет выполняю функции сервиса мониторинга Zabbix 5.0 on Ubuntu 18.04 Server

  • CPU = 1 (2 cores)
  • RAM = 4Gb
  • HDD = 50Gb

как это сделать от и до см. заметку Разбор установки Zabbix 5.0 LTS на Ubuntu 18.04 Server

  • Hostname: srv-zabbix.polygon.lan

Шаг №2: Создаю VM в своем тестовом полигоне на базе Debian 10 + Proxmox 6 которая будет выполнять функцию личного Jabber сервиса: OpenFire on Ubuntu 18.04 Server

  • CPU = 1 (2 cores)
  • RAM = 4 Gb
  • HDD = 50Gb

Как развернуть сервис Openfire от и до см. заметку Внедряем корпоративный чат openfire + AD на Ubuntu 18.04

  • Hostname: srv-openfire.polygon.lan

Авторизуюсь в консоли администрирования Openfire 4.4.4

итак openfire успешно поднят — я авторизовался, как

  • имя пользователя: admin
  • пароль: 712mbddr@

и нажимаю «Войти»

Итак openfire успешно поднят — я авторизовался

Шаг №3: Произвел обновление Openfire до 4.6.0

Шаг №4: На систему с Zabbix 5.0 установил клиент sendxmpp опираясь на заметку Как настроить консольный Jabber клиент

Шаг №5: Создаю скрипт отправки сообщения через клиент sendxmpp на OpenFire:

ekzorchik@srv-zabbix:~$ sudo nano /usr/lib/zabbix/alertscripts/jabber.sh
#!/bin/bash
username="alert"
hostname="srv-openfire.polygon.lan"
password="Aa1234567"
#./jabber.sh test ekzorchik@srv-openfire.polygon.lan message
echo "$3" | /usr/bin/sendxmpp -u $username -j $hostname -p $password -s "$2" -i "$1" -t -n
ekzorchik@srv-zabbix:~$ ls -l /usr/lib/zabbix/alertscripts/
total 4
-rw-r--r-- 1 root root 26 Oct 29 14:16 jabber.sh
ekzorchik@srv-zabbix:~$ sudo chmod +x /usr/lib/zabbix/alertscripts/jabber.sh
ekzorchik@srv-zabbix:~$ sudo chown zabbix:root /usr/lib/zabbix/alertscripts/jabber.sh
ekzorchik@srv-zabbix:~$

Проверяю его работу:

ekzorchik@srv-zabbix:~$ sudo /usr/lib/zabbix/alertscripts/jabber.sh ekzorchik@srv-openfire.polygon.lan test passwd

в клиент на котором зарегистрирована учетная запись ekzorchik приходит вот такое сообщение от учетной записи alert:

Сообщения через скрипт приходят на клиент jabber

Делаю вывод что скрипт работает.

Шаг №6: Теперь настройки в самой системе мониторинга Zabbix 5.0 LTS на работу, что уведомления о проблемах будут идти через Jabber

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

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

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

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

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

Где

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

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

Настройки "Способ оповещений" в Zabbix 5.0

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

Текущий способ оповещения - это Jabber.sh

то инициализируется отправка работы скрипта через Zabbix

Указываю

  • Отправлять на: ekzorchik@srv-openfire.polygon.lan
  • Тема: Текстовая тема
  • Сообщение: Это текстовое сообщение от Zabbix

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

Совершаяю "Тест способа оповещения "jabber.sh""в ответ получаю сообщение «Успешное тестирование способа оповещения»

Успешное тестирование способа оповещения

Так, пришло ли сообщение само?

Пришло, но с косяком, русские буквы клиентом не корректно у меня отображаются:

Косяк, тема не кодируется на русском

Это мелочи, главное что Zabbix взаимодействует со скриптом отправки уведомления.

На заметку: С учетом что тема не отображается на русском корректно, в настраиваемых шаблонах оповещения я буду все указывать на Английском.

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

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

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

  • Тип: jabber.sh
  • Отправлять на: ekzorchik@srv-openfire.polygon.lan
  • Когда активен: 1-7,00:00-24:00
  • Использовать, если важность: Высокая, Чрезвычайная
  • Активировано: отмечаю галочкой

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

Настройки оповещения для учетной записи Admin

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

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

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

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

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

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

вкладка "Операции"

(Операции) нажимаю "Добавить"

  • Тип операции: Отправить сообщение
  • Шаги: 1 — 1
  • Длительность шага: 0
  • Отправлять пользователям: Добавить и отмечаю учетную запись Admin
  • Отправлять только через jabber.sh

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

здесь же (Операции восстановления) нажимаю "Добавить" и в итоге получается:

Операции отправки сообщения при проблемах

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

Итог настроенных Действий:

Итог настроенных действий

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

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

Тип сообщения: Проблема
Тема: Fixed problem {EVENT.TIME} on {EVENT.DATE}
Сообщение: Problem name: {EVENT.NAME}
Hostname: {HOST.NAME}
Alarm level: {EVENT.SEVERITY}
Trigger on: {TRIGGER.EXPRESSION}
Current reading: {{HOSTNAME}: {TRIGGER.KEY} .last (0)}
Description: {TRIGGER.DESCRIPTION}
Problem ID: {EVENT.ID} {TRIGGER.URL}

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

Тип сообщения: Восстановление проблемы
Тема: Fixed problem {EVENT.DURATION}: {EVENT.NAME} on {EVENT.DATE}
Сообщение: The issue has been fixed by {EVENT.RECOVERY.TIME} on {EVENT.RECOVERY.DATE}
Problem name: {EVENT.NAME}
Hostname: {HOST.NAME}
Alarm level: {EVENT.SEVERITY}
Trigger on: {TRIGGER.EXPRESSION}
Current reading: {{HOSTNAME}: {TRIGGER.KEY} .last (0)}
Problem ID: {EVENT.ID} {TRIGGER.URL}

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

Шаг №11: Теперь если срабатывает триггер, то мне ekzorchik@srv-openfire.polygon.lan на Jabber клиент приходит вот такое вот сообщение:

о проблеме:

Пример сообщения в jabber о проблеме

О восстановлении проблемы

Пример сообщения в jabber о восстановлении проблемы

На заметку: Вот что значит если разобрал, как настроить оповещение через Telegram, а здесь уже все опирается на ту заметку. Круто!!!

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

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