Оповещения Zabbix через Telegram

zabbix+telegram

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

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

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

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

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

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

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

Добавление бота

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

 

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

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

Настройка Zabbix Telegram

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

Настройка способа оповещения через telegram

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

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

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

Тип — Скрипт

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

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

{ALERT.SENDTO}

{ALERT.SUBJECT}

{ALERT.MESSAGE}

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

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

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

Добавление способа оповещения пользователю

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

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

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

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

Настройка действий

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

Действие:

 

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

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

Операции:

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

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

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

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

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

Заключение

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

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

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

11 комментариев

  • Добрый день! Все перепроверил на сто раз. Выдает ошибку Timeout while executing a shell script. Таймаут в настройках сервера увеличил до 15…. не помогло.

    • Добрый день!
      Это в панель zabbix у вас данная ошибка или в логах?

      1) Wget установлен?

      2) Если заменить переменные в скрипте:
      $1 — Ваш токкен
      $2 — произвольный текст
      $2 — произвольный текст
      Вы получаете сообщение нормально?

      3) Включите Debug=4 на стройках zabbix_server.conf и после срабатывания пришлите лог, что внутри?

  • Добрый день.
    Заббикс в журнале действий показывает что отчет ушел в телеграм. Но не вижу в телеграмме отчета в Cier bot.

    • Попробуйте через консоль выполнить:
      wget -O /dev/null «http://crierbot.appspot.com/ВАШ_ТОКЕН/send?message=TEST»
      Что получите в ответ? Если токен верный, то от бота Вы получите сообщение — TEST.

  • Добрый день подскажите пожалуйста,уже несколько дней не могу настроить, в журнале ошибка /usr/local/etc/zabbix34/zabbix/alertscripts/telegram.sh: not found
    в чем может быть проблема?

    • В ошибке как то явно написано что не может найти данный файл, скрипт лежит там?
      А если выполнить:
      ls -l /usr/local/etc/zabbix34/zabbix/alertscripts/

      Вывод можете написать сюда или в чат телеграмм: https://t.me/sysadminnote

    • root@zabbix:/usr/home/Odamin # ls -l /usr/local/etc/zabbix34/zabbix/alertscripts/
      total 12
      -rwxr-xr-x 1 zabbix zabbix 585 Nov 21 16:07 telegram.sh

      все на месте лежит само собой.

    • Очень странно конечно это. А версия заббикса какая? В «морде» все настроено верно, по скриншотам?
      Еще бы глянуть zabbix_server.conf, то место, где описывается путь к скриптам (хотя, судя по ошибке из лога, смотрит он прям туда)

  • что-то вручную проверку не проходит.

    отправляю запрос
    wget -O /dev/null «http://crierbot.appspot.com/4yegsYkUXI0FPAW…MomjfEuK/send?message=TEST»
    получаю ответ
    «http://crierbot.appspot.com/4yegsYkUXI0FPAW…ZMomjfEuK/send?message=TEST»: Scheme missing.

Добавить комментарий

Ваш e-mail не будет опубликован.