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


Мониторинг серверов и сетевой инфраструктуры при помощи Zabbix Rocket Chat Server - бесплатный корпоративный мессенджер
alert cv linux rocket rocketchat rocket.chat send zabbix сервер
 
 

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


(последние правки 3 недели, 5 дней)

В своей статье, - использование 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
Моя официальная страница на FaceBook
Мой микроблог в твиттер

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

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

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


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

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

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


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

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

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


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

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

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


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

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

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


Как вы наверное понимаете, бесплатно сейчас работать никто не будет и если ответ на ваш вопрос потребует больше трех минут времени и вам требуется полноценная консультация, то расценки на мои услуги представленны ниже.


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

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