Еще не бот, но уже что-то ― получаем уведомления от Zabbix в мессенджеры

Установка каких либо дополнительных программ и библиотек меня вообще не впечатлила. Да и зачем всё это если можно использовать Telegram-бота и отправлять сообщения простым запросом

Первый шаг Необходимо создать бота в Telegram. Для этого нужно добавить в список контактов бота @BotFather, сказать ему /start и /newbot BotFather сперва спросит как назвать нового бота, а потом какое имя ему присвоить. В ответном сообщении вы получите всю необходимую информацию для его использованияcreate_bot.png Вы можете создать своего бота, а можете использовать моего Познакомьтесь, его зовут @TradeNarK_ZabbixBot его токен 256070243:SHAAHonjepm7mzR6doFLgSNAbKg3BNJzQQm Этого бота необходимо добавить либо к себе в список контактов либо в тот чат, куда вы планируете получать уведомления. Эта информация нам пригодится немного позже.

Второй шаг Для того что бы отправить сообщение себе или в чат необходимо знать ID чата или контакта Сразу замечу, что по ID можно определить пользователь это или чат — ID чата начинается со знака «-» (минус) Для того что бы определить ID есть специальный бот @MyTelegramID_bot. Его нужно добавить с себе в список контактов или же в чат и дать команду /start. В ответ он предоставит ID Мой список контактовget_ID.png Чат для уведомлений Как и говорилось выше ID группы начинается со знака минус

Третий шаг Для отправки сообщения достаточно выполнить зарос

# curl --header 'Content-Type: application/json' --request 'POST' --data '{"chat_id":"_ID_","text":"_MESSAGE_"}' "https://api.telegram.org/bot_TOKEN_/sendMessage"

Запрос приобретает вид:

# 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}n${MESSAGE}"}" "https://api.telegram.org/bot${TOKEN}/sendMessage" | grep -q '"ok":false,'

Тут я добавил немного «развлекухи». В зависимости от темы бот будет добавлять смайлик. Как оказалось это одна из самых сложных задач. По той причине что вместо смайликов отображался текст / чистый код Решение всё же нашлось. Для этого необходимо выбрать смайлик и определить его Unicode-формат. К примеру для обычного улыбающегося смайлика ? это будет U+1F601. Теперь на сайте fileformat.info нужно найти его перекодированное значение. Для этого переходим по ссылке http://www.fileformat.info/info/unicode/char/1F601/index.htm и находим строку «C/C++/Java source code». В случае улыбающегося смайлика это будет «uD83DuDE01» Сохраняем и делаем его исполняемым:

# chmod +x /usr/lib/zabbix/alertscripts/telegram_bot.sh

Четвёртый шаг Необходимо научить заббикс пользоваться нашим скриптом. Для этого нужно создать новый способ оповещения с несколькими параметрами: Называем его как нам угодно. В поле «Имя», что бы не путаться, я использую Telegram Bot Тип указываем «Скрипт» В поле «Имя скрипта» вписываем только telegram_bot.sh так как скрипт находится в специально созданной для этого папке Так же добавляем три дополнительных параметра как на скриншоте: {ALERT.SENDTO} — кому отправлять; {ALERT.SUBJECT} — тема сообщения; {ALERT.MESSAGE} — текст самого сообщения; После этого нажимаем «Добавить».

Пятый шаг Идем в «Администрирование» — «Пользователи». Выбираем нашего пользователя — вкладка «Оповещения» — «Добавить». В поле «Тип» выбирает тот тип, который мы создали (у меня Telrgram Bot). В поле «Отправлять на» указываем свой ID или ID чата со второго шага. Остальные параметры на своё усмотрение.

