Zabbix. Видео урок №4. Настройка email оповещений. Часть 2 (zabbix gmail)
In видео уроки, системы мониторинга, ubuntu, zabbix With 24 comments Предполагается что вы уже ознакомились с первой частью и вы уже можете отправлять сообщения из консоли вашего zabbix сервера. Если же вы еще настроили ssmtp, то читать дальше – нет смысла.
Перейдем к описанию настроек. Имеется сервер с zabbix 2.0 установленный в virtualbox.
Два сетевых интерфейса, один настроен как NAT(для интернета), другой как virtualbox host-only(для подключения к серверу). Создан хост (мой компьютер) и к нему привязан шаблон с двумя элементами данных (ping и loss). Подробная инструкция о том, как создать шаблон с элементами данных описана в предыдущем уроке.
Здесь же я просто приведу несколько скриншотов Хост
Шаблон
Элемент данных ping
Элемент данных loss
Таким образом у вас должен быть хотя бы один узел сети, который успешно мониторится с помощью ping-a.
Настроим email оповещение по срабатыванию триггера, к примеру когда пропал ping до узла сети. Для этого сначала создадим сам триггер. В настройкам узла сети(который мониторится) перейдем в вкладку Триггеры и создадим новый
Зададим имя триггера, степень важности и напротив пункта “Выражение” нажмем кнопку “Добавить”
Выберем элемент данных ping
В итоге должно получиться что-то в этом роде:
Жмем “вставить”. И сохраняем
Должно получиться следующее:
Если в колонке “ошибка” у вас горит красный квадрат, просто обновите страницу через секунд 5-10.
Триггер создан. Приступим к настройкам оповещений. Переходим Администрирование -> Способы оповещений -> Email и выставляем следующие параметры
Теперь необходимо задать папку, где будет лежать наш скрипт. Для этого правил файл конфигурации zabbix-сервера
sudo vi /usr/local/etc/zabbix_server.conf
Находим там строчку AlertScriptsPath, раскомментируем ее или допишем ниже, указав нужный нам путь
После этого необходимо перезагрузить zabbix-сервер.
Создадим сам скрипт в указанной нами папке
sudo vi /home/cooper/zabbix/alertscripts/send_mail.sh
с следующим содержанием
#!/bin/bash
to=$1
subject=$2
body=$3
cat Admin->Оповещения. Добавим способ оповещения email
Теперь необходимо настроить действия. Настройка->Действия. Источник событий должен быть Триггер. Создадим действие
в итоге в условиях должно получиться следующее:
и настроим операции
На этом настройка окончена. Для проверки можно отключить у себя на компьютере интерфейс virtialbox host-only секунд на 10-15, затем снова включить и проверить в Мониторинг->События
Видно что триггер срабатывал и действия были выполнены. Так же можно проверить выполнение с помощью Администрирование->Аудит. Выбрав действия можно посмотреть более подробно, что происходило
Если проверите указанный вами почтовый ящик, то должны обнаружить там два письма, о пропаже ping-a и о его восстановлении.
Надеюсь данный урок был вам полезен. Вопросы задавайте в комментариях, подписывайтесь на обновления и на мой канал youtube.
Рекомендуется смотреть в HD качестве
- Share This:
Источник: http://blog.netskills.ru/2012/12/zabbix-4-email-2-zabbix-gmail.html
Отправка уведомлений из Zabbix в Telegram
Как то я подумал о том, что было бы неплохо отправлять уведомления не на почту, а в Telegram
Хотелось получить что то интереснее, чем спам-рассылка по поводу и без повода. Telegram крут ещё и своими групповыми чатами (в том числе и приватными)
Установка каких либо дополнительных программ и библиотек меня вообще не впечатлила. Да и зачем всё это если можно использовать Telegram-бота и отправлять сообщения простым запросом
Первый шаг
Необходимо создать бота в Telegram. Для этого нужно добавить в список контактов бота @BotFather, сказать ему /start и /newbot BotFather сперва спросит как назвать нового бота, а потом какое имя ему присвоить. В ответном сообщении вы получите всю необходимую информацию для его использования
Вы можете создать своего бота, а можете использовать моего Познакомьтесь,
его зовут @TradeNarK_ZabbixBot
его токен 256070243:SHAAHonjepm7mzR6doFLgSNAbKg3BNJzQQm Этого бота необходимо добавить либо к себе в список контактов либо в тот чат, куда вы планируете получать уведомления.
Эта информация нам пригодится немного позже.
Второй шаг Для того что бы отправить сообщение себе или в чат необходимо знать ID чата или контакта Сразу замечу, что по ID можно определить пользователь это или чат — ID чата начинается со знака «-» (минус)
Для того что бы определить ID есть специальный бот @MyTelegramID_bot. Его нужно добавить с себе в список контактов или же в чат и дать команду /start. В ответ он предоставит ID
Мой список контактовЧат для уведомлений
Как и говорилось выше ID группы начинается со знака минус
Третий шаг
Для отправки сообщения достаточно выполнить зарос
# curl –header 'Content-Type: application/json' –request 'POST' –data '{“chat_id”:”_ID_”,”text”:”_MESSAGE_”}' “https://api.telegram.org/bot_TOKEN_/sendMessage”
где _ID_ — ID чата или контакта полученный на втором шаге; _MESSAGE_ — текст сообщения;
_TOKEN_ — токен бота полученный на первом шаге;
Запрос приобретает вид:
# curl –header 'Content-Type: application/json' –request 'POST' –data '{“chat_id”:”1111111″,”text”:”test message for blog https://tradenark.com.ua here”}' “https://api.telegram.org/bot256070243:SHAAHonjepm7mzR6doFLgSNAbKg3BNJzQQm/sendMessage”
и бот присылает сообщение
Убедившись что вся эта кухня работает нужно написать скрипт который поможет нам в отправке.
Смотрим дефолтное расположение скриптов для отправки
# grep -i AlertScriptsPath /etc/zabbix/zabbix_server.conf | grep -v ^# AlertScriptsPath=/usr/lib/zabbix/alertscripts
Теперь создаём скрипт в этой папке с таким содержимым:
# cat /usr/lib/zabbix/alertscripts/telegram_bot.sh #!/bin/bash TOKEN='256070243:SHAAHonjepm7mzR6doFLgSNAbKg3BNJzQQm' if [ $# -ne 3 ] ; then echo 'Error! You must to define three params' && exit 1 ; fi CHAT_ID=”$1″ SUBJECT=”$2″ MESSAGE=”$3″ # Определяем emoji для темы сообщения if [[ $SUBJECT == 'PROBLEM' ]] then ICON=”uD83DuDE31″ elif [[ $SUBJECT == 'OK' ]] then ICON=”uD83DuDC4C” else ICON=”u26A0″ fi curl -s –header 'Content-Type: application/json' –request 'POST' –data “{“chat_id”:”${CHAT_ID}”,”text”:”$ICON ${SUBJECT}
${MESSAGE}”}” “https://api.telegram.org/bot${TOKEN}/sendMessage” | grep -q '”ok”:false,'
Тут я добавил немного «развлекухи». В зависимости от темы бот будет добавлять смайлик. Как оказалось это одна из самых сложных задач. По той причине что вместо смайликов отображался текст / чистый код
Решение всё же нашлось. Для этого необходимо выбрать смайлик и определить его Unicode-формат. К примеру для обычного улыбающегося смайлика
Источник: https://tradenark.com.ua/monitoring/zabbix/zabbix-notification-to-telegram-with-bot/
Прикручиваем к Zabbix оповещения в VKontakte
- Существующий аккаунт в vk (от его имени будут рассылаться уведомления)
- Создать свое приложения в vk
- Получить access_token (через Implicit Flow)
- Написать alertscript для отправки сообщений (через messages.send)
- Запилить его в Zabbix
Создаем новое приложение в vk
Перейдем в раздел VK Developers -> Мои приложения и жмем кнопку «Создать приложение». Платформа нашего приложения — «Standalone-приложение», название — придумайте любое (Например, my_access_token). Жмем «Подключить приложение».
Далее, будет необходимо подтвердить данное действие. Мне удобнее это сделать по SMS. Получаем код подтверждения СМСкой и вбиваем его в соответствующее поле, все просто. После чего нас редиректит в раздел управления приложением.
Готово!
Получаем acces_token
В разделе редактирования приложения, перейдем на вкладку «Настройки» и скопируем «ID приложения».
Для получения токена, перейдем по ссылке, вида:
https://oauth.vk.com/authorize?client_id=ID_ПРИЛОЖЕНИЯ&scope=notify,photos,friends,audio,video,notes,pages,docs,status,questions,offers,wall,groups,messages,notifications,stats,ads,offline&redirect_uri=http://api.vk.com/blank.html&display=page&response_type=token
Само собой, на место «ID_ПРИЛОЖЕНИЯ» — подставляем ID нашего приложения. «scope» — права доступа приложения к соответствующим разделам. Если необходимо только слать сообщения — можно обойтись разделом «messages». В моем случае — я разрешил все.
В браузере, переходим по получившейся ссылке и разрешаем доступ приложения к запрошенным разделам. После чего нас перекинет на api.vk.com/blank.
html и, о чудо (!!!), в адресной строке браузера, мы видим наш access_token.
Копируем его к себе, и никому не показываем! С помощью данного токена, приложение может выполнять любые (разрешенные) запросы к API от имени пользователя под кем генерировался токен.
Готово!
Пишем alertscript
Все alertscript’ы zabbix’а лежат в отдельной директории, путь до которой указывается в переменной AlertScriptsPath, в zabbix_server.conf.
Создаем скрипт в данной директории, назовем его, допустим — «zabbix_vk_alert.sh»:
# Input params from zabbixvk_full_message=”[$vk_subject]%0A$vk_message%0A[/$vk_subject]”# Access token from vk appvk_access_token=”**************************************************”vk_api_method_url=”https://api.vk.com/method/messages.send”curl -d “access_token=$vk_access_token&user_id=$vk_user_id&message=$vk_full_message” $vk_api_method_url |
$1, $2, $3 — входные параметры, с которыми zabbix будет дергать скрипт; vk_full_message — полный текст сообщения; %0A — перенос строки;
vk_access_token — наш токен (не забудьте подставить).
Источник: http://marvins.ru/administrirovanie/prikruchivaem-k-zabbix-opoveshheniya-v-vkontakte.html
Zabbix – способы оповещения
Добрый день, сегодня хотел бы рассказать всем о так сказать почти всех способах оповещения системы Мониторинга Zabbix. В данной статье пойдёт речь о таких системах мгновенных сообщений как: SMS, Jabber, ICQ, email
Содержание:
- Введение
- SMS
- ICQ
- FAQ
Все действия делались на системе FreeBSD 8.2 i386 и будем считать, что сервер Zabbix стоит и уже работает, а как развернуть и настроить сервер в этой статье описываться не будет. Для этого вы можете прочитать статью Zabbix – мониторим и отслеживаем
Начнём с самого простого Email
Для начала идём в порты и ставим очень удобную программку sendEmail
cd /usr/ports/net/sendemail/ && make install clean
Выбрать мы можем только SSL, что вам и советую, и за частую требуется.
?????????????????????????????????????????????????????????????????????? ? Options for sendEmail 1.56 ? ? ?????????????????????????????????????????????????????????????????? ? ? ? [X] SSL Enable SSL support ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?????????????????????????????????????????????????????????????????????? ? [ OK ] Cancel ? ??????????????????????????????????????????????????????????????????????
Программа не какой настройки не требует после установки пишем вот такой скриптик для Zabbix
#!/bin/sh
export [email protected]
export zabbixemailto=”$1″
export zabbixsubject=”$2″
export zabbixbody=”$3″
export smtpserver=smtp.host.ru
export [email protected]
export smtppass=MegaPass
export logfile=/var/log/sendemail.log
/usr/local/bin/sendEmail -l “$logfile” -f “$smtpemailfrom” -t “$zabbixemailto”
-u “$zabbixsubject” -m “$zabbixbody” -s $smtpserver:25 -xu
“$smtplogin” -xp “$smtppass”
Скрипт абсолютно простой и гуляет по инету уже давно так что тут всё просто программа просто соединяется на SMTP хост под таким-то логином и паролем, и шлёт от него всё что нам надо, в данном случае данные с Заббикса
Естественно кладём этот файл дав ему права 755 в директорию которая у вас задана на сервере
AlertScriptsPath=/usr/local/etc/zabbix/alertscripts/
По дефолту она вообще выключена
Далее идём и логинимся под админом в веб интерфейсе.
Администрирование > Способы оповещений
вверху с права “Создать способ оповещения”
И вносим информацию о нашем скрипте:
Далее создаём Настройка > Действия
В нутрях надо делать индивидуально, у меня например всё просто
Более подробно можно почитать в мане заббикса, ссылку на Онлайн Мануал найдёте в конце статьи.
Теперь мы переходим к отправке по SMS
Я использовал смсшлюз ТурбоСМС Он очень удобен так как у него есть возможность отправки СМС через MySQL что для меня было очень удобно, на этом и был нарисован скрипт, и кстати не мной про турбоСМС и про этот скрипт я узнал где-то в интернете давнооо давно
Вот он скриптик
#!/usr/bin/perl
use strict;
use POSIX;
use DBI;
my $phone=@ARGV[0];
my $subj=@ARGV[1];
my $msg=@ARGV[2];
my $driver = “mysql”;
my $user = “User”;
my $password = “MegaPASS”;
my $database = “users”;
my $dsn = “DBI:$driver:host=77.120.116.10:3306;database=$database”;
my $dbh = DBI->connect($dsn, $user, $password);
my $sql = $dbh->prepare(“INSERT INTO $user (number, sign, message) VALUES ('$phone', 'ISN(Обратите внимания сюда)', '$msg')”);
$sql->execute;
Опять же, всё очень просто, скрипт на Perl кому интересно могут переделать под BASH, SH хоть PHP тут не чего сложного.
Опять же повторяем действия какие мы делали при создании Email оповещений.
Начиная с
И всё, готова у нас отправка и по СМС
Теперь переходим к самому замороченному и трудному для меня
Отправка на ICQ
Возможно есть и другие способы, с помощю ПХП ботов, или ещё чего, но я выбрал путь с помощью консольного клиента climm
Для начала нужно удостовериться что у нас последняя версия, и просто обновить порты.
потом идём в
cd /usr/ports/net-im/climm/ && make install clean
В конфиге я лично отметил всё, а вы можете на свой вкус но самое главное для нас это TCL scripting support и Remote control fifo support
?????????????????????????????????????????????????????????????????????? ? Options for climm 0.7.1_1 ? ? ?????????????????????????????????????????????????????????????????? ? ? ? [X] LIBICONV Iconv character set conversion ? ? ? ? [X] P2P Peer2peer connection support ? ? ? ? [X] TCL TCL scripting support ? ? ? ? [X] OTR OTR encryption support ? ? ? ? [X] REMOTE Remote control fifo support ? ? ? ? [X] XMPP XMPP Jabber support ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?????????????????????????????????????????????????????????????????????? ? [ OK ] Cancel ? ??????????????????????????????????????????????????????????????????????
После установки можно настроить, а можно и не трогать, он сам создаст дефолтный файл с настройками в
Почитать о нём можно много в нете, так что не буду описывать как его настраивать, и он с русским интерфейсом, Лично Я, использовал дефолтный конфиг, всё просто.
Теперь создадим TCL скриптик
# Verbindet sich mit ICQ, horcht an Socket und sendet Nachrichten per ICQ weiter
###
#
# Globals
#
# ICQ UIN des Admins
# (bekommt Nachrichten beim Starten und Stoppen des ICQ-Forwarders)
set admin “5114112”
###
#
# Funktionen
#
# Startet die Socket
proc serverOpen {channel addr port} { global connected set connected 1 fileevent $channel readable “readLine Server $channel”
# puts “Client verbunden, warte auf Daten…”
# puts “Client verbunden”
}
# Liest Zeilen aus der Socket
proc readLine {who channel} { global out didRead admin gets $channel line if {“$line” == “”} { fileevent $channel readable {} after idle {
# puts “Idle, warte auf Verbindung…” set didRead 1 } } elseif {$line == “kill”} { set killmsg “Zabbix ICQ Server STOP!” climm exec “msg $admin $killmsg” puts $channel $msg flush $channel exit } else { climm exec “msg $line” #after 3000
# puts “out: “$antwort””
# puts $channel “$antwort”
# flush $channel; set didRead 1 }
}
#
###
#
# Hauptprogramm
#
# Socket als verf.gbar markieren
set connected 0
# Server an Port 33000 starten
set server [socket -server serverOpen 33000]
puts “ICQ-Forwarder gestartet, horche auf Port 33000”
climm exec “msg $admin Zabbix ICQ Server START!”
while [ vwait out ] { vwait connected vwait didRead unset connected didRead
}
Обзавём его допустим icq-tcl
И так же создадим файлик для Zabbix
#!/usr/bin/tclsh
#
# (Test-)Client: Sendet Daten an den Server
#
# zu Socket verbinden, Referenz in Variable “sock” speichern
set sock [socket -async 127.0.0.1 33000]
# Wenn Kommandozeilenparameter vorhanden, # Dann diese in Var. “eingabe” schreiben # Sonst an StdIn auf Eingabe warten und in Var schreiben
if {$argc > 0} { set eingabe “$argv”
} else { puts “Bitte Daten eingeben, “kill” stoppt den Server:” set eingabe [gets stdin]
}
# Inhalt aus “eingabe” an Socket senden
puts $sock “$eingabe”
flush $sock
#puts “Serverantwort:”
#set len [gets $sock ausgabe]
#puts “in : “$ausgabe””
# Client beenden
close $sock
exit
Он у нас на tcslsh писан, назовём его zabbix_icqsend и положем куда надо.
Теперь запустим climm сделаем новую учётку, или воспользуемся своей не суть Как залогиниться автоматом опишу. Идём в
и добавим в верху вот такой блок
[Server]
type icq8 auto
version 8
host login.icq.com
port 5190
screen 123456789
password 123456
status online
options ignore off
Вот не помню там это есть по дефолту или нет, вас естественно интересует тока screenэто UIN и password
Вводим, запускаем climm
Он логиниться теперь запускаем нашь скрипт! пишем
tclscript ПОЛНЫЙ_ПУТЬ_ДО_ФАЙЛА/icq-tcl
И он жолжен повиснуть на 33000 порту, я лично запускал его в скринах и оставлял его там висеть, по другому пока не придумал, листаю маны по climm и по tcl.
Смотрим повис ли он на порту
sockstat -4l | grep climm
root climm 73029 6 tcp4 *:33000 *:*
Ага висит, всё отлично, теперь давайте баловаться )))
Идём в
cd /usr/local/etc/zabbix/alertscripts/
даём права +x файлу zabbix_icqsend
И делаем такой запросик
Примером будет
./zabbix_icqsend 123456789 Helo World
И вам придёт сообщение.
Есть пару нюансов, надо что бы вы были авторизированы у этого номера, и что бы он у вас тоже.
Так же есть фаерволом не закрыть порт 33000 то можоно по телнету подключиться и слать сообщения )
Русский только в UTF-8
Ну вот собственно и всё, писал на скорую руку, так что вопросы в студию, поправлю чё надо, и дорасскажу чего не хватает
Всем спасибо, все свободны.
Источник: http://www.ignix.ru/book/freebsd/network/zabbix_sposoby_opoveshcheniya?page=53%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C4
3 Эскалации [Zabbix Documentation 2.2]
ru:manual:config:notifications:action:escalations
Используя эскалации, вы можете создавать пользовательские сценарии для отправки оповещений или для выполнения удаленных команд.
С практической точки зрения эскалации означают, что:
- Пользователи могут быть информированы о новых проблемах немедленно
- Оповещения могут быть повторены до решения проблемы
- Отправка оповещения может быть выполнена с задержкой
- Оповещения могут эскалироваться другой “более высокой” группе пользователей
- Удаленные команды могут быть выполнены незамедлительно или когда проблема не решена за длительный период времени
- Могут быть отправлены сообщения о восстановлении
Действия эскалируются на основании шага эскалации. Каждый шаг имеет длительность по времени.
Вы можете задать и длительность по умолчанию, и пользовательскую длительность для каждого отдельного шага. Минимальная длительность одного шага эскалации 60 секунд.
Вы можете начать действия, такие как отправка оповещения или выполнение команд, с любого шага. Шаг первый используется для немедленных действий. Если вы хотите отложить действие, вы можете назначить его на следующий шаг. Для каждого шага можно назначать несколько действий.
Количество шагов эскалаций не ограниченно.
Эскалации задаются при настройке действия.
Давайте рассмотрим что произойдет при разных обстоятельствах, если действие содержит несколько шагов эскалаций.
Узел сети, о котором идет речь, переходит в состояние обслуживания после отправки первоначального оповещения о проблеме | Выполняются все оставшиеся шаги эскалации. Обслуживание не может прервать операции; обслуживание имеет влияние в отношении действие началось/не началось, но не имеет влияния на операции. |
Период времени указанный в условии Период времени действия завершается после первоначальной отправки оповещения | Выполняются все оставшиеся шаги эскалации. Условие Период времени не может прервать операции; это условие имеет влияние в отношении действие началось/не началось, но не имеет влияния на операции. |
Проблема началась в процессе обслуживания и продолжается (не исправлена) после окончания обслуживания | Все шаги эскалации выполнятся начиная с момента завершения обслуживания. |
Проблема началась в процесса обслуживания без сбора данных и продолжается (не исправлена) после окончания обслуживания | Действие должно дождаться пока триггер не перейдет в состояние проблема, до выполнения всех шагов эскалации. |
Разные эскалации следуют в тесном порядке и перекрываются | Выполнение каждой новой эскалации заменяет предыдущую эскалацию, но как минимум один шаг эскалации обязательно выполняется из предыдущей эскалации. Такое поведение тесно связано с действиями на события, которые создаются на КАЖДОЕ вычисление проблемы триггера. |
Действие деактивировано в процессе исполнения эскалации (таком как, выполняется отправка сообщения) | Сообщение в процессе отправки будет отправлено, затем другие сообщения по этой эскалации не будут отправляться. Последующие сообщения будет иметь следующий текст в начале тела сообщения: Возьмите на заметку: Эскалация отменена: действие '' деактивировано. Таким образом получатель будет проинформирован о том, что эскалация отменена и дальнейшие шаги не будут выполнены. Это сообщение отправляется адресатам указанным в текущем шаге эскалации. |
Отправка повторяющихся оповещений каждые 30 минут (в общей сложности 5 раз) группе 'MySQL администраторы'. Для настройки:
- Задайте Период эскалации по умолчанию равным '1800' секундам (30 минут) в общих атрибутах действия
- На вкладке Операции, укажите шаги эскалаций С '1' До '5'
- Выберите группу 'MySQL администраторы' получателями сообщения
Оповещения будут отправлены в 0:00, 0:30, 1:00, 1:30, 2:00 часов после начала проблемы (если, конечно, проблема не будет решена раньше).
Если проблема решена и сообщение о восстановлении настроено, оно будет отправлено всем тем, кто получил хотя бы одно сообщение в этом сценарии эскалаций.
Если триггер, который вызвал активную эскалацию был деактивирован, Zabbix отправит информационное сообщение об этом всем, кто уже получил оповещения.
Отправка оповещения с задержкой о давней проблеме. Для настройки:
- Задайте Период эскалации по умолчанию равным '36000' секунд (10 часов) в общих атрибутах действия
- На вкладке Операции, укажите шаги эскалации С '2' До '2'
Оповещение будет отправлено только на Шаге 2 сценария эскалации, или через 10 часов после начала проблемы.
Вы можете изменить текст сообщения на что-то вроде 'Проблема не решена более чем 10 часов'.
Эскалирование проблемы Руководству.
В первом примере мы настраивали периодическую отправку сообщений Администраторам MySQL. В этом случае, администраторы получат четыре сообщения до того, как проблема будет эскалирована Менеджеру баз данных. Обратите внимание, что менеджер получит сообщение только в случае если проблема еще не подтверждена, предположительно, никто не работает над ней.
Обратите внимание на использование макроса {ESC.HISTORY} в сообщении. Этот макрос будет содержать информацию обо всех ранее выполненных шагах этой эскалации, таких как отправленные оповещения и выполненные команды.
Более сложный сценарий. После нескольких сообщений Администраторам MySQL и эскалации менеджеру, Zabbix попытается перезапустить базу данных MySQL. Это произойдет, если проблема присутствует через 2:30 часов и еще не была подтверждена.
Если проблема все еще существует, спустя еще 30 минут Zabbix отправит сообщение всем гостевым пользователям.
Если и это не поможет, спустя еще час Zabbix перезагрузит сервер с этой базой данных MySQL (вторая удаленная команда), используя IPMI команды.
Эскалация с несколькими операциями назначенными на один шаг и с использованием пользовательских интервалов. Период эскалации по умолчанию равен 30 минутам.
Оповещения будут отправлены в следующем порядке:
- MySQL администраторам в 0:00, 0:30, 1:00, 1:30 после начала проблемы
- Менеджеру баз данных в 2:00 и 2:10 (в этом случае более короткая пользовательская длительность менее 600 секунд перекрывает длительную пользовательскую длительность равную 3600 секундам)
- Zabbix администраторам в 2:00, 2:10, 2:20, 2:30 после начала проблемы (задана пользовательская длительность шага равная 600 секундам)
- Гостевые пользователи в 4:00 часа после начала проблемы (интервал по умолчанию равный 30 минутам возвращается между шагами 8 и 11)
Источник: https://www.zabbix.com/documentation/2.2/ru/manual/config/notifications/action/escalations
Уведомления от Zabbix в Telegram
Сегодня подумал: “А почему бы не прикрутить telegram к zabbix?”… Немного погуглил… Но мне не понравились решения с установкой дополнительных программ/скриптов. Поэтому я решил реализовать это по своему: сделать бота и научить zabbix отправлять мне уведомление через него.
Шаг 1.
Для начала нужно создать бота в telegram. Для этого надо добавить в свой список контактов бота @BotFather, сказать ему “/start” и потом “/newbot”. BotFather сначала спросит, как назвать нового бота, а следующим сообщением нужно ввести имя бота.
В ответ BotFather пришлет token.
Вы можете либо создать своего бота либо использовать моего (все сообщения будут отправлены только вам, у меня к ним доступа нет). Звать этого бота @zabbix_notify_bot, а token у него “179320554:AAHI9AeBkptHgMIh5pVs31CRzGHV_9sG8bs”. Бота нужно добавить в свой список контактов. Шаг 2.
Чтобы можно было отправить себе сообщение, нужно знать свой Telegram ID. Для этого добавьте в свой список контактов бота @MyTelegramID_bot и скажите ему “/start”. В ответ получите свой Telegram ID. Скоро он пригодится.
Если оповещение нужно слать в группу, то надо этого бота добавить в группу и сказать “/start”. И далее использовать этот Telegram ID. Шаг 3.
Для отправки сообщений достаточно дать одну команду:
curl –header 'Content-Type: application/json' –request 'POST' –data '{“chat_id”:”_telegram_id_”,”text”:”_your_message_”}' “https://api.telegram.org/bot_bot_token_/sendMessage”, где _telegram_id_ – ваш Telegram ID, полученный на шаге 2; _your_message_ – любое сообщение, которое бот отправит вам (для переноса строк можно использовать
); _bot_token_ – token бота, полученный на шаге 1.
Для отправки уведомлений из zabbix, я использую такой скрипт:
#!/bin/bash TOKEN='179320554:AAHI9AeBkptHgMIh5pVs31CRzGHV_9sG8bs' which curl &>/dev/null
if [ $? -ne 0 ] ; then echo 'FAIL: curl not found.' && exit 1 ; fi
if [ $# -ne 3 ] ; then echo 'FAIL: Params not defined.' && echo 'Usage: zabbix-to-telegram-notify.sh TelegramID Subject Message' && exit 1 ; fi CHAT_ID=”$1″
SUBJECT=”$2″
MESSAGE=”$3″ curl -s –header 'Content-Type: application/json' –request 'POST' –data “{“chat_id”:”${CHAT_ID}”,”text”:”${SUBJECT}
${MESSAGE}”}” “https://api.telegram.org/bot${TOKEN}/sendMessage” | grep -q '”ok”:false,'
if [ $? -eq 0 ] ; then exit 1 ; fiЕсли используется прокси, то нужно добавить соответствующие параметры для curl.
Скрипт нужно положить в каталог, который указан в параметре “AlertScriptsPath” в конфиге zabbix сервера:# grep -i AlertScriptsPath /etc/zabbix/zabbix_server.conf | grep -vE '^#'
AlertScriptsPath=/etc/zabbix/alertscriptsИ сделать его исполняемым:chmod +x /etc/zabbix/alertscripts/zabbix-to-telegram-notify.shШаг 4. Теперь нужно настроить сам zabbix, чтобы он мог пользоваться скриптом. Для начала нужно создать новый способ оповещений. Я буду рассматривать для zabbix 3+, т.к. использую его. В 2.2-2.4 разница не большая.
Идем в Администрирование – Способы оповещений, жмем кнопку “Создать способ оповещений”. В поле “Имя” вводим название способа оповещения. В поле “Тип” нужно выбрать “Скрипт”.
В поле “Имя скрипта” нужно указать имя файла-скрипт, без пути; например, zabbix-to-telegram-notify.sh. В поле “Параметры скрипта” нужно нажать “Добавить” 3 раза и ввести в появившиеся поля {ALERT.SENDTO}, {ALERT.
SUBJECT} и {ALERT.MESSAGE}. Пример:
Шаг 5. Идем в Администрирование – Пользователи – выбираем своего пользователя – Оповещения – Добавить. В поле “Тип” выбираем только что созданный способ оповещения, например, Telegram Bot. В поле “Отправлять на” вводим свой Telegram ID, полученный на шаге 2.
Остальные поля заполняем на свое усмотрение. Шаг 6.
Идем в Настройка – Действия, в поле “Источник событий” выбираем “Триггеры” и жмем “Создать действие”. На закладках “Действие” и “Условие” заполняем поля по своему усмотрению.
Я в полях “Сообщение по умолчанию” и “Сообщение о восстановлении” указываю такое:
{HOST.NAME} :: {ITEM.NAME} :: {ITEM.VALUE} Status: {TRIGGER.STATUS}
Host: {HOST.NAME}
Item: {ITEM.NAME}
Value: {ITEM.LASTVALUE} Key: {ITEM.KEY} Severity: {TRIGGER.SEVERITY} Trigger: {TRIGGER.NAME}
Description: {TRIGGER.DESCRIPTION}Но это “на вкус и цвет”. На закладке “Операции” жмем “Новый”. Выбираем пользователя. В поле “Отправить только через” выбираем созданный на шаге 4 способ оповещения, например, Telegram Bot. Жмем “Добавить” и еще раз “Добавить”. На этом все. Теперь Zabbix должен присылать уведомления в Telegram.
Информация с сайта http://blog.angel2s2.ru/.
Источник: http://blog.angel2s2.ru/2016/03/zabbix-telegram.html