Для нужд моей задумки по настройке связки системы мониторинга на базе Zabbix 5.0 LTS
и jabber
сервиса в лице OpenFire 4.6.0
мне нужен какой-либо клиент который я могу использовать на srv-zabbix
чтобы он авторизовывался на OpenFire (srv-openfire)
и отсылал информацию адресатам группы (к примеру ранее я уже создал группу GROUP_ALERT
). В данную группу включены: Login: ekzorchik, alert, alektest
Шаг №1:
Подключаюсь по ssh
к системе на которой у меня развернут Zabbix 5.0 LTS
Шаг №2:
Смотрю, какой пакет можно использовать в репозитариях для работы через протокол XMPP
, к примеру воспользуюсь пакетом sendxmpp
ekzorchik@srv-zabbix:~$ apt-cache show sendxmpp | grep Version Version: 1.24-2 ekzorchik@srv-zabbix:~$ sudo apt-get install -y sendxmpp ekzorchik@srv-zabbix:~$ whereis sendxmpp sendxmpp: /usr/bin/sendxmpp /usr/share/man/man1/sendxmpp.1p.gz
Консольная утилита sendxmpp
позволяет отправлять сообщения по протоколу xmpp (попросту Jabber
) как отдельным получателям, так и chatrooms.
На заметку: За справкой, если отправлять сообщения буду через консоль, следует обратится к справочной системе: man sendxmpp
Шаг №3:
Чтобы отправить сообщение адресу без использования конфигурационного файла:
ekzorchik@srv-zabbix:~$ echo lin.ekzorchik.ru | sendxmpp -j srv-openfire.polygon.lan -u alert -p Aa1234567 alektest@srv-openfire.polygon.lan
если требуется отладка, то добавляем ключ «-d»
У меня есть настроенный jabber
клиент на смартфоне Honor 9X
и учетной записи alektest
приходит сообщение от alert
с телом в виде «lin.ekzorchik.ru»
Шаг №4:
Но можно не в одну строку указывать кому отправляем сообщение, а задействовать создаваемый конфигурационный файл утилиты sendxmpp:
ekzorchik@srv-zabbix:~$ nano ~/.sendxmpprc alert@srv-openfire.polygon.lan
Теперь нужно выставить на него такие права, чтобы этот файл мог читать только тот юзер, от имени которого будет запускаться SendXMPP:
ekzorchik@srv-zabbix:~$ chmod 600 ~/.sendxmpprc
если не выставить права, то при отправке:
ekzorchik@srv-zabbix:~$ echo lin.ekzorchik.ru | sendxmpp -t ekzorchik@srv-openfire.polygon.lan /home/ekzorchik/.sendxmpprc must not be accessible by others ekzorchik@srv-zabbix:~$
Теперь можно отправить сообщение и его увидят те кто состоят в группе от имени кого отправляю и кому отправляю:
ekzorchik@srv-zabbix:~$ echo lin.ekzorchik.ru | sendxmpp -t ekzorchik@srv-openfire.polygon.lan syntax error in line 1 of /home/ekzorchik/.sendxmpprc ekzorchik@srv-zabbix:~$
Так что не так? Из man sendxmpp
вычитал, что синтаксис ~/.sendxmpprc
следующий:
username: alert
jserver: srv-openfire.polygon.lan
port: 5222
password: Aa1234567
На заметку: 5222 — Порт, используемый протоколом SSL для шифрования трафика по сети Клиент — сервер Стандартный порт для подключения клиентов к серверу. На этом порту установлены текстовые соединения, которые, в зависимости от настраиваемых параметров безопасности, могут (или должны) быть обновлены до зашифрованных соединений.
А вот в более ранних версиях конфигурационный файл — это и была одна строчка по синтаксису:
With version 1.23 and older only one-line format is supported:
user@server password componentname
инициирую отправку текста lin.ekzorchik.ru
ekzorchik@srv-zabbix:~$ echo lin.ekzorchik.ru | sendxmpp -t ekzorchik@srv-openfire.polygon.lan Invalid or unreadable path specified for ssl_ca_path. at /usr/share/perl5/XML/Stream.pm line 641. ekzorchik@srv-zabbix:~$ sudo apt-get install ca-certificates ekzorchik@srv-zabbix:~$ sudo update-ca-certificates
Использую ключ «-n»
чтобы деактивировать проверку ssl
сертификата и инициирую отправку сообщения учетной записи ekzorchik:
ekzorchik@srv-zabbix:~$ echo lin.ekzorchik.ru | sendxmpp -n -t ekzorchik@srv-openfire.polygon.lan
Сообщение приходит:
Шаг №5:
Так, а если нужно отправить по формату:
Тема
Сообщение
смотрю опять справку man sendxmpp:
-s, --subject - тема отправляемого сообщения
-m, --message - текст отправляемого сообщения
-u, --username - имя пользователя
-p, --password - пароль пользователя
-j, --jserver - имя Вашего Jabber-сервера
-o,--component componentname
-t,--tls
Connect securely, using TLS
-e,--ssl
Connect securely, using SSL
-n,--no-tls-verify
Deactivate the verification of SSL certificates. Better way is to
use parameter --tls-ca-path with the needed path to CA
certificates.
-a,--tls-ca-path
Path to your custom CA certificates, so you can verificate SSL
certificates during connecting.
то команда отправки как в одну строку так и с использованием ~/.sendxmpprc
выглядит так:
ekzorchik@srv-zabbix:~$ sendxmpp -n -m "message" -s "subject" ekzorchik@srv-openfire.polygon.lan cannot open message file 'message': No such file or directory
Так чтобы отправить текст сообщения его нужно сперва сохранить, как файл, а после приложить к отправке:
ekzorchik@srv-zabbix:~$ cat /etc/passwd | grep ekzorchik > passwd ekzorchik@srv-zabbix:~$ sendxmpp -n -m "passwd" -s "/etc/password ekzorchik" ekzorchik@srv-openfire.polygon.lan
итого от alert@srv-openfire.polygon.lan
пришло сообщение:
Так чтобы отправить не сохраненный файл, а приложить сам файл:
ekzorchik@srv-zabbix:~$ cat /etc/passwd | sendxmpp -n ekzorchik@srv-openfire.polygon.lan
итого от alert@srv-openfire.polygon.lan
пришло сообщение:
Так, а теперь строка отправки сообщения в одну строку без использования ~/.sendsmpprc:
ekzorchik@srv-zabbix:~$ sendxmpp -j srv-openfire.polygon.lan -u alert -p Aa1234567 -s "privet" -m "passwd" alektest@srv-openfire.polygon.lan
и сообщение на смартфон где у меня настроена учетная запись alektest
успешно пришло.
Шаг №6:
В процессе работы отправки сообщения было зафиксировано, что отправка подвисла:
ekzorchik@srv-zabbix:~$ sendxmpp -j srv-openfire.polygon.lan -u alert -p Aa1234567 -s "Wake UP!" alektest@srv-openfire.polygon.lan ^C ekzorchik@srv-zabbix:~$
Дело в том что опция -s должна быть в паре с опцией -m
, а если отдельно то не работает.
Либо message
указывать перед утилитой sendxmpp
ekzorchik@srv-zabbix:~$ cat /etc/group | sendxmpp -j srv-openfire.polygon.lan -u alert -p Aa1234567 -s "group" alektest@srv-openfire.polygon.lan
тогда все успешно работает.
Думаю, пока данных шагов вполне достаточно, отдельно по отправке уведомлений через Zabbix 5.0 LTS
буду смотреть отдельно когда прорабатывать и документировать связку. А пока заметка завершена, с уважением автор блога Олло Александр aka ekzorchik.