
Отправка оповещений в Slack
Как по мне, — хорошая идея использовать slack для отправки различных нотификаций с заббикс сервера. Надеюсь все знают о slack и не стоит заострять внимания на этом. совсем недавно я познакомился с месседжером под названием SLACK. В нынешнее время, их очень моно. Но именно этот, обладает ряд преимуществ над другими.
Отправка оповещений в Slack
Я приведу наглядные примеры как можно выполнить интеграцию ваших скриптов со слаком.
Для начала, создаем аккаунт в slack-е. Создаем нужный для алертинга канал.
Отправка zabbix оповещений в Slack
Первом делом что стоит сделать, так это создать аккаунт в slack и создать все необходимое ( учетную запись, создать канал, добавить пользователей в канал).
Установить заббикс, я описывал этот процесс на своем сайте, вот полезные статьи по теме:
Установка Zabbix на Debian/Ubuntu/Linux Mint
Установка Zabbix на RedHat/CentOS/Fedora
Установка Zabbix + nginx+php-fpm + mariaDB в Unix/Linux
Установка Zabbix-agent в Unix/Linux
-===СПОСОБ 1 — Установка плагина для zabbix ===-
zabbix-notify — это плагин для отправки уведомлений с zabbix-server в PagerDuty, Hipchat, Slack.
Для его работы, необходимо установить дополнительное ПО.
Debian/Ubuntu:
# apt-get install libwww-perl libjson-xs-perl -y
RedHat/CentOS/Fedora:
# yum install perl-JSON-XS perl-libwww-perl perl-LWP-Protocol-https -y
Используя Cpan:
# PERL_MM_USE_DEFAULT=1 perl -MCPAN -e 'install Bundle::LWP' and PERL_MM_USE_DEFAULT=1 perl -MCPAN -e 'install JSON::XS
Используя cpanm:
# cpanm install LWP and cpanm install JSON::XS
Скачиваем архив:
# cd /usr/local/src && wget https://codeload.github.com/v-zhuravlev/zabbix-notify/zip/master -O zabbix-notify-master.zip && unzip zabbix-notify-master.zip
Переходим в папку и выполняем:
# cd zabbix-notify-master && perl Makefile.PL INSTALLSITESCRIPT=/usr/lib/zabbix/alertscripts && make test && make install
Нужно создать ко что на слаке… Открываем:
https://YOUR_ACC_NAME.slack.com/apps
Ищем «Bots» -> «Add Configuration» -> Прописываем название бота ( я взял себе @zabbix_bot).
PS: Сохраните API Token, Он имеет вид -xoxb-202579554067-rcOej1t6Q9x7oBc1kBKmnРРО
Я ИЗМЕНИЛ СВОЙ, ЧТОБЫ НЕЛЬЗЯ БЫЛО ЕГО ИСПОЛЬЗОВАТЬ!
В созданном канале, выполняем:
/invite @zabbix_bot
Выполним тестирование…
# /usr/lib/zabbix/alertscripts/zbx-notify @YOUR_ACC_NAME_ON_SLACK 'PROBLEM:myHOSTNAME Temperature Failure on DAE5S Bus 1 Enclosure 1' 'Host: myHOSTNAME \ Trigger: PROBLEM: myHOSTNAME Temperature Failure on DAE5S Bus 1 Enclosure 1: High \ Timestamp: 2016.03.14 11:57:10 YEKT eventid: 100502' --api_token=YOUR_TOKEN_HERE --slack
- @YOUR_ACC_NAME_ON_SLACK — Пользователь в слаке.
- YOUR_TOKEN_HERE — Токен.
Или:
# ./zbx-notify @YOUR_ACC_NAME_ON_SLACK 'OK:myHOSTNAME Temperature Failure on DAE5S Bus 1 Enclosure 1' 'Host: myHOSTNAME \ Trigger: OK: myHOSTNAME Temperature Failure on DAE5S Bus 1 Enclosure 1: High \ Timestamp: 2016.03.14 11:57:10 YEKT eventid: 100502' --api_token=YOUR_TOKEN_HERE --slack
Открываем заббикс и переходим: Administration -> Media Types -> Create media type:
Прописываем:
- Выбираем Type: Script
- Выбираем Name: zbx-notify
- Выбираем Script name: zbx-notify
- Прописываем параметры:
1: {ALERT.SENDTO}
2: {ALERT.SUBJECT}
3: {ALERT.MESSAGE}
4: —api_token=YOUR_TOKEN_HERE
5: —slack
Если в заббикс нет юзера, то создайте его для отправки уведомлений, после чего, — подключаем канал:
Send to — Заббикс канал в слаке!
Вообще, данный скрипт умеет отсылать уведомления и в HipChat/PageDuty. Но мне не приходилось настраивать интеграцию именно для них. возможно, я приведу примеры по установке для других служб, но будет это значительно позже.
-===СПОСОБ 2 — Используем простой bash скрипт ===-
Нужно создать web-hook, для этого открываем в браузере:
https://YOUR_ACC_NAME.slack.com/apps
Где, YOUR_ACC_NAME — созданный слак аккаунт. Далее, в поле для поиска, вводим :
Incoming WebHooks
Нажимаем на «Add Configuration» — > выбираем нужный канал ( его нужно создать было) -> Добавить Web-Hooks
Сохраните себе где-то Webhook URL (Он будут нужен попозже).
Открываем консоль на zabbix сервере и проверяем параметр:
# cat /etc/zabbix/zabbix_server.conf | grep -E "AlertScriptsPath"
Вывод:
### Option: AlertScriptsPath # AlertScriptsPath=${datadir}/zabbix/alertscripts AlertScriptsPath=/usr/lib/zabbix/alertscripts
Собственно, у меня папка для скриптов — /usr/lib/zabbix/alertscripts.
Напишем простой скрипт для отправки уведомлений:
# vim /usr/lib/zabbix/alertscripts/slack.sh
В него, прописываем:
#!/bin/env bash -x webhook_url=$1 message=$2 curl -k -X POST -d "payload={\"channel\":\"zabbix\",\"username\":\"zabbix-server\", \"text\":\"$message\",\"icon_emoji\":\":ghost:\"}" $webhook_url
В нем нужно изменить название канала, можно смайл.
Назначаем ему права на исполнение:
# chmod +x /usr/lib/zabbix/alertscripts/slack.sh
Переходим к настройке заббикса. Открываем URL -> Administration > Media Types > create media type:
Прописываем нужные поля. Создаем пользователя и говорим чтобы он отсылал все на канал. Для этого, открываем Administartion -> Users -> Media:
И проверяем работу! Должно выйти что-то подобное:
На этом, у меня все. Статья «Отправка оповещений в Slack» завершена.