Оповещения 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:

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

52 комментария

  • Добрый день! Все перепроверил на сто раз. Выдает ошибку 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.

  • wget -O /dev/null
    выдает Missing: Command not found.

    сделал все по инструкции, wget установлен, заббикс 3.2

    • wget -O /dev/null «http://crierbot.appspot.com/мой токен/send?message=TEST»

    • Отправил без параметров, оказало нет wget, установил, такая же беда (freebsd11) на centos нормально получилось отправить, где искать, подскажите проблему, freebsd 11 wget установлен.

    • система обновляется регулярно? У меня у самого на freebsd 11 вертится zabbix. Только что проверил, все работает. Попробуйте обновить пакеты и переустановить wget

  • Здравствуйте.

    Настроил по описанию.

    Сделал вручную отправку wget -O /dev/null «http://crierbot.appspot.com/4yegsYkUXI0FPAW…MomjfEuK/send?message=TEST» все отлично.

    В ZABBIX сработал триггер, написано, что «Отправлено», но ничего не пришло. Токен перепроверил — правильный.

    Подскажите, где можно посмотреть логи?

    ОС: Linux CentOS
    ZABBIX: 3.2.11

    • Добавлю. Действие использую такое же, что и по умолчанию для EMAIL.

    • Здравствуйте.
      Токен не забыли внести в профиль? )
      Включить на zabbix_server.conf:
      DebugLevel=4
      Перезапустить сервер и смотреть лог по пути /var/log/zabbix/zabbix_server.log
      Возможно заббикс не находит wget, попробуйте не просто wget в начале, а вот так:
      /usr/bin/wget «http://crierbot.appspot.co….

  • Заработало. Блокнот Windows поставил какие-то метки. Убрал их и все заработало.

    Большое спасибо за статью )

  • Здравствуйте.
    Настроил по описанию.
    Сделал вручную отправку wget -O /dev/null «http://crierbot.appspot.com/TOKEN/send?message=TEST» все отлично. Test пришел.
    Триггер срабатывает, но сообщение не оправляется выдаёт ошибку:
    Connecting to crierbot.appspot.com (74.125.200.153:80)
    wget: server returned error: HTTP/1.1 400 Bad Request
    /usr/lib/zabbix/alertscripts/telegram.sh: line 3: Message:: command not found
    Полагаю что-то не так с переменными {ALERT.SENDTO}, {ALERT.SUBJECT} и {ALERT.MESSAGE}. Я их добавил аналогично инструкции. Но по каким-то причинам скорее всего они не передаются в скрипт. Сейчас скрипт имеет вид:
    #!/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= Subject: $2 || Message: $3»

    Да нужно уточнить что если скрипт имеет вид:
    #/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=$2
    то пришло сообщение: PROBLEM (это значение переменной {TRIGGER.STATUS}
    но если посмотреть по Action log то сообщение не отправилось и и вот такая ошибка:
    Connecting to crierbot.appspot.com (74.125.200.153:80)

    wget: bad address ‘TRIGGER.NAME}’
    /usr/lib/zabbix/alertscripts/telegram.sh: line 3: Problem: command not found)
    Подскажите пожалуйста что нужно поправить. За ранее большое спасибо!

    • Здравствуйте!
      А откуда пробела у Вас после знака «равно» в:
      wget -O /dev/null «http://crierbot.appspot.com/$1/send?message= Subject: $2
      Это Вы так скопировали от себя? Если да, то попробуйте его убрать от туда, привести к виду:
      …ot.com/$1/send?message=Subje…

  • Убрал, привел к виду:
    #!/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=Subject: $2 || Message: $3»

    Connecting to crierbot.appspot.com (74.125.200.153:80)
    wget: server returned error: HTTP/1.0 400 Bad Request

    • Если заменить $1 на Ваш токен и $2 и $3 на любой тескт, и выполнить скрипт, что будет?

  • Скрипт выполняет как вручную, так и при срабатывании триггера zabbix и от бота приходит этот самый любой текст.

    • ХМ… Очень странно… Что с параметрами не так получается. Попробуйте обновить zabbix, проверьте правильность параметром (попробуйте не скопировать, а написать вручную их). Возможно не верно копируется какой либо символ или берется как то пробел в начале или конце…

  • Здравствуйте, будете что нибудь делать с обходом блокировки ркн? Заббикс перестал слать в телегу?

    • —2018-04-18 12:44:26— http://crierbot.appspot.com/мойтокен/send?message=TEST
      Resolving crierbot.appspot.com (crierbot.appspot.com)… 2a00:1450:4010:c07::99, 64.233.164.153
      Connecting to crierbot.appspot.com (crierbot.appspot.com)|2a00:1450:4010:c07::99|:80… failed: Address family not supported by protocol family.
      Connecting to crierbot.appspot.com (crierbot.appspot.com)|64.233.164.153|:80… connected.
      HTTP request sent, awaiting response… 500 Internal Server Error
      2018-04-18 12:44:32 ERROR 500: Internal Server Error.

    • Возможно что то не так делаете? Вот мой запрос, сообщение удачно получено:

      @zserver3 ~ $ wget -O /dev/null «http://crierbot.appspot.com/МОЙ_ТОКЕН/send?message=TEST»
      —2018-04-18 09:59:55— http://crierbot.appspot.com/МОЙ_ТОКЕН/send?message=TEST
      Resolving crierbot.appspot.com (crierbot.appspot.com)… 173.194.222.153, 2a00:1450:4010:c01::99
      Connecting to crierbot.appspot.com (crierbot.appspot.com)|173.194.222.153|:80… connected.
      HTTP request sent, awaiting response… 200 OK
      Length: 0 [text/html]
      Saving to: ‘/dev/null’

      /dev/null [ <=> ] 0 —.-KB/s in 0s

      2018-04-18 09:59:55 (0.00 B/s) — ‘/dev/null’ saved [0/0]

    • CrierBot хостится на Американских серверах, в GAE, поэтому проблем с отправкой возникать не должно… Только в работе Вашего клиента возможны перебои.

      И да, данный бот — это не моя разработка) Я просто описал инструкцию, как его настроить.

    • Проблем то нету, сегодня все отправляется нормально, вчера вечером тоже. Просто в один момент пытался отправить выдал такую ошибку, что к хосту не может подцепится, подумал может блокировка.

    • Вы уверены, что это санкции? Может быть что то не так делаете или какой лишний символ в строке? Можете скинуть запрос-ответ, если вручную запустить скрипт?

  • А можете написать как настроить оповещения из Zabbix в группу в Telegram через Crier но с возможностью вставлять графики ?

    • Ну с графиками через Crier не получится отправлять, это через Python скрипт надо делать. Хорошо, я напишу на днях, как это делать.

    • Если делать в общий чат, а не на человека, то надо добавить бота в общий чат и после этого написать в чате /start, бот выдаст токен на чат и будет писать в него

  • Добрый день,
    где можно искать проблему, если в телеграм отправляются не полные сообщения из заббикса (урезается до определенного количества символов?

    • На сколько большие сообщения у Вас выходят? Не сталкивался с такой проблемой. Может Бот передает не более скольких то символов? Попробуйте все свое сообщение отправить напрямую через WGET, подставив свой токен, если пройдет полностью, то смотреть уже заббикс, если нет — то вопрос к боту

  • Сообщения в телеграм приходят в размере 130 символов, сами сообщения раза в 4 больше должно быть.

  • через консоль отправляет нормально
    В самом zabbix ерунду пишет
    2019-03-20 17:38:48— http://crierbot.appspot.com/TOKEN/send?message=Subj:Problem:%20Test%20%D1%82%D0%B5%D0%BC%D0%BF%D0%B5%D1%80%D0%B0%D1%82%D1%83%D1%80%D0%B0%20%7C%7C%20Message:TRIGGER:%20Test%20%D1%82%D0%B5%D0%BC%D0%BF%D0%B5%D1%80%D0%B0%D1%82%D1%83%D1%80%D0%B0HOST:%20Schneider_SecondaryIMPORTANCE:%20Not%20classifiedNOMBER%2010363
    Распознаётся crierbot.appspot.com (crierbot.appspot.com)… ошибка: Имя или служба не известны.
    wget: не удаётся разрешить адрес «crierbot.appspot.com»

  • что-то случилось с сервером((

    wget -O /dev/null http://crierbot.appspot.com/Nr4bEYcL…GfPQ3i7dC9RZO/send?message=TEST
    —2019-07-19 17:18:48— http://crierbot.appspot.com/Nr4bEYcL…GfPQ3i7dC9RZO/send?message=TEST
    Resolving crierbot.appspot.com (crierbot.appspot.com)… 64.233.165.153, 2a00:1450:4010:c08::99
    Connecting to crierbot.appspot.com (crierbot.appspot.com)|64.233.165.153|:80… connected.
    HTTP request sent, awaiting response… 500 Internal Server Error
    2019-07-19 17:18:49 ERROR 500: Internal Server Error.

    • Пробуйте еще раз или что то провайдер ваш не пускает. Вот только что проверил, сообщение пришло

      [root@zabbix ~]# wget -O /dev/null http://crierbot.appspot.com/LhbTlCHK…..4gqnwN8kGfE9aJz/send?message=TEST
      —2019-07-19 14:44:37— http://crierbot.appspot.com/LhbTlCHK…..4gqnwN8kGfE9aJz/send?message=TEST
      Resolving crierbot.appspot.com (crierbot.appspot.com)… 64.233.162.153, 2a00:1450:4010:c05::99
      Connecting to crierbot.appspot.com (crierbot.appspot.com)|64.233.162.153|:80… connected.
      HTTP request sent, awaiting response… 200 OK
      Length: 0 [text/html]
      Saving to: ‘/dev/null’

      [ <=> ] 0 —.-K/s in 0s

      2019-07-19 14:44:38 (0.00 B/s) — ‘/dev/null’ saved [0/0]

    • Добрый день. Конечно можно. Напишите в $3 по русски, и будет на русском приходить. У меня на скриншотах же на русском.

  • я имею в виду, чтобы вместо Problem писало Проблема и тд. Я написал так в S3 но не получается
    Начало проблемы {EVENT.TIME} on {EVENT.DATE}
    Имя триггера: {EVENT.NAME}
    Host: {HOST.NAME}
    Важность: {EVENT.SEVERITY}

    Original problem ID: {EVENT.ID}
    {TRIGGER.URL}

    • Саму Problem как статус переименовать не получится, а так — переименовывать сами триггеры в русский…

  • When organizing Inner parts renovators New york city or even General development New York, experienced professionals as well as established property materials are favored.

    However we are being actually called certainly not simply for these reasons. Along with each customer of the provider our experts build one of the most having faith in connections, thanks to the observing features:

    Initial budgeting as well as mistake of the expense of fixing an apartment;
    Sending regular records on the progression of repair work;
    Interior renovations, General building— services that are actually given by several companies in New york. However our firm stays the market innovator for many years. On our account, a significant variety of instances of collaboration with both people and also corporations. home remodeling nyc;
    Going over the degree of preferred costs of building materials;

    The manufacture of ornamental aspects as well as home furniture for an private design that can easily change any kind of space.

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

Ваш адрес email не будет опубликован.