Шестой шаг Идем «Настройка» — «Действие». В графе «Источник событий» выбираем «Триггеры» и нажимаем создать. Во вкладке «Действие» настраиваем шаблон уведомлений. Я использую довольно сокращенный вариант по сравнению с предлагаемым по умолчанию: Поле «Тема» — {TRIGGER.STATUS} Поле «Сообщение по умолчанию» — {HOST.HOST} | {HOST.IP} | {TRIGGER.NAME} -> {ITEM.VALUE} Во вкладке «Операции» жмём «Новый». В открывшемся окне нас интересуют три главных пункта: Тип операции — отправить сообщение; Отправлять пользователям — выбираем своего пользователя; Отправлять только через — выбираем метод, созданный на четвертом шаге; В итоге получаются довольно информативные и короткие уведомления: Так же у меня настроены уведомления о авторегистрации:

В предыдущих темах мы установили систему мониторинга Zabbix и показали на примерах как добавить на мониторинг устройства Dlink и Mikrotik. Для удобства оповещений о неполадках устройств мы настроим отправку оповещений из Zabbix в Telegram на наш аккаунт или общий чат, в случае если надо оповестить всех участников чата.

Создание бота Telegram.

В первую очередь нам необходимо создать бота, от которого в дальнейшем мы будем получать уведомления о неисправностях.

1. Над списком контактов в поле Search находим бота @BotFather и жмем на панель c названием /start или вводим команду /start в поле для сообщений. 2. Следующей командой /newbot мы получаем сообщение: “Alright, a new bot. How are we going to call it? Please choose a name for your bot.”, исходя из которого нам нужно задать имя, в конце которого обязательно должно присутствовать слово bot. Например, ithelp21_zabbixbot.

3. В ответ на наше сообщение с именем бота мы получаем Token бота, который выглядит в виде “Use this token to access the HTTP API: 423393656:AAE1hJ5EE_o8KIDWrWW9A8-hZnpAL9-htGI

Настройка аккаунта Telegram, получение ID.

Нам нужно определить идентификационный номер своего контакта, на который мы будем получать уведомления от ithelp21_zabbixbot. Для этого снова находим в поиске @MyTelegramID_bot и жмем кнопку /start или вводим команду, после которой мы получим ID “This BOT simply telling you your current Telegram ID. You Telegram ID: 194533722“.

Теперь проверим отправку сообщений с нашего бота на на аккаунт в Telegram. В CentOS, где установлен zabbix-server запускаем команду, со своими данными. В моем случае команда будет выглядеть так:

curl --header 'Content-Type: application/json' --request 'POST' --data '{"chat_id":"194533722","text":"Привет, я Telegram-bot для Zabbix!"}' "https://api.telegram.org/bot423393656:AAE1hJ5EE_o8KIDWrWW9A8-hZnpAL9-htGI/sendMessage"

Шаблон для ввода своих данных:

curl --header 'Content-Type: application/json' --request 'POST' --data '{"chat_id":"вводим ID своего аккаунта","text":"Привет, я Telegram-bot для Zabbix!"}' "https://api.telegram.org/botВводим Token, который мы получили при создании бота/sendMessage"

Обратите внимание что Token нужно вводить сразу же api.telegram.org/bot”Token” без пробела после “bot”!

Если все данные ввели верно, мы получим в чате сообщение “Привет, я Telegram-bot для Zabbix!” от нашего бота.

Добавим Telegram – уведомление в Zabbix.

1. Проверяем, где у нас в Zabbix находится папка для скриптов, который мы далее создавать, вводим команду и получаем результат.

[root@Zabbix ssmtp]# grep AlertScriptsPath /etc/zabbix/zabbix_server.conf  ### Option: AlertScriptsPath  # AlertScriptsPath=${datadir}/zabbix/alertscripts  AlertScriptsPath=/usr/lib/zabbix/alertscripts

Создаем в выше указанной папке script с именем zabbix-to-telegram-bot.sh:

[root@Zabbix ssmtp]# vim /usr/lib/zabbix/alertscripts/zabbix-to-telegram-bot.sh

и заполняем его следующим кодом:

#!/bin/bash  TOKEN='423393656:AAE1hJ5EE_o8KIDWrWW9A8-hZnpAL9-htGI'  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-bot.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}n${MESSAGE}"}" "https://api.telegram.org/bot${TOKEN}/sendMessage" | grep -q '"ok":false,'  if [ $? -eq 0 ] ; then exit 1 ; fi

