Настройка отправки оповещений Zabbix в чат Rocket.Chat

by Anton Chernousov aka GITA-DEV


Опубликовано: 21 Май 2018 (последние правки 1 неделя, 2 дня)


Настройка отправки оповещений Zabbix в чат Rocket.Chat

В своей статье, - использование Rocket.Chat для создания чата оперативных оповещений, я не описал как именно можно при помощи моей утилиты для работы с Rocket.Chat, отправить Zabbix-оповещение. Я так понимаю, что тема заинтересовала несколько человек и придется немного заострить на этом внимание.

Я получил несколько вопросов на тему отправки Zabbix-оповещений в чат Rocket.Chat и сейчас я конечно расскажу подробнее как это можно сделать. Прежде всего вам необходимо настроить консольную утилиту для отправки сообщений в чат Rocket.Chat которую я подробно описывал в статье "Использование Rocket.Chat для создания чата оперативных оповещений".

Отправка сообщений из Linux-консоли в чат Rocket.Chat

Отправка сообщений из консоли Linux

Первое, на что стоит обратить внимание, это то, что Zabbix запущен от имени одноименного пользователя и вам необходимо убедиться, что этот пользователь сможет отправлять сообщения. У него должно хватить прав на запуск скрипта и чтение файла конфигурации.

# su zabbix -s /bin/bash
$ echo "Hello from Zabbix" | /opt/rocket-send/rocketsend.py send

Убедившись, что прав доступа хватает, переходим к настройке собственно Zabbix.

Настройка Zabbix для отправки оповещений

Я уже рассказывал про настройку Zabbix для отправки оповещений о сбоях по электронной почте и будем исходить из мнения, что оповещения вы уже настроили согласно предыдущих моих заметок и нам требуется только добавить дополнительный агент отправки сообщений.

Отправка оповещений Zabbix по электронной почте.

Для добавления дополнительного метода отправки сообщений, перейдите в WEB-интерфейс управления Zabbix и перейдите в раздел "Administration -> Media types".

Добавление медиа-типа в Zabbix

Естетсвенно, что все подряд в виде скрипта из Zabbix вызывать не получится и это логично, ведь тогда мы ставим под угрозу безопасность хоста. В конфигурации zabbix-сервера есть специальный раздел который описывает каталог из которого можно запускать скрипты оповещений (AlertScriptsPath).

AlertScriptsPath=/etc/zabbix/alerts/

Zabbix-сервер потребуется перезапустить для применения изменений конфигурации:

# systemctl restart zabbix-server

В этом каталоге мы разместим sh-скрипт который будет принимать данные которые ему передаст Zabbix в виде трех параметров командной строки.

to=$1
subject=$2
body=$3

Пока не очень понятно, поэтому перейдем сразу к практике, для создания нового способа оповещений используйте кнопку "Create media type" и задайте тип оповещения Script.

Настройка медиа-типа для Zabbix

Как вы видите, мы как раз и задали здесь три параметра который будут передаваться нашему скрипту (send-rocket.alert.sh), в моем случае можно не использовать параметр SENDTO, так как имя чата задано в конфигурационном файле Rocket.Send, но на всякий случай на будущее оставим. Согласно документации (https://www.zabbix.com/documentation/3.0/manual/config/notifications/media/script) есть всего три параметра которые мы можем передать:

  • {ALERT.SENDTO} - Адрес указанный в настройках пользователя для конкретного типа медиа (это не адрес электронной почты)
  • {ALERT.SUBJECT} - Тема сообщения
  • {ALERT.MESSAGE} - Само сообщение

Мой скрипт оповещений не может принимать текст отправляемог осообщения в виде параметра и мне пришлось написать скрипт посредник который я и указал в параметре Script name:

#!/bin/sh

to=$1
subject=$2
body=$3

cat <<EOF | rocketsend send
$subject
$body
EOF

Вот собственно и весь фокус и таким способом можно настроить отправку оповещений куда угодно, а не только в Rocket.Chat, но самое главное, обязательно добавьте этот тип медиа в настройки пользователя!

Добавьте новый тип медиа вашему пользователю

P.S. Если у вас, что-то пошло не так, то вы всегда можете повысить уровень отладки приложения и более подробно изучить лог-файл Zabbix-сервера, а отвечает за это параметр:

DebugLevel=4

Обратите внимание на статьи:


Использование Rocket.Chat для создания чата оперативных оповещений

Использование Rocket.Chat для создания чата оперативных оповещений

В предыдущей статье, под названием использование Rocket.Chat для создания чата оперативных оповещений я рассматривал простейший пример того как можно отправить сообщение в приватный чат Rocket.Chat. На самом деле в своих проектах я использую несколько модифицированную версию этого решения, более адаптированную к продакшн-решениям. Сегодня я как раз и хотел бы поговорить о том как я модифицировал рассмотренное ранее API для реализации так называемого оперативного чата.


Настройка Nginx-Front для работы с Rocket.Chat

Настройка Nginx-Front для работы с Rocket.Chat

В прошлой статье я рассказывал, что у меня после очередного обновления сломался клиент Rocket.Chat для Android и я думал, что это связано с устаревшей версией серверной части, но как оказалось на самом деле это было связано с некорректной конфигурацией Nginx.


Тестирование GIT-версии Rocket.Chat (Обновление Rocket.Chat)

Тестирование GIT-версии Rocket.Chat (Обновление Rocket.Chat)

Я активно использую в своей работе Rocket.Chat и честно говоря меня все устраивает, но недавно мне преподнесли небольшой сюрприз объявив мобильную версию для Android устаревшей фактически принудительно ее обновив, точнее они навязчиво рекомендовали обновиться при каждом запуске приложения и однажды я все же случайно нажал на обновление и в общем зря я это сделал ...


Отправка оповещений Django-приложения в приватный чат Rocket.Chat

Отправка оповещений Django-приложения в приватный чат Rocket.Chat

Вчера я подумал, что если я все же вернулся к использованию Rocket.Chat и он меня уже не так бесит как предыдущие версии, то можно настроить систему оповещений о событиях на сайте и сбоях в работе Django-приложения в приватный чат Rocket.Chat. Для Python быстро нашелся вполне работоспособный модуль который идеально подошел для отправки сообщений в приватные чаты.


RocketChat - Установка и настройка из репозитария (не docker)

RocketChat - Установка и настройка из репозитария (не docker)

Рано или поздно вам все равно придет в голову мысль о внутреннем корпоративном мессенджере полностью вам подконтрольном и настраиваемом. Я перепробовал много различных мессенджеров и в конце концов пришел к мнению, что Rocket.Chat подходит на эту роль лучше других. В типовом решении описанном на сайте Rocket.Chat вам просто предложат использовать подготовленный Docker-контейнер, но я честно говоря недолюбливаю докеры и мне ближе полностью подконтрольные мне контейнеры LXD.


Есть вопросы?
Спрашивайте и я обязательно вам отвечу!

* Поля обязательные для заполнения .

Блог это некоммерческий проект! Если вам понравился мой блог и то что я пишу помогло вам на практике, то можете сказать спасибо материально.