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-перевода 🙂
Все сделал по мануалу но сообщения в слак не отправляются (скрипт работает), где может быть проблема?
Что у вас в Zabbix — Отчеты — Журнал действий?