Zabbix и отправка уведомлений в Slack


Slack — крутой и популярный мессенджер, имеющий успех у программеров и компаний с полным циклом разработки. Для простого «пообщаться» скорее всего он не подходит. Позволю себе назвать этот софт «техническим мессенджером».
Работа айтишников изобилует различной автоматизацией и уведомлениями. Часто бывает так, что эти самые уведомления сыпятся и на почту, и в Telegram и в другие всевозможные приложения. Переключение между этими приложениями отвлекает и сбивает с толку.
По этому было принято настроить систему мониторинга Zabbix на отправку всех уведомлений в отведённый для этого канал в Slack. Благо для этого есть всё необходимое. Смотрим

Первый шаг
Для начала нужно создать канал в Slack. Это очень просто и делается в пару кликов

Второй шаг
После этого нужно создать так называемый webhook. Для этого переходим по ссылке, выбираем канал, в который хотим получать уведомления и нажимаем «Создать»

Получаем все необходимые настройки и ссылку-токен. Тут можно внести несколько правок вроде имени приложения или сменить ему иконку

На этом настройки на стороне Slack закончены. Необходимо сохранить ссылку-токен, она нам ещё пригодится.
Третий шаг
Перед написанием скрипта нужно определиться куда его складывать. Для этого выполним поиск по файлу конфигурации. У вас месторасположения может отличаться.

# grep "Alert" /usr/local/etc/zabbix32/zabbix_server.conf
### Option: AlertScriptsPath
AlertScriptsPath=/usr/local/etc/zabbix32/zabbix/alertscripts

Как видим скрипт нужно располагать в директории /usr/local/etc/zabbix32/zabbix/alertscripts
Скрипт отправки уведомлений
В данном случае мы будем использовать curl для отправки POST-запроса с несколькими переменными.
Немного объяснений
а) в переменную KEY запишем наш токен, который будет использоваться для авторизации приложения. Особо не буду на этом останавливаться. Подробнее можно прочитать в документации.
б) TO — указатель куда отправлять сообщения. в Slack все каналы начинаются со знака #, а имена пользователей со знака @. То есть тут мы можем выбирать в какой канал или кому персонально отправить уведомление.
в) Переменная SUB обозначает тему сообщения. В триггерах Zabbix-а есть две темы — PROBLEM и OK — указывающие соответственно на появление и устранение проблемы.
Поскольку программисты в основном сидят за компом и их работу можно назвать скучной, то я решил немного разнообразить уведомления и добавить смайликов в зависимости от темы триггера. Если сообщение проблемное, то в теме пугающийся смайлик. Если сообщение об исправлении, то смайлик OK. Во всех других случаях просто палец вверх.
г) MESS это сокращение от message. В эту переменную записываем тело сообщения.
Ну и собственно скрипт

#!/bin/bash
KEY="https://hooks.slack.com/services/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"
TO="$1"
SUB="$2"
MESS="$3"

if [[ $SUB == 'PROBLEM' ]]
then
	ICON=":scream:"
elif [[ $SUB == 'OK' ]]
then
	ICON=":ok_hand:"
else
	ICON=":point_up_2:"
fi

/usr/local/bin/curl -X POST --data-urlencode "payload={\"channel\": \"$TO\", \"username\": \"TradeNarK\", \"text\": \"$ICON $SUB\n$MESS\"}" $KEY

Даём скрипту права на исполнение

# chmod +x slack.sh

Четвёртый шаг
Проверка

# ./slack.sh "@gleb" Other "Some text"
# ./slack.sh "@gleb" PROBLEM "Some text"
# ./slack.sh "@gleb" OK "Some text"

И получаем вот такую красоту

Со скриптом тоже закончили.
Настраиваем Zabbix. Тут три пункта — Настройка способов оповещений, создание у пользователя оповечения с контактом и настройка самих триггеров.
Пятый шаг
Переходим в Администрирование — Способы оповещений — Создать способ оповещения
И делаем как на картинке ниже
Имя — любое, главное что бы вам было понятно
Тип — Скрипт
Имя скрипта — slack.sh. Если вы назвали иначе — укажите ваше имя файла
Дополнительные параметры
{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}
Параметры нужно создавать именно в таком порядке

Шестой шаг
Переходим в Администрирование — Пользователи. Выбираем нашего пользователя и переходим во вкладку Оповещения. Нажимаем Добавить и настраиваем. Главное — параметр «Отправлять на». В этом поле указывается название канала или пользователя
Напомню, имя канала начинается с #, а имя пользователя с @

Седьмой шаг
Самое последнее что нам нужно сделать это настроить сами триггеры. А если быть более точным, то действия при срабатывании триггеров. ПОдразумевается что они у вас уже настроены корректно и работают.
Переходим в Настройка — Действия. Выбираем триггер, переходим на вкладку Операции и нажимаем Добавить.
В этой форме основное это Тип операции (Отправить сообщение), Пользователь (тот которого мы настроили) и Отправить только через.

После всех этих действий в Slack приходят вот такие замечательные уведомления

Поздравляю всех с хорошим курсом Bitcoin и желаю побольше позитивных сообщений.
Да, если что в футере есть адрес для благодарности в виде Bitcoin-перевода 🙂

Добавить комментарий