Zabbix. Отправка триггера с комментарием

Приветствую! Решил поделиться небольшим скрипом (немного модифицированный оригинальный) по отправке уведомлений в Zabbix’е с пользовательскими комментариями.Суть задачи: на работе используется Zabbix в основном для мониторинга удаленных сетей (доступность, немного качества). При отсутствии связи с удаленной сетью по протоколам мы должны извещать об этом определенные отделы. Настроить обычную отправку почты не составило труда, но при такой отправке неясности у отделов хватало — по какой причине отключилась «сеть», как долго её не будет. Поэтому задался целью вставить в отсылаемое письмо комментарий водимый в дашборде при подтверждении триггера.По сути, это тот же скрипт, что лежит в официальной документации Zabbix’а с одной небольшой вставкой: #! /bin/bash to=$1 #адресат сообщения subject=$2 #тема сообщения body=$3 #текст сообщения status=»$(echo $body | cut -d\; -f3)» #статус триггера, используется для if

text0='Сетевое оборудование на площадке, по адресу: ' text1='не доступно более 30 минут.' text2='Статус:' text3='Важность:' text4='Сведения:' text5='Дата и время возникновения проблемы:' text6='Подробности о причинах отключения площадки можно узнать по телефону: ХХХХ' text7='Original event ID:' text8='Комментарий сотрудника ИТ:' text9='Дата и время решения проблемы:'

ack=`echo «select message FROM acknowledges WHERE eventid='$(echo $body | cut -d\; -f1)'» | mysql -uuser -ppassword -Dzabbix` #собвственно запрос на выборку подтверждения

if [[ $status = «PROBLEM» ]]; then #if-ать нужно, для того что бы можно было выставить разные тексты на возникновение и восстановление триггера

cat <

$text4 $text5 $(echo $body | cut -d\; -f5) $(echo $body | cut -d\; -f6) $text6 $text8 $ack

$text7 $(echo $body | cut -d\; -f1) EOF

else cat <

$text4 $text9 $(echo $body | cut -d\; -f5) $(echo $body | cut -d\; -f6) $text6 $text8 $ack

$text7 $(echo $body | cut -d\; -f1) EOF fi Теперь про настройку действий: d96c0bd7d52a44e7a67d6638e63f14e6.jpg68508805f11341499bcf8ad3f14a663a.jpgc4704e18f4ab495cb0377a4fd938ebfb.jpg6e4c8e8ef76640c0b03fa014e6ae50a2.jpgВ моем случае, отправка сообщения происходит спустя 30 минут, после возникновения триггера, в связи с тем, что требуется время для уточнения информации о причинах недоступности сети и ее устранения. По истечении 30 минут, если проблема не устранена, происходит уведомление пользователей, находящихся в группе «notification».

Недоработки скрипта:1) Скрипт не понимает многостроковые комментарии. В этом случае он присылает текст во вложении. Кто знает как исправить — поделитесь мыслью.2) Т.к. я, можно сказать единственный, кто взаимодействует с фронтэндом заббикса — то не делал вставку автора комментария. Но это в принципе реализуемо:

userid=`echo «select userid FROM acknowledges WHERE eventid='$(echo $body | cut -d\; -f1)'» | mysql -uuser -ppassword -Dzabbix` user=`echo «select alias [можно связку полей name и surname — это имя и фамилия соответственно] FROM users WHERE userid=$userid» | mysql -uuser -ppassword -Dzabbix` 3) Сделано через стандартный mail, можно переделать через mutt, что бы добавить html и сделать все красиво.Теперь об особенностях. Местоположение хоста берется из «Инвентарные данные» — «Местоположение«Разделитель — »; «Текст прописанный в действии:

{EVENT.ID} {INVENTORY.LOCATION1} {TRIGGER.STATUS} {TRIGGER.SEVERITY} {EVENT.DATE} {EVENT.TIME}

В принципе можно менять все что угодно, главное найти соответствующий макрос, который можно посмотреть здесь

Я понимаю, что это слишком маленькое исправление, но возможно — кому-нибудь пригодится.

© Habrahabr.ru