Задача: Хочу как факультатив разобрать как уведомлять о происшествиях не в 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
успешно поднят — я авторизовался, как
имя пользователя: admin
пароль: 712mbddr@
и нажимаю «Войти»
Шаг №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
:
Делаю вывод что скрипт работает.
Шаг №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
Указываю
Отправлять на: ekzorchik@srv-openfire.polygon.lan
Тема: Текстовая тема
Сообщение: Это текстовое сообщение от Zabbix
и нажимаю «Тест»
в ответ получаю сообщение
«Успешное тестирование способа оповещения»
Так, пришло ли сообщение само?
Пришло, но с косяком, русские буквы клиентом не корректно у меня отображаются:
Это мелочи, главное что 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
Использовать, если важность: Высокая, Чрезвычайная
Активировано: отмечаю галочкой
Скриншот для наглядного представления, как выглядят настройки способа оповещения для учетной записи:
И нажимаю "Обновить"
.
Шаг №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
клиент приходит вот такое вот сообщение:
о проблеме:
О восстановлении проблемы
На заметку: Вот что значит если разобрал, как настроить оповещение через Telegram
, а здесь уже все опирается на ту заметку. Круто!!!
Итого по заметке. Она работоспособная и для моего домашнего «Умного дома»
и центра где совмещено хобби и работа система мониторинга Zabbix 5.0
подходит. А еще я в последнее время начал стараться стандартизировать и оптимизировать свои шаблоны, скрипты и конечно же заметки.
На этом заметку пока считаю завершенной, с уважением автор блога Олло Александр aka ekzorchik.