Отправка оповещений в Slack

Отправка оповещений в 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

Оптимизация настроек Zabbix

Настройка Grafana с Graphite/Zabbix/Prometheus/MySQL/InfluxDB/Elasticsearch/CloudWatch для сбора и отображения метрик в 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:

zabbix нотификация в slack

Прописываем:

  • Выбираем 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:

Добавдение юзера для нотификации в слак

И проверяем работу! Должно выйти что-то подобное:

zabbix + slack

На этом, у меня все. Статья «Отправка оповещений в Slack» завершена.

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *