docs:zabbix:slack
Содержание
Zabbix + Slack
Обзор
В дополнение к уже существующему варианту с pushbullet, приведу пример с отправкой сообщений в Slack.
Содержание
Скрипт накидал на скорую руку (при том, что я сейчас почти всё делаю на powershell, bash зашел с трудом) и сейчас нет времени его подробно рассписывать. На выходе получится что-то вроде этого:
- В Slack настраиваете интеграцию
Incoming WebHooks
и получаете специальную ссылку, которую нужно добавить в скрипт (в самом низу) - Загрузите иконку с именем
zabbix
- Скрипт ниже. Исправить под себя и положить в
/usr/local/share/zabbix/alertscripts/
(разрешите выполнение) - В самом Zabbix (подразумивается, что у вас 3 версия и выше)
- В действиях определяем
- Тему по умолчанию
[{TRIGGER.STATUS}] {TRIGGER.NAME}
- Сообщение по умолчанию
HOST: {HOST.NAME} TRIGGER_NAME: {TRIGGER.NAME} TRIGGER_STATUS: {TRIGGER.STATUS} TRIGGER_SEVERITY: {TRIGGER.SEVERITY} DATETIME: {DATE} / {TIME} ITEM_ID: {ITEM.ID1} ITEM_NAME: {ITEM.NAME1} ITEM_KEY: {ITEM.KEY1} ITEM_VALUE: {ITEM.VALUE1} EVENT_ID: {EVENT.ID} TRIGGER_URL: {TRIGGER.URL} TRIGGER_DESCRIPTION: {TRIGGER.DESCRIPTION}
- Делаем скрипт оповещения по официальной инструкции (и с параметрами из неё). После чего создаём пользователя (например
Slack
) и в вариантах оповещения выбираем новый скрипт, в поле отправлять куда пишем имя канала (напримерgeneral
, нез решетки). Всё.
#!/bin/bash zabbix_baseurl="https://zabbix.example.com" channel="$1" icon=":zabbix:" username="ZABBIX" title="$2" params="$3" pretext="$4" host="`echo \"${params}\" | grep 'HOST: ' | awk -F'HOST: ' '{print $2}' | tr -d '\r\n\'`" trigger_name="`echo \"${params}\" | grep 'TRIGGER_NAME: ' | awk -F'TRIGGER_NAME: ' '{print $2}' | tr -d '\r\n\'`" trigger_status="`echo \"${params}\" | grep 'TRIGGER_STATUS: ' | awk -F'TRIGGER_STATUS: ' '{print $2}' | tr -d '\r\n\'`" severity="`echo \"${params}\" | grep 'TRIGGER_SEVERITY: ' | awk -F'TRIGGER_SEVERITY: ' '{print $2}' | tr -d '\r\n\'`" trigger_url="`echo \"${params}\" | grep 'TRIGGER_URL: ' | awk -F'TRIGGER_URL: ' '{print $2}' | tr -d '\r\n\'`" datetime="`echo \"${params}\" | grep 'DATETIME: ' | awk -F'DATETIME: ' '{print $2}' | tr -d '\r\n\'`" item_value="`echo \"${params}\" | grep 'ITEM_VALUE: ' | awk -F'ITEM_VALUE: ' '{print $2}' | tr -d '\r\n\'`" event_id="`echo \"${params}\" | grep 'EVENT_ID: ' | awk -F'EVENT_ID: ' '{print $2}' | tr -d '\r\n\'`" item_id="`echo \"${params}\" | grep 'ITEM_ID: ' | awk -F'ITEM_ID: ' '{print $2}' | tr -d '\r\n\'`" msg="`echo \"${params}\" | grep 'TRIGGER_DESCRIPTION: ' | awk -F'TRIGGER_DESCRIPTION: ' '{print $2}' | tr -d '\r\n\'`" item_value='`'$item_value'`' trigger_chart="${zabbix_baseurl}/history.php?action=showgraph&itemids=${item_id}" if [[ "$severity" == 'Информация' ]]; then color='#7499FF' elif [ "$severity" == 'Предупреждение' ]; then color='#FFC859' elif [ "$severity" == 'Средняя' ]; then color='#FFA059' elif [ "$severity" == 'Высокая' ]; then color='#E97659' elif [ "$severity" == 'Чрезвычайная' ]; then color='#E45959' else color='#97AAB3' fi if [[ "$trigger_status" == 'OK' ]]; then color='good' fi ts=$(date +%s) request_body=$(< <(cat <<EOF { "channel": "#$channel", "username": "$username", "icon_emoji": "$icon", "mrkdwn": true, "attachments": [ { "fallback": "$title", "color": "$color", "pretext": "$pretext", "author_name": "$host", "author_link": "$trigger_chart", "author_icon": "https://cdn0.iconfinder.com/data/icons/free-misc-icon-set-2/512/graph_up_arrow-16.png", "title": "$title", "title_link": "$trigger_url", "text": "$msg", "fields": [ { "title": "Важность", "value": "$severity", "short": true }, { "title": "Значение", "value": "$item_value", "short": true } ], /*"image_url": "http://www.zabbix.com/favicon.ico1",*/ /*"thumb_url": "http://www.zabbix.com/favicon.ico1",*/ "footer": "zabbix.kamov.ru", "footer_icon": "http://www.zabbix.com/favicon.ico", "ts": "$ts", "mrkdwn_in": [ "test", "pretext", "fields" ] } ] } EOF )) curl -X POST \ -H 'Content-type: application/json' \ --data "$request_body" \ https://hooks.slack.com/TXXXXX/BXXXXX/XXXXXXXXXX # поменяйте ссылку выше на свою!
docs/zabbix/slack.txt · Последнее изменение: 09.10.2017 18:23 — philip
Обсуждение
Добрый день. Все сделал как в статье, но в slack поля важность и значение пустые, что еще надо настроить?
Ух. Я уже и забыл что и как делал.
Но похоже в статье я забыл упомянуть о том, что нужны дополнительные действия в «Действиях». А точнее определенный формат сообщения. Обновил пост, пункт 4а.
Спасибо. Я вчера до ночи разгадывал передаваемые параметры :)
Загрузите иконку с именем zabbix - откуда и куда загрузить иконку?
Вам нужно загрузить рисунок размером не более 128х128, который будет отображаться при парсинге кода смайла
:zabbix:
. Делается это в Slackhttps:⁄⁄<ваш_url>.slack.com/customize/emoji