Кроме отправки уведомлений бот также будет закреплять новые(pinChatMessage) и откреплять неактуальные(unpinChatMessage) уведомления.
Прежде всего нужен Telegram бот. Ботов делает папа ботов-BotFather
Бота нужно добавить в супер группу и дать права на закреплении сообщений.
Затем на сервере мониторинга кладем скрипт отправки уведомлений в папку указанную в настройка zebbix сервера. Обычно это /usr/lib/zabbix/alertscripts
#!/bin/bash
SGRESPONSE="~/sgrespons.txt"
LASTEVENT="~/lastevent.txt"
KEY="AAAAAASSSSSSDDDDDDFFFFFGGGGGHHHHHJJJJJKKKKLLL" # Ключ телеграм-бота
TIME="20"
URL="https://api.telegram.org/bot$KEY"
event_type=$(echo $2 | cut -d':' -f1)
event_id=$(echo $2 | cut -d':' -f2)
respons=$(curl -s --max-time $TIME -d "chat_id=$1&disable_web_page_preview=1&text=$3" \
$URL/sendMessage > $SGRESPONSE)
status=$(cat $SGRESPONSE | grep -oP '(?<=ok":)[^,]+')
if [ $event_type == "problem" ] ; then
if [ $status == "true" ] ; then
message_id=$(cat $SGRESPONSE | grep -oP '(?<=message_id":)[^,]+')
echo $event_id > $LASTEVENT
curl -s --max-time $TIME -d "chat_id=$1&disable_notification=1&message_id=$message_id" \
$URL/pinChatMessage
fi
elif [ $event_type == "resolved" ] ; then
old_event_id=$(cat $LASTEVENT)
if [ $old_event_id == $event_id ] ; then
curl -s --max-time $TIME -d "chat_id=$1" $URL/unpinChatMessage
fi
fi
В заббиксе нужно добавить новый тип отправки уведомлений и новое действие.
Важно указать в теме(Subject) problem:{EVENT.ID} для новых и resolved:{EVENT.ID} для решенных оповещений. Из темы скрипт будет забирать ID события и тип оповещения заббика и принимать на их основе решение закреплять/откреплять сообщение в группе. Таким образом откреплено будет только утратившее актуальность оповещение.
Комментариев нет:
Отправить комментарий