Даем права скрипт-файлу:

# chmod +x /usr/lib/zabbix/alertscripts/zabbix-to-telegram-bot.sh
Настройка оповещений в Zabbix через Telegram.

1. Заходим в Администрирование – Способы оповещений – Создать способ оповещения.

Имя: Telegram Bot;Тип: Скрипт;Имя скрипта: zabbix-to-telegram-bot.sh;Параметры скрипта: {ALERT.SENDTO} — адрес отправителя; {ALERT.SUBJECT} — тема сообщения; {ALERT.MESSAGE} — текст сообщения;Активировано: ставим галочку; Жмем Добавить.

2. Идем в Администрирование – Пользователи – Выбираем нашего пользователя “Admin“. В открывшемся окне пользователя переходим на вкладку “Оповещения” – Добавить.

Тип: Telegram Bot;Отправлять на: 194533722 (ID нашего telegram аккаунта); Остальные параметры оставляем по-умолчанию или на ваше усмотрение.Активировано: ставим галочку;Добавить.

3. Переходим Настойка – Действие – Источник событий “Триггеры” – Создатьдействие.

Вкладка Действие:Имя: Уведомление Telegram c Zabbix;Активировано: ставим галочку;

Вкладка “Операции”:Длительность шага операции по умолчанию: 60 – (через 60 секунд после срабатывание триггера приходит уведомление) Нажимаем в этой же вкладке Операции – Новое. Меняем только:Тип операции: Отправить сообщение;Отправлять пользователям: Admin;Отправлять только через: Telegram Bot;Добавить.

Во вкладке “Операции восстановления” повторяем тоже самое, что и во вкладке “Операции“.

</pre></pre>

Дано: 30 магазинов, 2 офиса, десяток серверов и принтеров.

Задача: круглосуточный мониторинг с моментальным уведомлением

Скриншот внизу.

Настройка

Start

/newbot

— Alright, a new bot. How are we going to call it? Please choose a name for your bot.

(прим.) Zabbix (Название БОТА)

— Good. Now let’s choose a username for your bot. It must end in `bot`. Like this, for example: TetrisBot or tetris_bot.

(прим.) zabbix_bot (UserName БОТА)

— Use this token to access the HTTP API:

(прим.) 150000000:XXx_xxxXxxxXXXXxxxxxxXXXxxxxxxx_XX

Проверка БОТА. В браузере ввести:

https://api.telegram.org/bot*API*/getMe

Должны получить — В«okВ»:true

Запретить добавление БОТА в другие группы

/setjoingroups

Выбрать БОТА

Disable

Активация

В Telegram, найти нашего бота (прим.) zabbix_bot

Start

Скачать скрипт

( https://github.com/ableev/Zabbix-in-Telegram/archive/master…. )

Положить в /usr/lib/zabbix/alertscripts

Редактирование конфигурации скрипта

tg_vars.cfg

TG_KEY=В»150000000:XXx_xxxXxxxXXXXxxxxxxXXXxxxxxxx_XXВ»

ZBX_API_USER=В»telegramВ» # Пользователь в Zabbix с правами ReadOnly

ZBX_API_PASS=В»12345″ # Пароль

zbxtg.sh

login() {

${CURL} -L —cookie-jar ${TMP_COOKIE} —request POST —data В«name=${ZBX_API_USER}&password=${ZBX_API_PASS}&enter=Sign%20inВ» ${ZBX_SERVER}

}

get_image() {

URL=$1

IMG_NAME=$2

wget -qO- —load-cookies=${TMP_COOKIE} —save-cookies=${TMP_COOKIE} —keep-session-cookies В«${URL}В» > ${IMG_NAME}

}

# — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — —

then

MATCH=В».chat.:{.id.:.*,.title.:.${TO}.}В»

TG_CONTACT_TYPE=В»chatВ»

else

MATCH=В».chat.:{.id.:.*,.username.:.${TO}.}В»

TG_CONTACT_TYPE=В»userВ»

Проверка отправки сообщения от БОТА на свой аккаунт

cd /usr/lib/zabbix/alertscripts

./zbxtg.sh (логин telegram)UserName TEST

Настройка Zabbix ПАНЕЛЬ

Администрирование — Способы оповещения — Новый

Тип: Скрипт

Имя скрипта: zbxtg.sh

Параметры:

{ALERT.SENDTO} / {ALERT.SUBJECT} / {ALERT.MESSAGE}

Администрирование — Группы пользователей — Новая

Имя: telegram

Права доступа: Только чтение

Администрирование — Пользователи — Новый

Права доступа: Zabbix Пользователь

Способ оповещения: Тип: Telegram / Отправлять на *ИМЯ БОТА*

Добавить пользователя в группу telegram

Настройка — Действия — Новое

Тема: {TRIGGER.STATUS}

Сообщение по умолчанию:

Last value: {ITEM.VALUE1} ({TIME})

zbxtg;graphs

zbxtg;graphs_period=10800

zbxtg;itemid: {ITEM.ID1}

zbxtg;title: {HOST.HOST} * {TRIGGER.NAME}

Активировать сообщение о восстановлении

Тема восстановления: {TRIGGER.STATUS}

Сообщение о восстановлении:

Last value: {ITEM.VALUE1} ({TIME})

zbxtg;graphs

zbxtg;graphs_period=10800

zbxtg;itemid: {ITEM.ID1}

zbxtg;title: {HOST.HOST} * {TRIGGER.NAME}

Report problems to Zabbix administrators

Тема: {TRIGGER.STATUS}: {HOST.NAME1}

Сообщение по умолчанию:

{TRIGGER.NAME}

1. {ITEM.NAME1}: {ITEM.VALUE1}

Активировать сообщение о восстановлении

Тема восстановления: {TRIGGER.STATUS}: {HOST.NAME1}

Сообщение о восстановлении:

Restored: {TRIGGER.NAME}

1. {ITEM.NAME1}: {ITEM.VALUE1}

Итог:

Разница события и уведомления – 1-3 секунды.

Вы хотите получать уведомления с Zabbix через Telegram? Нет ничего проще!

Есть для этого готовый бот и Telegram API

Бот присылает все, что было в специальном HTTP GET запросе вида:

http://crierbot.appspot.com/@token@/send?message=@message@

TOKEN — токен выданный ботом при его добавлении в список контактов Telegram

MESSAGE — собственно сообщение, которые хотите передать.

Итак, давайте разбираться, что нам для этого надо и что мы получим в итоге.

Для начала добавляем себе в Telegram бота @crierbot и нажимаем START

После нажатия на START бот пришлет нам уникальный ключ «Token»

Ну вот и все. На этом наше общение с ботом окончено. Теперь только он нам будет писать то, что нам необходимо.

Zabbix умеет отправлять оповещения, используя скрипт. Zabbix отправляет 3 параметра: получатель, тема сообщения, текст сообщения.

Давайте напишем скрипт, который и будет передавать нам информацию из Zabbix нашему боту, который в свою очередь будет передавать ее нам:

#!/bin/bash  PATH=$PATH:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin  wget -O /dev/null "http://crierbot.appspot.com/$1/send?message=Subj: $2 || Message:$3"

Где $1, $2, $3 переданные Zabbix’ом параметры: получатель, тема сообщения, сообщение.

Данный скрипт сохраняем с произвольным именем, например. telegram.sh в директорию Zabbix’а, где хранятся скрипты уведомлений (в Freebsd по умолчанию это директория:/usr/local/zabbix32/zabbix/alertscripts/     —       (Для версии 3.2)

Делаем наш скрипт исполняемым:

chmod +x /usr/local/zabbix32/zabbix/alertscripts/telegram.sh

Выдаем zabbix права на этот скрипт:

chown zabbix:zabbix /usr/local/zabbix32/zabbix/alertscripts/telegram.sh

Теперь переходим в веб-интерфейс Zabbix’а и переходим по Меню: «Администрирование» -> «Способы оповещения» и нажимаем «Создать способ оповещения»

Тут заполняем:

Имя — Произвольное

Тип — Скрипт

Имя скрипта — так, как вы назвали скрипт при его создании

Параметры срипта:

{ALERT.SENDTO}

{ALERT.SUBJECT}

{ALERT.MESSAGE}

(Это как раз и есть наши $1, $2 и $3)

И ставим галочку «Активировано»

И нажимаем Добавить (у меня обновить, так как он уже создан у меня)

Далее заходим в «Администрирование» -> «Пользователи«. Выбираем нашего пользователя и переходим на вкладку «Оповещения» и нажимаем «Добавить»

В появившемся окне выбираем тип — под каким именем мы создали действие, вставляем наш токен, который выдал нам бот и нажимаем «Добавить»

После этого у пользователя в Оповещениях появится новый способ оповещения. Нажимаем «Обновить«.

Теперь нам осталось только создать действий, по которому нам будет приходить какое-либо сообщение.

Итак, приступим к созданию действия. Для этого переходим в «Настройка» -> «Действия«. Справа вверху где «Источник событий» выбираем» Триггеры. Нажимаем «Создать действие«.

Действие:

Имя — Пишем любое понятное для нас имя

Условие — Настраиваем условие, при котором будет происходит наше действие (ниже я приведу пример 1 из своих действий)

Операции:

Выбираем что будет присылаться нам во время срабатывание нашего условия

В операциях нажимаем Новый и добавляем наш способ оповещения:

Должно получиться что то типа вот этого.

На вкдадке Операции восстановления Выбираем в операциях «оповещение о восстановлении», чтобы знать, что проблема ушла.

И нажимаем «Добавить«. В принцип на этом этапе мы уже все настроили!

Вот пример одного из моих действий. У меня есть триггер на температуру CPU моего NAS. Его я и использовал:

Вот что мы в принципе видим в окне самого Telegram:

Собственно ничего сложного нет. Это настроить гораздо быстрее чем все это прочитать или тем более все это написать. Если возникнут трудности — пишите в комментарии. Постараюсь помочь.

ousuhgtfyj5ne5o2c0ndwamkl0o.jpeg Кажется, что в последнее время электронная почта больше подходит для спама, чем для оперативных оповещений системы мониторинга. В этой статье я соберу методы получения уведомлений на мобильные устройства ― как через мессенджеры, так и через традиционные каналы связи.

Получать уведомления в такой корпоративный мессенджер как Slack действительно удобно, а благодаря открытому API ― еще и просто. С API можно познакомиться в официальной документации, я же покажу пару примеров реализации.

Самым простым решением станет интеграция с мессенджером через механизм Webhook. Для начала нужно получить на сайте сервиса в разделе Incoming WebHooks специальный адрес, на который можно отправлять запросы хоть обычным curl. Также там можно будет выбрать иконку и канал для отображения сообщений по умолчанию.

aejhvzu-l5azb2e0xgr1hmwe8_u.jpegПолучаем URL для отправки запросов.

Теперь нужно добавить в Zabbix скрипт ― по умолчанию это папка /usr/local/share/zabbix/alertscripts, ― разрешить его выполнение и настроить в нем необходимые параметры. Со скриптом и подробными инструкциями по настройке можно ознакомиться на GitHub в репозитории zabbix-slack-alertscript.

dgmrdyv7oft4lc_on9e97aelrhk.jpegУведомления в Slack.

Более интересным и сложным способом решения задачи будет создание полноценного бота. В отличие от простого варианта с curl, бот может не только кидать уведомления, но и удалять их при решении проблемы.

Ознакомиться с исходным кодом бота и подробной инструкцией по настройке можно в репозитории zabbix-notify на GitHub. Помимо Slack, этот бот поддерживает уведомления в HipChat, создание новых инцидентов и разрешение старых в системе управления инцидентами PagerDuty.

Получать уведомления в этот популярный, но заблокированный на территории РФ, мессенджер тоже удобно, благо открытый API это позволяет. Ознакомиться с возможностями автоматизации можно в документации на официальном сайте.

Для самого простого решения нужно получить свой токен для запросов при помощи «Отца Ботов» ― @BotFather. При помощи команд /start и /newbot главный бот выдаст заветный токен.

ypavgu3cpttgcumj_zju_5h8rkg.jpegПолучаем токен для нашего бота-уведомлятора.

Теперь можно отправлять сообщения запросами через curl. В качестве усложненной реализации можно привести в пример бота, отправляющего не только уведомления, но и графики. Завести себе бота поможет GitHub-репозиторий Zabbix-in-Telegram.

С подробной инструкцией к простому и чуть более сложному скрипту можно ознакомиться в материале «Отправка уведомлений и графиков из Zabbix в Telegram».

Этот мессенджер, к сожалению, не имеет документированного публичного API и борется со скриптами на GitHub в рамках «борьбы со спамом». Но выход есть. Можно использовать штатное решение «прямая связь», описанное в официальном FAQ. Но тогда понадобится держать инстанс WhatsApp Web. Аналогично сработает обвязка автокликером веб-версии или десктопного приложения.

Чуть более интересным вариантом будет использование консольного «мессенджера» yowsup. Сам мессенджер доступен в одноименном репозитории GitHub. Пока решение работает. Но если WhatsApp вдруг решит поменять свой API, то для адаптации понадобится время.

pt7aslwyr8j0lczxz2fjnxfefhm.jpegОтправка сообщений через консоль.

Подробнее с настройкой консольного скрипта и Zabbix можно ознакомиться в статье «Получаем уведомления от Zabbix в WhatsApp».

Если ваш дежурный инженер проводит в соцсетях немало времени, то можно отправлять уведомления ему прямо в сообщения (или на стену) ВКонтакте.

Сначала нам понадобится создать свое приложение в соцсети ― для получения токена. Сделать это можно в разделе «Мои приложения». После создания нового приложения нам нужно скопировать его ID в разделе «Настройки» и перейти по ссылке:

https://oauth.vk.com/authorize?client_id=appid&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

Разумеется, вместо appid нужно подставить свой ID. А если нужно просто отправлять сообщения ― без оповещения друзей инженера, если он сам не отвечает, ― то в параметрах достаточно задать messages.

После подтверждения доступа в адресной строке появится подобный адрес:

https://api.vk.com/blank.html#access_token=81eff38378a3bbbcb5c7043a152a69fd04dca057ac821dd7afd7c2d8e35b60172d45a26599c08034cc40a&expires_in=0&user_id=123456

Где в значении параметра access_token будет необходимый нам токен.

Теперь при помощи обычного curl можно слать сообщения, а с оберткой из простого скрипта это сможет делать и Zabbix.

С пошаговой настройкой уведомлений и вариантом реализации скрипта можно ознакомиться в статье «Прикручиваем к Zabbix оповещения в VKontakte».

Если некоторое ретроградство вам не чуждо, то еще остался Jabber. Получать уведомления в старый любимый мессенджер Zabbix позволяет «из коробки». Для этого достаточно настроить аккаунт в свойствах оповещений:

jj0zpyayvhwkg1zmv_3w6g8j0ic.jpegНастройка аккаунта Jabber.

И указать нужные JID в свойствах пользователей. Подробнее можно ознакомиться в официальной документации Zabbix в разделе Jabber. Я же добавлю, что если предварительно аккаунт Jabber зарегистрировать в нужных транспортах, то можно отправлять сообщения в ICQ, IRC и прочий агент Mail.ru.

Если не зацикливаться на модных и не очень мессенджерах, то можно получать уведомления и просто через технологию push. Она поддерживается не только в мобильных устройствах, но и в любой Windows 10, а также в браузерах Chrome и Firefox.

Тут нам придется или развертывать свой сервер и приложения для отправки сообщений, или воспользоваться платными сервисами вроде Pushbullet, Pushsafer или Pushover. Методика схожа с остальными: регистрируемся, получаем токен, ставим приложения или расширения браузера и шлем сообщения хоть многострадальным curl.

Выбор конкретного сервиса зависит от ценника. В общем и целом все они работают примерно одинаково. Некоторые сервисы предоставляют ограниченное количество бесплатных сообщений ― например, у Pushbullet это будет 100 сообщений в месяц.

cwuwkroxlbdy5xzlhkkvyotj-hi.jpegPush уведомления на Android.

С примером конкретных реализаций можно ознакомиться:

  • в материале «Zabbix + Pushbullet: простой способ push-оповещения»;
  • в разделе Zabbix документации Pushsafer;
  • в репозитории zabbix-alertscripts на GitHub.

Уведомления в мессенджеры на телефоны ― это, конечно, хорошо. Но только до тех пор пока у сервера Zabbix есть выход в интернет. Для гарантированного получения уведомлений при сбоях в сети лучше использовать традиционные каналы связи.

Zabbix «из коробки» поддерживает возможность отправлять SMS. К сожалению, он умеет это делать только через последовательный интерфейс. Если у вас завалялся Siemens MC35 или что-то подобное, то с настройками отправки СМС можно ознакомиться в документации Zabbix в разделе SMS.

Помимо такого архаичного варианта, можно воспользоваться сервисом для отправки СМС вроде sms.ru. Благо они все поддерживают разного рода API. Некоторые предоставляют и e-mail шлюз, и для настройки уведомлений не понадобится писать скрипты. Самое главное при выборе шлюза ― проверить его на предмет задержек доставки СМС.

bbq7o1bz3drvsx8fuemyhke7bdc.jpegНастройка скрипта для уведомлений по СМС.

С примером настройки Zabbix можно ознакомиться в статье «Бесплатная отправка SMS-уведомлений в Zabbix».

Отправка СМС через внешний шлюз не решит проблему отсутствия интернета на сервере в отличие от отправки через аппаратные устройства с симкой. В качестве бюджетного варианта можно использовать USB-модем ― например, Huawei e1550.

Пошаговую инструкцию можно посмотреть в материале «Оповещения Zabbix через sms, используя GSM модем. Простая настройка».

СМС можно пропустить запросто, а вот телефонный звонок ― уже сложнее. Поэтому для особо срочных уведомлений можно настроить Zabbix на телефонные звонки. Выходов, как обычно, несколько.

Простым решением будет использование внешнего сервера SIP. Для этого понадобится библиотека PJSIP, которую можно применить как консольный SIP-клиент. Для генерации голосового сообщения подойдет утилита text2wave из комплекта генерации речи Festival. Собрав все в кучу и добавив скриптовой магии, можно быть разбуженным заботливым сервером мониторинга.

Пример реализации детально описан в статье «Оповещения из Zabbix телефонным звонком».

Альтернативным вариантом станет использование своей АТС на базе Asterisk и обращение к ней с помощью специальных call-файлов или по интерфейсу AMI. Тогда, при наличии независимого от интернета канала связи вроде аналоговой линии или потока Е1, можно будет выслушать проблемы вашего сервера.

Описание решения доступно в материале «Оповещение о проблемах Zabbix по телефону через Asterisk».

В статье я постарался привести ссылки на основные решения для уведомлений инженеров о проблемах. Главное, при проектировании системы мониторинга учесть возможность отсутствия интернета и не забыть про дублирующую систему, ответив себе на извечный вопрос «Quis custodiet ipsos custodes?». И, конечно же, не нужно превращать сервер мониторинга в спамера, иначе уведомления станут бессмысленны.

Если вы используете какой-то другой способ оповещения ― мы ждем его в комментариях.

Используемые источники:

  • https://tradenark.com.ua/monitoring/zabbix/zabbix-notification-to-telegram-with-bot/
  • http://ithelp21.ru/nastroyka-opoveshteniy-zabbix-v-telegram/
  • https://pikabu.ru/story/uvedomleniya_sistemyi_monitoringa_zabbix_v_telegram_4401486
  • https://sysadmin-note.ru/opoveshheniya-zabbix-cherez-telegram/
  • https://habr.com/post/353652/

Оцените статью
Рейтинг автора
5
Материал подготовил
Илья Коршунов
Наш эксперт
Написано статей
134
Добавить комментарий