Home » Мониторинг » Zabbix » Отправка уведомлений и графиков из zabbix в telegram

Отправка уведомлений и графиков из zabbix в telegram

Я чаще всего использую стандартные уведомления от zabbix на почтовый ящик, это позволяет спокойно спать. Тем не менее, решил пойти в ногу со временем и попробовать настроить отправку оповещений из zabbix в популярный мессенджер telegram. К тому же я постоянно активно пользуюсь этим мессенджером и считаю его очень удобным.

Теоретический курс по основам сетевых технологий. Позволит системным администраторам упорядочить и восполнить пробелы в знаниях. Цена очень доступная, есть бесплатный доступ. Все подробности по . Можно пройти тест на знание сетей, бесплатно и без регистрации.

Введение

Способов настройки уведомлений из заббикса в телеграм существует несколько. Их можно разделить по информативности:

  • Отправка только текстовых оповещений.
  • Отправка графиков.

Так же можно разделить по типу реализации:

  • Использовать встроенный webhook в zabbix.
  • Написать свой простой скрипт для уведомлений.
  • Взять готовую реализацию уведомлений в telegram на github.

Я постараюсь разобрать все возможные варианты. Идти будем от простого к сложному. Сначала настроим текстовые оповещения, потом добавим графики. Отправлять будем как в личку, так и в группу.

Кстати, еще один способ отправки уведомлений из zabbix - с помощью звонка через asterisk. Если вам это интересно, читайте соответствующий материал - оповещения zabbix через asterisk.

Я буду настраивать все в zabbix 5.0, установленный на Centos 8. Принципиального значения это не имеет, решение будет одинаково работать практически на всех дистрибутивах linux.

Если у вас еще нет своего сервера для мониторинга, то рекомендую материалы на эту тему. Для тех, кто предпочитает систему CentOS:

  1. Установка CentOS 8.
  2. Настройка CentOS 8.
  3. Установка и настройка zabbix сервера.

То же самое на Debian 10, если предпочитаете его:

  1. Установка Debian 10.
  2. Базовая настройка Debian.
  3. Установка и настройка zabbix на debian.

Создание бота в telegram

Первым делом создадим бота, через которого будем слать оповещения из заббикса. Для этого добавляем себе в контакты @BotFather и пишем ему сначала /start, потом /newbot.

Создание бота в telegram

Мы создали бота для оповещений и получили для него token, который нам понадобится далее. Теперь нужно добавить в свой список контактов созданного бота. Для этого найдите его по имени. В моем случае имя @serveradminru_bot.

Теперь проверим, как работает отправка уведомлений через нашего бота. Для этого в консоли сервера набираем примерно такую команду:

# curl --header 'Content-Type: application/json' --request 'POST' --data '{"chat_id":"210806260","text":"Проверяю отправку оповещений ботом"}' "https://api.telegram.org/bot1393668911:AAHDfgghTHgfhdfyX28R-wxKfvH1WR6-vdNw/sendMessage"

Бот пришлет оповещение.

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

В моем запросе изменяемые данные следующие:

210806260 id моего аккаунта. Чтобы его узнать, добавьте бота @my_id_bot и напишите ему /start
Проверяю работу бота Текст сообщения
bot1393668911:AAHDfgghTHgfhdfyX28R-wxKfvH1WR6-vdNw Слово bot и дальше token бота. Пишется все в одно слово.

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

Отправка уведомлений в telegram через webhook

Начиная с 5-й версии, в Zabbix из коробки работают уведомления в telegram через механизм webhook. Чтобы настроить его, переходите в Администрирование -> Способы оповещений и выбирайте там Telegram.

Отправка уведомлений в telegram через webhook

Внутри увидите некоторые параметры. Можно так же посмотреть текст скрипта, который используется для отправки оповещений. В целом, тут сейчас не обязательно что-то менять. Дефолтные настройки полностью рабочие. Надо только указать токен бота.

Настройка токена бота

Тут же можете шаблоны поправить так, как вам нравится. Это нововведение 5-й версии Zabbix - правка шаблонов оповещений в настройках самих оповещений. Это позволяет создавать для каждого типа свои шаблоны. Очень удобно.

Давайте теперь проверим отправку уведомлений через этот способ. Нажимайте Тест.

Тест отправки уведомлений в телеграм

Я указал текст сообщения, заголовок, свой id и token бота. В итоге мне в личку пришло сообщение от бота.

Проверочное сообщение

Если хотите отправить оповещение в группу, то сначала создайте ее, а потом добавьте туда бота. Не потеряйте минус в id группы. Его тоже нужно указывать. Я сначала не понял этого и копировал id группы без минуса. В итоге, оповещения в группу не отправлялись.

Тестовое уведомление в группу telegram

Итак, убедились, что сообщения в telegram нормально отправляются. С технической стороны проблем нет. Теперь настроим отправку уведомлений по событиям. Я обычно для этого использую тестовый триггер. В стандартном шаблоне zabbix для OS Linux есть элемент данных Number of logged in users, который считает количество залогиненных пользователей. Я для него делаю триггер, чтобы он срабатывал, когда пользователей 2 и более. И с его помощью тестирую уведомления, просто подключаясь на сервер по ssh двумя подключениями одновременно.

Проверочный триггер

Теперь идем в настройки пользователя и добавляем ему способ оповещений через telegram.

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

Если у вас ранее не работали никакие уведомления, то не забудьте активировать Действия.

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

У нас все настроено для отправки оповещений в telegram. Добейтесь срабатывания триггера и проверяйте телеграм канал, в который настроили отправку сообщений.

Проверка работы уведомлений в telegram

Сообщение от триггера

Все работает. Если вам достаточно такого функционала, то можно оставлять и пользоваться. Но как по мне, так бледновато эти уведомления выглядят. Можно немного шаблоны изменить, чтобы было более читаемо. Так же есть возможность все настроить более красиво и наглядно, да еще и с графиками. Дальше я расскажу еще 2 разных способа отправки уведомлений из zabbix в telegram с графиками и готовыми ссылками на события.

Настройка zabbix на отправку графиков в telegram

Для отправки графиков в telegram предлагаю воспользоваться известным скриптом на питоне - https://github.com/ableev/Zabbix-in-Telegram. Пользуясь случаем, передаю благодарность автору за его создание. Копируем исходники себе.

# cd ~
# git clone https://github.com/ableev/Zabbix-in-Telegram

Нам нужно будет установить несколько модулей python, перечисленные в requirements.txt. Для этого нам понадобится pip. Ставим его и модули.

# dnf install python3-pip
# pip3 install -r requirements.txt

Установка модулей python

Копируем в директорию /usr/lib/zabbix/alertscripts файлы zbxtg.py и zbxtg_settings.example.py из скачанного с github проекта. Последний переименовываем в zbxtg_settings.py. Назначаем пользователя zabbix владельцем этих файлов.

# chown -R zabbix. /usr/lib/zabbix/alertscripts

Приводим содержимое zbxtg_settings.py примерно к такому виду.

# -*- coding: utf-8 -*-

tg_key = "1393668911:AAHtEDfgHJHYDVDwxKfvH1WR6-vdNw"  # telegram bot api key

zbx_tg_prefix = "zbxtg"  # variable for separating text from script info
zbx_tg_tmp_dir = "/var/tmp/" + zbx_tg_prefix  # directory for saving caches, uids, cookies, etc.
zbx_tg_signature = False

zbx_tg_update_messages = True
zbx_tg_matches = {
    "problem": "PROBLEM: ",
    "ok": "OK: "
}

zbx_server = "http://127.0.0.1/zabbix/"  # zabbix server full url
zbx_api_user = "Admin"
zbx_api_pass = "zabbix"
zbx_api_verify = True  # True - do not ignore self signed certificates, False - ignore

#zbx_server_version = 2  # for Zabbix 2.x version
#zbx_server_version = 3  # for Zabbix 3.x version, by default, not everyone updated to 4.x yet
zbx_server_version = 4  # for Zabbix 4.x version, default will be changed in the future with this

zbx_basic_auth = False
zbx_basic_auth_user = "zabbix"
zbx_basic_auth_pass = "zabbix"

proxy_to_zbx = None
proxy_to_tg = None

# proxy_to_zbx = "http://proxy.local:3128"
# proxy_to_tg = "https://proxy.local:3128"

# proxy_to_tg = "socks5://user1:password2@hostname:port" # socks5 with username and password
# proxy_to_tg = "socks5://hostname:port" # socks5 without username and password
# proxy_to_tg = "socks5h://hostname:port" # hostname resolution on SOCKS proxy. 
                                          # This helps when internet provider alter DNS queries.
                                          # Found here: https://stackoverflow.com/a/43266186/957508

google_maps_api_key = None  # get your key, see https://developers.google.com/maps/documentation/geocoding/intro

zbx_tg_daemon_enabled = False
zbx_tg_daemon_enabled_ids = [6931850, ]
zbx_tg_daemon_enabled_users = ["ableev", ]
zbx_tg_daemon_enabled_chats = ["Zabbix in Telegram Script", ]

zbx_db_host = "localhost"
zbx_db_database = "zabbix"
zbx_db_user = "root"
zbx_db_password = "123"


emoji_map = {
    "Disaster": "🔥",
    "High": "🛑",
    "Average": "❗",
    "Warning": "⚠️",
    "Information": "ℹ️",
    "Not classified": "🔘",
    "OK": "✅",
    "PROBLEM": "❗",
    "info": "ℹ️",
    "WARNING": "⚠️",
    "DISASTER": "❌",
    "bomb": "💣",
    "fire": "🔥",
    "hankey": "💩",
}

Жирным я выделил те параметры, что нужно поменять. Вам необходимо указать token от бота, который мы ранее создавали, полный url адреса сервера с zabbix. Обратите внимание на этот урл. Не факт, что у вас по localhost/zabbix/ будет открываться web интерфейс Zabbix. Это зависит от настроек Web сервера. Лично я указал просто http://localhost. Дальше указываете учетную запись мониторинга. Лучше всего сделать отдельную учетку с доступом только на чтение. Она нужна для получения графиков. И в конце нужно будет указать параметры доступа к базе данных заббикса. При желании, можете и иконки emoji изменить. Я меняю местами PROBLEM и WARNING. Желтый треугольник на проблемах смотрится более наглядно.

Сохраняем конфиг и проверяем работу скрипта. Если вы только создали бота, то не забудьте ему написать личное сообщение, для настройки персональных сообщений, либо из группы, чтобы он мог слать оповещения в группу. Если этого не сделать, получите ошибку.

zbxtg.py: User 'zeroxzed' needs to send some text bot in private

Проверим из консоли работу скрипта.

# /usr/lib/zabbix/alertscripts/zbxtg.py "@zeroxzed" "тест" "тестовое сообщение" --debug

В личку телеграма должно прийти тестовое сообщение. Если получите ошибку на тему того, что python не найдет, то поменяйте в файле zbxtg.py в самой первой строке python на python3 или создайте символьную ссылку.

Проверка скриптаА в консоли появится примерно такой вывод.

Работа скрипта по отправке сообщений в консоли

То же самое проделаем с группой.

# /usr/lib/zabbix/alertscripts/zbxtg.py "serveradmin_zabbix_group" "тест" "тестовое сообщение" --debug --group

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

Идем в web интерфейс и добавляем 2 новых способа оповещений с помощью скрипта. Один для персональных сообщений, второй для групповых. Во втором случае надо добавить ключ --group, все остальное идентичное.

Оповещения в приват телеграма

Уведомления в telegram group

Так же нам нужно настроить шаблоны оповещений. Я предлагаю следующий вариант. Тип сообщений Проблема.

Тема по умолчанию {{WARNING}} {HOST.NAME} - {TRIGGER.STATUS}: {TRIGGER.NAME}
Сообщение по умолчанию Последнее значение: {ITEM.VALUE1} ({TIME})
zbxtg;graphs
zbxtg;graphs_period=1800
zbxtg;itemid:{ITEM.ID1}
zbxtg;title:{HOST.HOST} - {TRIGGER.NAME}
Важность триггера: {TRIGGER.SEVERITY}
Host: {HOSTNAME} ({HOST.IP})
Описание:
{TRIGGER.DESCRIPTION}

Шаблон проблемы

  • {{WARNING}} - макрос для выставления иконки emoji с восклицательным знаком
  • zbxtg;graphs - указывает, что будем отправлять график
  • zbxtg;itemid:{ITEM.ID1} - параметр автоматически определяет itemid для графика на основании информации об итеме в триггере, можно указать нужный itemid вручную
  • zbxtg;title - задает имя для заголовка графика

Все остальное понятно по смыслу, так как относится к стандартным макросам zabbix. Вот полный список параметров, которые поддерживает скрипт:

zbxtg;graphs включает отправку графиков
zbxtg;graphs_period=10800 период за который строится график
zbxtg;graphs_width=700 ширина графика
zbxtg;graphs_height=300 высота графика
zbxtg;itemid:{ITEM.ID1} выбор itemid для графика на основе триггера
zbxtg;title:{HOST.HOST} - {TRIGGER.NAME} заголовок графика
zbxtg;debug включает режим отладки, некоторая дополнительная информация сохраняется в tmp_dir
zbxtg;channel включает возможность отправки оповещения в telegram channel
zbxtg;to:username1,username2,username3 можно сразу в шаблоне указать, кому будут отправляться оповещения
zbxtg;to_group:Group то же самое, что выше, только для групп

Для операции восстановления шаблон попроще.

Тема по умолчанию {{OK}} {HOST.NAME} - {TRIGGER.STATUS}: {TRIGGER.NAME}
Сообщение по умолчанию Server: {HOSTNAME} ({HOST.IP})
Описание:
Проблема устранена!
Время устранения проблемы: {DATE} {TIME}

Шаблон восстановления

И для подтверждения.

Тема по умолчанию {{OK}} {HOST.NAME} - {TRIGGER.STATUS}: {TRIGGER.NAME}
Сообщение по умолчанию {USER.FULLNAME} подтвердил проблему {ACK.DATE} {ACK.TIME} со следующим сообщением:
{ACK.MESSAGE}Текущее состояние проблемы {EVENT.STATUS}

Шаблон обновления

Разные оповещения о разных событиях

Далее показываю на примере, как можно слать уведомления в личку и в группу, одновременно и по отдельности, в зависимости от настроенных условий. По каким-то действиям пишем в личку, по каким-то в группу. Достаточно просто сделать 2 отдельных пользователя для этого. Одному настроить в качестве способа оповещений личные сообщения, а второму указать группу. Затем в действиях, указывая, какому пользователю отправлять сообщение, выбирать способы уведомлений.

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

Создание группы в zabbix

Если учетка техническая, только для оповещений, то доступ к веб интерфейсу можно не делать. Даем ей права доступа на чтение только к группе Zabbix servers, так как будем слать уведомления только по триггерам этого хоста.

Права доступа группы

Теперь добавляем пользователя и помещаем его в эту группу.

Добавление пользователя в zabbix

Добавляем ему telegram группу в способы оповещения. Добавлять можно не по id, а по имени группы, так удобнее.

Настройка оповещений в telegram группу

Так же добавим персональные уведомления telegram пользователю admin. Здесь уже указываем id учетной записи .

Приватные уведомления в телеграм

Настраиваем действия. В данном примере я делаю отправку всех уведомлений пользователю Admin, у которого в способах оповещений указана личка telegram. А сообщения по конкретному триггеру Zabbix server: Zabbix agent is not available (for 3m) пользователю tg-group, у которого указана группа telegram.

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

Думаю, идею вы поняли. Можно очень гибко настроить уведомления в Zabbix и это очень круто и удобно. И работает из коробки. Проверим теперь, как будут выглядеть оповещения в telegram. Останавливаем на сервере zabbix-agent и ждем работы триггера с оповещениями.

Проверка работы уведомлений в telegram

Проверяем телеграм и видим там одинаковые уведомления и в группе, и в личке.

Сообщение от zabbix в группу

После обновления проблемы или закрытия, придут свои оповещения.

Повторные сообщения от zabbix

При этом, если сработает любой другой триггер, уведомление придет только в личку. В группу ничего не будет отправлено.

Раздельные уведомления разным пользователям

Шаблоны и графики в уведомлениях можете настраивать по своему вкусу. Обращаю внимание на графики. Они приходят в отдельных сообщениях. Далее я покажу еще один скрипт для уведомлений в telegram. Он немного по-другому работает - прикрепляет сразу ссылки на историю и триггер, а так же вкладывает графики в то же сообщение, что и текст.

Обращаю внимание. Для того, чтобы отправлялся график в telegram, он должен существовать в системе мониторинга. Если его нет, то вы будете получать ошибку, вместо графика. Но текстовое оповещение будет приходить нормально.

Если у вас возникают ошибки с отправкой графиков, то проверить их работу можно в консоли. Вот пример запроса.

# sudo -u zabbix ./zbxtg.py zeroxzed test "$(echo -e 'zbxtg;graphs: \nzbxtg;graphs_period=3600\nzbxtg;itemid:23301\nzbxtg;title:ololo')"
zbxtg.py: Bad Request: PHOTO_INVALID_DIMENSIONS
zbxtg.py: Zabbix user couldn't get graph (probably has no rights to get data from host), check script manually, see https://github.com/ableev/Zabbix-in-Telegram/wiki/Graphs

Это нормальный вывод ошибки, которая указывает на то, что выбран itemid 23301, которого либо не существует, либо к нему нет доступа, либо для него нет графика. Если выбрать правильный itemid, то после выполнения скрипта никакого вывода не будет, а в телеграм будет отправлен выбранный график.

Отправка графиков из zabbix в telegram

Оповещения в telegram со ссылками на график и триггер

Расскажу про еще один интересный скрипт для отправки красивых и функциональных оповещений в telegram, в котором помимо всего прочего сразу же публикуются ссылки на триггер, график и некоторые другие полезности. Вот он на гитхабе - https://github.com/xxsokolov/Zabbix-Notification-Telegram. Инструкция от автора в некоторых местах не очень понятная, так что я немного повозился, прежде чем все получилось. В основном c xml были проблемы, но обо всем по порядку.

Клонируем к себе репозиторий.

# cd ~
# git clone https://github.com/xxsokolov/Zabbix-Notification-Telegram

Копируем в /usr/lib/zabbix/alertscripts папку zbxTelegram_files и файлы _config.yml, zbxTelegram.py, .requirements и zbxTelegram_config.example.py. Последний переименовываем в zbxTelegram_config.py.

Делаем пользователя zabbix владельцем этих файлов и разрешаем исполнение скрипта.

# chown -R zabbix. /usr/lib/zabbix/alertscripts
# chmod +x zbxTelegram.py

Автор скрипта предлагает запускать его в виртуальном окружении, поэтому поставим пакет virtualenv.

# dnf install virtualenv

Переходим в /usr/lib/zabbix/alertscripts, создаем виртуальное окружение и активируем его.

# cd /usr/lib/zabbix/alertscripts
# virtualenv venv --python=python3
# source venv/bin/activate

Ставим зависимости и деактивируем окружение.

# pip install -r .requirements
# deactivate

Установка зависимостей скрипта

Редактируем конфигурационный файл zbxTelegram_config.py. Список параметров, которые нужно поменять.

tg_proxy = False
tg_token = '1393668911:AFGHTRDVdfJ28R-wxKfvH1RTR6-vdNw'
zabbix_api_url = 'http://10.20.1.23/zabbix/'
zabbix_api_login = 'Admin'
zabbix_api_pass = 'zabbix'

В url на конце должен обязательно быть слеш. Дальше делаем все то же самое, что и ранее. Идем в Способы оповещений и добавляем новый тип, где в качестве скрипта указываем zbxTelegram.py.

Оповещения в telegram со ссылками

Шаблоны тем сообщений можете настроить как вам больше нравится. Автор предлагает такие:

{Problem} {TRIGGER.SEVERITY} {{TRIGGER.SEVERITY}}: {EVENT.NAME}
{Resolved} {TRIGGER.SEVERITY} {{TRIGGER.SEVERITY}} {EVENT.NAME}
{Update} {TRIGGER.SEVERITY} {{TRIGGER.SEVERITY}} {EVENT.NAME}
  • {Problem} - мапинг значений Problem\Resolved\Update в emoji (config: zabbix_status_emoji_map)
  • {{TRIGGER.SEVERITY}} - мапинг значений Severity в emoji (config: zabbix_status_emoji_map)

В поле Сообщение копируется xml конфиг полностью, который приведен в файле actions.example. Копируйте его 1 в 1.

Типовой шаблон оповещений через скрипт

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

  • <graphs></graphs> - прикреплять график (True\False)
  • <graphlinks>True</graphlinks> - прикрепить ссылку url на History (True\False)
  • <triggerlinks>True</triggerlinks> - прикрепить ссылку url из триггера (True\False)
  • <tag>True</tag> - прикрепить теги (True\False)
  • <graphs_period></graphs_period> - период графика в секундах
  • <itemid></itemid> - передача itemid {ITEM.ID1}
  • <triggerid></triggerid> - передача triggerid {TRIGGER.ID}
  • <eventid></eventid>- передача eventid {EVENT.ID}
  • <title></title> - заголовок графика {HOST.HOST} - {EVENT.NAME}
  • <triggerurl></triggerurl> - передача url из триггера {TRIGGER.URL}
  • <tags></tags> - передача списка тэгов из триггера {EVENT.TAGS}

Проверим работу уведомлений. Сначала через консоль.

# ./zbxTelegram.py @serveradmin_zabbix_group test test

В данном случае слова test менять нельзя. Именно они инициируют отправку тестового сообщения. Вот как оно выглядит.

Уведомление из zabbix в telegram с графиком и ссылками

То же самое можно сделать через web интерфейс.

Проверка отправки

Если все в порядке, подключайте данный тип уведомлений к пользователю, указывайте его в действиях и проверяйте. Уже не буду это подробоно описывать, так как устал. Материал и так очень объемный получился. В итоге уведомления в телеграме от этого скрипта будут выглядеть вот так:

Прпимер сообщения в телеграме

Текст более информативен по дефолту и выглядит приятнее, графики в одном сообщении с текстом. В последней строке есть готовые ссылки на триггер, историю по итему. Только имейте ввиду, что url для ссылок берется из конфига и если у вас там указан localhost, то только с него и можно будет их посмотреть. Так что указывайте внешний, а не локальный url. Из минусов отмечу тоненькие графики без заливки. В скрипте от ableev они более наглядные.

Заключение

Не понравилась статья и хочешь научить меня администрировать? Пожалуйста, я люблю учиться. Комментарии в твоем распоряжении. Расскажи, как сделать правильно!

Теперь у нас zabbix работает современно, модно, молодежно :) Использует telegram для отправки оповещений с графиками, ссылками и т.д. Функционал удобный и настраивается достаточно просто. У меня практически не было затруднений, когда разбирал тему. Беру себе на вооружение и использую по необходимости. Хотя сам не люблю оповещения в телеграме, и чаще всего их отключаю, как и от остальных программ. Не нравится, когда меня в каждую минуту могут отвлечь какие-то события. Проверка почты раз в 30 минут самая подходящая интенсивность для меня.

Тем не менее, при работе коллектива, оповещения в общую группу могут быть очень удобны. Особенно, если только на мониторинге сидят отдельные люди, в чью задачу входит оперативная реакция на события.

Прошлая версия статьи в pdf.

Онлайн курс "DevOps практики и инструменты"

Если у вас есть желание научиться строить и поддерживать высокодоступные и надежные системы, научиться непрерывной поставке ПО, мониторингу и логированию web приложений, рекомендую познакомиться с онлайн-курсом «DevOps практики и инструменты» в OTUS. Курс не для новичков, для поступления нужны базовые знания по сетям и установке Linux на виртуалку. Обучение длится 5 месяцев, после чего успешные выпускники курса смогут пройти собеседования у партнеров. Проверьте себя на вступительном тесте и смотрите программу детальнее по .

Помогла статья? Подписывайся на telegram канал автора

Анонсы всех статей, плюс много другой полезной и интересной информации, которая не попадает на сайт.

Автор Zerox

Владимир, системный администратор, автор сайта. Люблю настраивать сервера, изучать что-то новое, делиться знаниями, писать интересные и полезные статьи. Открыт к диалогу и сотрудничеству. Если вам интересно узнать обо мне побольше, то можете послушать интервью. Запись на моем канале - https://t.me/srv_admin/425 или на сайте в контактах.

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

  1. Андрей

    Здравствуйте, возможно не совсем понимаю, но ведь этот бот легко ищется в поиске, и потом кто угодно может добавить его себе в контакты\группу и тоже будет получать уведомления о всех проблемах в нашей системе ? Например я добавлю себе вашего бота, и буду знать когда у вас какая-нибудь система имеет проблему. Или это не совсем так работает ?

    • Нет, это не так работает. Чтобы бот что-то вам отправлял, надо его настроить. А чтобы его настроить, нужно знать его token. Так что пока ваш токен никто не знает, вашего бота невозможно никак использовать.

  2. Нам нужно будет установить несколько модулей python, перечисленные в requirements.txt. Для этого нам понадобится pip. Ставим его и модули.

    # dnf install python3-pip
    # pip3 install -r requirements.txt - после ввода этой строки в терминал получаю это

    WARNING: Running pip install with root privileges is generally not a good idea. Try `pip3 install --user` instead.
    Could not open requirements file: [Errno 2] No such file or directory: 'requirements.txt'

    Подскажите как исправить

    • Вам нужно выполнить команду в директории с файлом requirements.txt или написать полный путь к нему. В ошибке указано, что файл requirements.txt не найден.

  3. Добрый день, подскажите пожалуйста, как решить проблему
    По 3му способу: https://github.com/xxsokolov/Zabbix-Notification-Telegram

    ERROR: Exception occurred: Username or groupname not found in the cache file. No access occurred or bot is not added to group "test" (Add bot group and/or send message to testzbx_bot)

    test это я условно сейчас написал, так группа по другому называется.
    Права все возможные раздал, действовал строго по инструкции.

    • забыл упомянуть, эта ошибка при отправке тестового сообщения.
      Он проходит через стадии
      INFO: Connection check passed
      INFO: Telegram API: method getUpdate: started
      и после этого как раз выдает ошибку

  4. Константин

    Подскажите, можно ли в отдельную группу телеграм получать сообщение только от одного сервера или нескольких, но не всех серверов прописанных в Заббиксе?

    • Да, можно. В действиях можно ограничивать зону действия уведомлений. Можно добавлять различные условия на основе хостов, триггеров, пользователей и т.д.

  5. Доброго дня!
    все настроил и все работает. Немного раздражает что прихожят по 2 одинаковых сообщения)
    не понял почему и где надо "крутить"?

  6. Добрый день!
    Можно ли настроить оповещения следующим образом?

    Если есть интернет, то все оповещения уходят через Telegram,
    иначе все оповещения уходят через SMS.

    Как только появляется интернет, все оповещения опять уходят через Telegram.

    • По-моему, можно. Но я на 100% не уверен. Надо уточнять, есть ли возможность в действиях делать условие на доставку уведомления по одному из способов.

      • Вот именно, что нет, по-крайней мере в версии Zabbix 5.0.12.
        Я решил спросить у вас, надеясь на то, что возможно вы сталкивались с этим вопросом и решили его по своему.

  7. Я настривал по статье 2 года назад, сейчас необходимо внести изменения, но статья уже не бьётся. Тут уже 5ый заббикс и т.д. Толку от неё 0.

    • Вообще-то от статьи с 4-й версией сейчас будет толку 0, так как 5-я вышла уже давно. Скоро 6-я выходит. Поддерживать статьи под все старые версии у меня нет ни времени, ни желания.

  8. Нашел решение проблемы с графиками, которые перестали отправляться в Zabbix 5.2 (скриптом от ableev).

    В zbxtg_settings.py в переменной zbx_server убрать в конце слэш.
    Было:
    zbx_server = "https://example.com/"
    Стало:
    zbx_server = "https://example.com"

  9. Добрый день, подскажите где ошибка.
    Настроил по этому шаблону https://github.com/xxsokolov/Zabbix-Notification-Telegram, тест работает прекрасно.
    А триггеры сыпет ошибками, в логах вот что:
    [2021-05-20 14:46:45,422] - PID:13099 - main() - zbxTelegram.py:498 - INFO: Send to -xxxxxxxxxx action: {Problem} Average {Average}: Zabbix agent is not available (for 3m)
    [2021-05-20 14:46:45,558] - PID:13099 - get_chart_png() - zbxTelegram.py:194 - ERROR: Exception occurred: cannot identify image file

    И естественно ничего не приходит, подскажите куда копать?

  10. Ильнур

    Добрый день!
    Прошу помочь.
    Все настроил по вашей инструкции. Спасибо что все доступно объяснили.
    Сообщения о возникших проблемах приходят на telegram.
    Возникла проблема с отправкой графиков. Версия Zabbix 5.2.6
    Вместо графика пишет следующее:
    Zabbix получил некорректный запрос. Поле "from" не корректно: ожидался период времени.

    • Ильнур

      Решил. Моя ошибка в оформлении шаблона.
      Еще раз спасибо Владимир, за отличную статью!

  11. Аноним

    все работает просто огонь, спасибо!

  12. Максим

    Здравствуйте!
    По какой-то причине, не отправляются не только графики но и обычные сообщения в телеграм. Тест из консоли - работает. Тест из настройки Media Telegram в Zabbix - работает. Добавил пользователю Media Telegram. Добавил Action Send message to user через Telegram. Возникает Problem - через веб интерфейс всплывает сообщение, а в телеграм не приходит. Подскажите, пожалуйста, куда копать.
    Спасибо!

    • В веб интерфейсе можно посмотреть статус отправки всех оповещений по триггеру. У вас там что на тему уведомлений в телеграм?

  13. Аноним

    кто то может поделиться скриптом который начинается var Telegram = {...

    • Аноним

      Вообще на githab'е есть но вот:
      var Telegram = {
      token: null,
      to: null,
      message: null,
      proxy: null,
      parse_mode: null,

      sendMessage: function() {
      var params = {
      chat_id: Telegram.to,
      text: Telegram.message,
      disable_web_page_preview: true,
      disable_notification: false
      },
      data,
      response,
      request = new CurlHttpRequest(),
      url = 'https://api.telegram.org/bot' + Telegram.token + '/sendMessage';

      if (Telegram.parse_mode !== null) {
      params['parse_mode'] = Telegram.parse_mode;
      }

      if (Telegram.proxy) {
      request.setProxy(Telegram.proxy);
      }

      request.AddHeader('Content-Type: application/json');
      data = JSON.stringify(params);

      // Remove replace() function if you want to see the exposed token in the Log file.
      Zabbix.Log(4, '[Telegram Webhook] URL: ' + url.replace(Telegram.token, ''));
      Zabbix.Log(4, '[Telegram Webhook] params: ' + data);
      response = request.Post(url, data);
      Zabbix.Log(4, '[Telegram Webhook] HTTP code: ' + request.Status());

      try {
      response = JSON.parse(response);
      }
      catch (error) {
      response = null;
      }

      if (request.Status() !== 200 || typeof response.ok !== 'boolean' || response.ok !== true) {
      if (typeof response.description === 'string') {
      throw response.description;
      }
      else {
      throw 'Unknown error. Check debug Log for more information.'
      }
      }
      }
      }

      try {
      var params = JSON.parse(value);

      if (typeof params.Token === 'undefined') {
      throw 'Incorrect value is given for parameter "Token": parameter is missing';
      }

      Telegram.token = params.Token;

      if (params.HTTPProxy) {
      Telegram.proxy = params.HTTPProxy;
      }

      if (['Markdown', 'HTML', 'MarkdownV2'].indexOf(params.ParseMode) !== -1) {
      Telegram.parse_mode = params.ParseMode;
      }

      Telegram.to = params.To;
      Telegram.message = params.Subject + '\n' + params.Message;
      Telegram.sendMessage();

      return 'OK';
      }
      catch (error) {
      Zabbix.Log(4, '[Telegram Webhook] notification failed: ' + error);
      throw 'Sending failed: ' + error + '.';
      }

  14. zbxtg.py: Bad Request: IMAGE_PROCESS_FAILED на Centos 8 и Zabbix 5.2
    Так и не понял пока как победить

    • Кирилл

      Аналогичная проблема. Решение так и не нашел

      • Кирилл

        Содержимое png вот. Но вроде логинюсь.

        Warning [refreshed every 30 sec.]

        You are not logged inYou must login to view this page.If you think this message is wrong, plesetTimeout('document.location.reload();', 30000);

    • Сергей

      В конфиге
      попробуйте убрать / в конце url адреса. Так "zbx_server = "http://127.0.0.1/zabbix" # zabbix server full url". М
      не помогло.

  15. Добрый день."
    Zabbix 5.0.8.
    В настройках "администрирование/способы оповещений" нет шаблона "Telegram" (как и многих других, показанных в данной статье). С чем это может быть связано?

    Прочтя комментарии понял, что придется вручную добавлять этот способ. Скачал шаблон отсюда "https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/media/telegram". При попытке его импорта Zabbix пишет: "Ошибка при импортировании. Неподдерживаемое расширение файла импорта "yaml".
    Помогите, пжлста, советом как добавить способ оповещения через Telegram

  16. Вроде все настройки сделал правильно, я все это делал не на локальном компе , а на сервере, и меня при тестовой отправке уже в самом заббиксе выходит ошибка, Media type test failed. Cannot execute command "/usr/lib/zabbix/alertscripts/zbxtg.py": [2] No such file or directory , как будто заббикс не видит скрипт, хотя делал все как тут описано, можете сказать что не так?

    • Проверяйте файл - /usr/lib/zabbix/alertscripts/zbxtg.py
      Либо в пути или названии ошибка, либо у заббикса нет прав на этот файл. Тут четко указана проблема доступа.

  17. Добрый день.
    Не отправляются графики в телеграмм.

    Если выполнить команду
    ./zbxtg.py "my_user" "$(echo -e 'zbxtg;graphs: \nzbxtg;graphs_period=3600\nzbxtg;itemid:23301\nzbxtg;title:ololo')" --debug --group
    График в телегу приходит.

    Как я понимаю, проблема в шаблоне сообщений.
    Если я меняю шаблон сообщения, где указывается zbxtg;graphs, как сделали Вы, то приходит стандартный шаблон сообщения.

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

    Шаблон сообщения к примеру:
    ProblemA22 started at {EVENT.TIME} on {EVENT.DATE}
    TEST name: {EVENT.NAME}
    Host: {HOST.NAME}
    Severity: {EVENT.SEVERITY}
    Operational data: {EVENT.OPDATA}
    Original problem ID: {EVENT.ID}
    {TRIGGER.URL}

    • Забыл сказать, что сохранить шаблоны и все остальные изменения не забываю.

    • @Zerox не подскажите в чем может быть проблема?
      Может мне шаблон сообщения в самих файлах попробовать поменять?
      Только не могу найти в каком файле этот шаблон зашит.

      • Не знаю в чем проблема, надо разбираться. Я недавно настраивал по статье, у меня все получилось. Попробуйте другой способ, если этот не получается настроить. В статье описаны 3 разных способа.

        • Вот шаблон сообщения от zabbix:

          Problem started at {EVENT.TIME} on {EVENT.DATE}
          Problem name: {EVENT.NAME}
          Host: {HOST.NAME}
          Severity: {EVENT.SEVERITY}
          Operational data: {EVENT.OPDATA}
          Original problem ID: {EVENT.ID}
          {TRIGGER.URL}

          В БД zabbix есть таблица - media_type_message.
          Там есть шаблоны сообщений которые я создавал.
          Если я делаю rename table для media_type_message, то отправка сообщений в телеграм не прерывается, ошибок никаких нет.
          Т.е. он даже эти шаблоны не использует. Я даже удалил данные из этой таблицы.

          Есть таблица alerts. Там история всех алертов.
          Там есть столбец message, если смотреть, то он отправляет шаблон который я указал выше.
          FK для message нет.

          Если переименовать таблицу alerts, то в логах заббикс сервера выходит ошибка.
          " [Z3005] query failed: [1146] Table 'zabbix.alerts' doesn't exist [select a.alertid,a.mediatypeid,a.sendto,a.subject,a.messa ge,a.status,a.retries,e.source,e.object,e.objectid ,a.parameters,a.eventid,a.p_eventid from alerts a left join events e on a.eventid=e.eventid where alerttype=0 and a.status=3 order by a.alertid]"

          Непонятно, откуда он берет шаблон сообщений.

          Поковырял php файлы, ничего подозрительного не нашел.
          Грепнул всю виртуалку, с поиском текста "Problem started at", ничего не нашел кроме файла CMediatypeHelper.php(Но это точно не то).
          Форумы все облазил, не у кого такой проблемы нет.

          Искал в БД строки, где есть слова "Problem started at", выводит только на таблицу alerts.
          Получается, что php и БД zabbix не генерирует данное сообщение.

          Попытался обновить заббикс с 5.0 до 5.2 по вашей инструкции, не получилось. Версия остается прежней.
          Может есть какие то идеи?
          Мне по идее нужно найти откуда он берет этот шаблон, изменить его и все.

          • "Попытался обновить заббикс с 5.0 до 5.2 по вашей инструкции, не получилось."
            Почему не получилось? Там нет никаких проблем с обновлением.

            • Добрый день!
              По поводу оповещений в группу я не понял, создал группу, добавил туда бота своего, но когда в настройках оповещений добавляю токен, который получил от father, а в пользователях для оповещения выбираю телегу, добавляю свой id, то приходит оповещение в чатбот созданный мной, а вот как сделать чтоб приходило оповещение не в чатбот а в группу? у группы другой id, даже если его добавляю в пользователях, то ошибка при передаче оповещений. Что не так делаю?

          • Решил проблему.
            Может кому пригодится, было потрачено много времени на это =)
            Хотя глупость, глупостью. Скорее всего невнимательно смотрел.

            Необходимо зайти в Configuration->Action.
            У меня был один Action - Report problems to Zabbix administrators.
            Открываем его, нажимаем Operations. И там мне удалось поменять шаблон.

            @Zerox, Вам огромное спасибо за статьи. По Вашим статьям обновился с 4 до 4.2, с 4.2. до 4.4. с 4.4 до 5 =)
            Так же уведомлялки настроил.

            • В Zabbix до 5-й версии, шаблоны были там. В 5-й и далее они переехали в настройки media types (способы оповещений). Подписывайтесь на мой телеграм канал, я рассказывал об этом :)

  18. не совсем понял что нужно делать при такой ошибке, можете объяснить

    • Нужно перестать писать мне в личку (zeroxzed), а использовать свою учетную запись для тестов.

  19. zbxtg.py: User 'zeroxzed' needs to send some text bot in private

  20. Доброго дня.
    curl --header 'Content-Type: application/json' --request 'POST' --data '{"chat_id":"xxxxxxxxx","text":"Hello!"}' "https://api.telegram.org/botxxxxxxxxxx/sendMessage"

    Стал возвращать:
    curl: (6) Could not resolve host: application

    400 Bad Request

    400 Bad Request
    nginx/1.16.1

    Пробовал с разных провайдеров. Не в курсе что-то поменялось? У Вас этот вариант работает ?

    • Так это у вас команда curl неправильно сформирована. Проверьте синтаксис. У вас в качестве хоста приходит слово application.

      • Рукалицо.
        Под windows другой синтаксис:
        curl -X POST -H "Content-Type:application/json" -d "{\"chat_id\":\"xxxidxxx\",\"text\":\"test test\"}" "https://api.telegram.org/botXXXXXXXXXXX/sendMessage"

        Если вдруг кому-то пригодиться.
        Спасибо!

  21. Дмитрий

    Добрый день. Спасибо за статью. Столкнулся с проблемой, через консоль проверку проходит, в чат отправляет, через веб меню , не проходит тест (Ошибка при тестировании способа оповещения.
    SyntaxError: invalid object literal (line 1)) все уже по десять раз перепроверил).Может кто сталкивался .

    • Каким способом отправляете? В статье 3 разных описано. Вообще, статья 100% рабочая. Недавно совсем проверял.

      • Дмитрий

        curl --header 'Content-Type: application/json' --request 'POST' --data '{"chat_id":"-4481xxxx","text":"Тестовое сообщение"}'
        "https://api.telegram.org/bot1483678667:AAGlYkQKRAuuyxflAxtAcFRyCK-xxxxx/sendMessage/sendMessage"
        так отправляет.
        Через тестовые сообщения, через веб меню (Webhook) нет.

  22. Кирилл

    А есть статья как отправлять sms не через gsm, а через оператора который есть?

    • Статьи нет. Настройка зависит от оператора. Кому-то можно просто email отправить и он перешлет по sms. У кого-то api, у кого-то вебхуки. В общем, тут от сервиса надо отталкиваться.

  23. Кто смог настроить это дело на Zabbix 5.2? До этого всё работало, после обновление отвалилось(

    • Пока не видел информации, что это починили.

      • У меня на zabbix 5.2.6 не работали графики
        Включил в Администрирование-Аутентификация-Настройки HTTP:
        Поставить галку в чекбоксе- Активация HTTP аутентификации
        Диалог входа в систему по умолчанию - Диалог входа в систему Zabbix

  24. На последней версии скрипта выдает ошибку:

    TypeError: undefined not callable (property 'log' of [object Object])
    at [anon] (duktape.c:65639) internal
    at [anon] (function:55) preventsyield

    Если в скрипте поменять Zabbix.log на Zabbix.Log, то выдает другую ошибку:
    Sending failed: ReferenceError: identifier 'HttpRequest' undefined.

    Если в скрипте поменять request = new HttpRequest(), на request = new CurlHttpRequest(),
    то выдает Sending failed: TypeError: undefined not callable (property 'addHeader' of [object Object]).

    А что с этим делать я не понимаю. Ощущение, что объектная модель скрипта не совпадает с сервером

    сервер 5.2.1
    скрипт https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/media/telegram/media_telegram.yaml

    Сильное ощущение, что где-то просто свернул не туда. Есть предположение из-за чего такое может быть?

  25. Анатолий

    Здравствуйте! Zabbix server 5.0.4 к нему подключены 4 виндовые машины и 7 Linux. Есть проблема с отображением оповещения об ошибках именно виндовых серверов, с линуксами таких проблем нету. Например если отваливается какая-то служба на серваке, то инфа в телегу падает вот в таком виде: "Проблема: Service", и всё на этом, никакой информации о том что это за тачка, какая именно это службы была тоже нету. При этом все ошибки и проблемы в панели мониторинга отображаются нормально с указанием тачки и что за проблема с указанием службы. Не подскажите как можно решить данную проблему? Заранее благодарю.

    • Анатолий

      Проблему решил переходом от скрипта который отправлял оповещения на webhook. Сразу заббикс стоял 4 какой-то версии, потом обновился до 5.0.4. До 5.0.4 стояло оповещение в телеграм через скрипт, сейчас же заббикс добавил сам оповещение в телеграм через Webhook с уже готовым скриптом и нужно добавить только токен бота, всё как у автора в статье. И если ранее стояла версия старше, чем 5.0, то при обновлении до последней данный шаблон и скрипт сам не добавляется, нужно добавлять его ручками, взял его вот здесь: https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/media/telegram. Так же важно при импортировании данного способа оповещения и уже есть способ оповещения который называется "Telegram", то его нужно переименовать или удалить, иначе ничего не импортируется, хотя напишет, что импортировалось и все ок. Далее уже настроил оповещения через webhook и всё завелось как надо, сообщения в телегу теперь приходят как надо. Почему на скрипте это отрабатывало некорректно разобраться так и не удалось и останется загадкой.

      • Станислав

        Настраивал по данной инструкции, первый метод, скачал шаблон с гита, и не заработало. Там скрипт не работает в заббиксе 5.2.1, рабочий скрипт можно взять тут https://pastebin.com/qN0ukhpf

  26. Zabbix не хочет отправлять графики из-за того, что не может подцепиться к хосту по библиотеки urllib3.
    Apache отключен (использую PHP-FPM), в конфиге, соответственно, доменное имя.

    Помогите, пожалуйста, разобраться!

    Traceback (most recent call last):
    File "/usr/lib/python3.6/site-packages/urllib3/connection.py", line 159, in _new_conn
    (self._dns_host, self.port), self.timeout, **extra_kw)
    File "/usr/lib/python3.6/site-packages/urllib3/util/connection.py", line 57, in create_connection
    for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM):
    File "/usr/lib64/python3.6/socket.py", line 745, in getaddrinfo
    for res in _socket.getaddrinfo(host, port, family, type, proto, flags):
    socket.gaierror: [Errno -2] Name or service not known

    During handling of the above exception, another exception occurred:

    Traceback (most recent call last):
    File "/usr/lib/python3.6/site-packages/urllib3/connectionpool.py", line 600, in urlopen
    chunked=chunked)
    File "/usr/lib/python3.6/site-packages/urllib3/connectionpool.py", line 354, in _make_request
    conn.request(method, url, **httplib_request_kw)
    File "/usr/lib64/python3.6/http/client.py", line 1254, in request
    self._send_request(method, url, body, headers, encode_chunked)
    File "/usr/lib64/python3.6/http/client.py", line 1300, in _send_request
    self.endheaders(body, encode_chunked=encode_chunked)
    File "/usr/lib64/python3.6/http/client.py", line 1249, in endheaders
    self._send_output(message_body, encode_chunked=encode_chunked)
    File "/usr/lib64/python3.6/http/client.py", line 1036, in _send_output
    self.send(msg)
    File "/usr/lib64/python3.6/http/client.py", line 974, in send
    self.connect()
    File "/usr/lib/python3.6/site-packages/urllib3/connection.py", line 181, in connect
    conn = self._new_conn()
    File "/usr/lib/python3.6/site-packages/urllib3/connection.py", line 168, in _new_conn
    self, "Failed to establish a new connection: %s" % e)
    urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno -2] Name or service not known

    During handling of the above exception, another exception occurred:

    Traceback (most recent call last):
    File "/u

    • Ни разу такой ошибки не видел. Вы явно делаете что-то не то.

    • Благодарю за помощь! Разобрался сам. Совсем вылетело из головы, что DNS то у меня эта запись внесена только на избранных ПК ))

      • Я, кстати, сразу на dns подумал, потому что "Name or service not known", но раз вы написали про библиотеку urllib3, подумал, что уже исследовали этот вопрос.

  27. Добрый день.
    Подскажите, почему может вместо графика приходить картинка:
    no permissions to referred object or it does not exist

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

  28. Проблема при тестировании ..

    Traceback (most recent call last):
    File "/usr/lib/zabbix/alertscripts/zbxTelegram.py", line 60, in
    loggings = System(config_debug_mode if not args.debug else True).log
    File "/usr/lib/zabbix/alertscripts/zbxTelegram.py", line 46, in __init__
    file_handler = logging.FileHandler(filename=config_log_file, mode='a')
    File "/usr/lib64/python3.6/logging/__init__.py", line 1032, in __init__
    StreamHandler.__init__(self, self._open())
    File "/usr/lib64/python3.6/logging/__init__.py", line 1061, in _open
    return open(self.baseFilename, self.mode, encoding=self.encoding)
    PermissionError: [Errno 13] Permission denied: '/usr/lib/zabbix/alertscripts/zbxTelegram_files/znt.log'

    • Права на папку не настроили.

      PermissionError: [Errno 13] Permission denied: '/usr/lib/zabbix/alertscripts/zbxTelegram_files/znt.log'
  29. Traceback (most recent call last):
    File "/usr/lib/zabbix/alertscripts/zbxTelegram.py", line 60, in
    loggings = System(config_debug_mode if not args.debug else True).log
    File "/usr/lib/zabbix/alertscripts/zbxTelegram.py", line 46, in __init__
    file_handler = logging.FileHandler(filename=config_log_file, mode='a')
    File "/usr/lib64/python3.6/logging/__init__.py", line 1032, in __init__
    StreamHandler.__init__(self, self._open())
    File "/usr/lib64/python3.6/logging/__init__.py", line 1061, in _open
    return open(self.baseFilename, self.mode, encoding=self.encoding)
    PermissionError: [Errno 13] Permission denied: '/usr/lib/zabbix/alertscripts/zbxTelegram_files/znt.log

  30. Не хочет отправлять кириллицу...

    Traceback (most recent call last):
    File "/usr/lib/zabbix/alertscripts/zbxtg.py", line 940, in
    main()
    File "/usr/lib/zabbix/alertscripts/zbxtg.py", line 849, in main
    tg.send_message(uid, zbxtg_body_text)
    File "/usr/lib/zabbix/alertscripts/zbxtg.py", line 94, in send_message
    answer = requests.post(url, params=params, proxies=self.proxies)
    File "/usr/local/lib/python3.6/site-packages/requests/api.py", line 116, in post
    return request('post', url, data=data, json=json, **kwargs)
    File "/usr/local/lib/python3.6/site-packages/requests/api.py", line 60, in request
    return session.request(method=method, url=url, **kwargs)
    File "/usr/local/lib/python3.6/site-packages/requests/sessions.py", line 510, in request
    prep = self.prepare_request(req)
    File "/usr/local/lib/python3.6/site-packages/requests/sessions.py", line 453, in prepare_request
    hooks=merge_hooks(request.hooks, self.hooks),
    File "/usr/local/lib/python3.6/site-packages/requests/models.py", line 313, in prepare
    self.prepare_url(url, params)
    File "/usr/local/lib/python3.6/site-packages/requests/models.py", line 431, in prepare_url
    enc_params = self._encode_params(params)
    File "/usr/local/lib/python3.6/site-packages/requests/models.py", line 104, in _encode_params
    v.encode('utf-8') if isinstance(v, str) else v))
    UnicodeEncodeError: 'utf-8' codec can't encode characters in position 0-15: surrogates not allowed

    Если вручную с консоли отправлять - все норм.

    • zabbix-server 5.0.3

    • Добрый день, Юрий
      У меня такая-же проблема, пишет UnicodeEncodeError: 'utf-8' codec can't encode characters in position, не отправляет кириллицу, на английском отправляется без проблем, вы решили это проблему? если да можете подсказать решение. Спасибо

  31. Добрый день. Можно ли формат даты оповещения изменить на 'ДД.ММ.ГГГГ' ?

    • Где именно формат даты изменить? Не совсем понял.

      • При отправке в телеграм алерт.
        В стандартных шаблонах передается как {DATE}

        • Я, кстати, не знаю, как это изменить. В какой-то из версий они перешли на ISO формат даты - гггг-мм-дд чч:мм:сс Я не видел, чтобы формат можно было где-то настраивать. Если найдете решение вопроса, прошу поделиться в комментарии.

          • "ЕДИНЫЙ ФОРМАТ ДАТЫ И ВРЕМЕНИ начиная с версии 2.4.0
            Форматы даты и времени в веб-интерфейсе Zabbix приведен к единому виду ГГГГ-ММ-ДД чч:мм:сс согласно стандарту ISO 8601. Новый формат применяется во всех местах за исключением графиков."
            Макросы {DATE} {TIME} - наверняка берутся как системные ...А в линуксе по умолчанию ГГГГ-ММ-ДД. Можно только командой перевернуть...

  32. А у меня почему-то в способах оповещения только Email, Jabber и SMS, хотя заббикс обновлен до 5 версии

  33. Дмитрий

    Добрый день. Тестовое сообщение отправляется успешно как из консоли, так со страницы "Способы оповещений". Но сам Заббикс сервер не отправляет в Телегу. В логах также пусто. В каком направлении копать?

    • Может просто не настроили в действиях отправку уведомлений через telegram или пользователю не добавили этот способ оповещения? То есть просто не настроили все условия, чтобы оповещение ушло именно на телегу. Способ в статье рабочий, я недавно сам настраивал.

      • Дмитрий

        Нисколько не сомневаюсь в неработоспособности вашего способа.

        Методом затыка "куда попало", нашел такое сообщение "No message defined for media type."

  34. Артур Аветисян

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

    https://github.com/xxsokolov/Zabbix-Notification-Telegram

  35. А что щас использовать для телеграма чтобы обходить зхапрет РКН? Текущим методом запросы не отправляются...

    • Прокси. Других вариантов нет. У некоторых хостеров телеграм не заблокирован. Я с них отправляю сообщения.

      • а у вас поддерживается markdown в новом zabbix ?

        • Я через скрипт, описанный в этой статье, отправляю. Специально markdown не проверял. У меня без него оповещения.

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

  36. Сергей

    Здравствуйте. У меня вопрос. А этот скрипт, который пушит графики в телегу, только обычные классические линейные графики шлет? К примеру, в системе, у меня на события по месту на HDD круговой график, а присылается все равно стандартный линейный, который, конечно, показывает ерунду. И еще один вопрос по событиям у которых графика вообще нет, он все равно шлет его, но пустой, без данных (ошибок нет при этом, как писалось в статье). Можно сделать так, чтобы он не генерил графики там где их нет? Может кто-то задавался этими вопросами? Спасибо

  37. Дмитрий

    вместо https://api.telegram.org
    используйте
    https://api.tlgr.org/
    и будет счастье

  38. Сергей

    При тестировании способа оповещений выдает сообщение:
    Traceback (most recent call last):
    File "/usr/lib/zabbix/alertscripts/zbxtg.py", line 9, in
    import requests
    ImportError: No module named 'requests'

    Но модуль 'requests установлен.

    Тестирование из консоли ./zbxtg.py test test - успешно, я получаю сообщение.
    даже отправляет график если подставить itemid графика командой: ./zbxtg.py test "$(echo -e 'zbxtg;graphs: \nzbxtg;graphs_period=3600\nzbxtg;itemid:45900\nzbxtg;title:ololo')"

    И еще момент: Если отправить тестовое сообщение в групповой чат (именно скрипт zbxtg.py) выдает сообщение:
    zbxtg.py: User 'my_group_id' needs to send some text bot in private. Но как ему группа отправит в личку, а? Я пробовал прям в группе это сделать через "@"
    Хотя при тестировании групповой рассылки через обычный скрипт telegram.sh групповые сообщения доходят.

    • Сергей

      решено самостоятельно.
      1. sudo su -
      2. pip install requests

      А в групповой чат оказывается надо слать не по -chat_id, а по имени.
      zabbix 4.4.6
      Ubuntu 16.04.6

  39. Добрый день. при выполнении: curl -v https://api.telegram.org выводится следущее
    [root@zabbix ~]# curl -v https://api.telegram.org
    * About to connect() to api.telegram.org port 443 (#0)
    * Trying 149.154.167.220...
    * Connected to api.telegram.org (149.154.167.220) port 443 (#0)
    * Initializing NSS with certpath: sql:/etc/pki/nssdb
    * CAfile: /etc/pki/tls/certs/ca-bundle.crt
    CApath: none
    * NSS error -5978 (PR_NOT_CONNECTED_ERROR)
    * Network file descriptor is not connected
    * Closing connection 0
    curl: (35) Network file descriptor is not connected

    Проблема в блокировке провайдера или в сертификате?

  40. Кирилл

    Отличная статья!
    Всё замечательно и доступно разложено - рекоммендую к настройке!

    Так же хочу поделиться, что на версии 4.4.7 завелось всё согласно статьи, но делая аналогично на LTS-версии 4.0 столннулся с проблемой, когда при срабатывании триггера и должен отправляться уведолмение в телеграмм выдавало ошибку :

    bin/bash: /20/usr/lib/zabbix/alertscripts/telegram.sh отказано в доступе

    Спустя короткое время поисков и пыток, завелось когда выдал zabbix права на этот скрипт командой :
    chown zabbix:zabbix /usr/lib/zabbix/alertscripts/telegram.sh

    Возможно, кому-то поможет :)
    Всем удачи!

  41. Для тех, у кого не получается настроить уведомления в телеграм по данному способу. Хочу с вами поделиться одной находкой - бот в telegram @gmailbot. С его помощью можно получать уведомления в телеграм о новой почте в ящиках gmail. Тут же можно прочитать, переслать, пометить письмо прочитанным и т.д. Сама идея дублировать свою почту куда-то на сторону не кажется мне хорошей, но я увидел другое применение для этого бота.

    Так вот. Сделайте отдельный ящик для Zabbix и настройте для него @gmailbot. Либо просто организуйте пересылку нужных писем в этот ящик. Будете получать уведомления сразу в телегу без настройки скриптов отправки, борьбы с блокировкой и т.д. Нужно будет только настроить штатную отправку уведомлений на почту, с чем в zabbix особых проблем нет.

    Найти применение этому боту можно не только в zabbix. Можно организовать любые оповещения в телеграм на основе писем, которые достаточно просто переслать на почтовый ящик, привязанный к боту.

  42. Если провайдер совсем совсем плохой, и даже через socks5 не работает, пробуйте tor

    Если провайдер блокирует телеграм, и даже через socks5 не работает, то можно отправлять сообщения через сеть TOR
    yum install tor torsocks
    systemctl start tor.service

    curl
    --socks5-hostname 127.0.0.1:9050
    --header 'Content-Type: application/json'
    --request 'POST'
    --data '{"chat_id":"-347712505","text":"Проверка связи"}'
    "https://api.telegram.org/bot985805478:AAGyvUJVl9OhqYD-PEsOTHIfh9eqm3SBg/sendMessage"

  43. Евгений

    Добрый день.
    Подскажите пожалуйста, каким правильным образом вы добавили зелёный смайлик в тему сообщения в телеграме как на вашей картинке в статье:
    https://serveradmin.ru/wp-content/uploads/2018/01/zabbix-telegram-notify-22.png

    • Евгений

      Разобрался.

      Со смайликами можно ознакомиться тут:https://apps.timwhitlock.info/emoji/tables/unicode#note1
      после чего найти нужный смайл, скопировать его значение Unicode (U+1F198), пойти на сайт
      http://www.fileformat.info/info/unicode/char/1F198/index.htm где код смайла присутствует в адресе. На открывшейся странице ищете C/C++/Java source code "\uD83C\uDD98", так вот код смайла для вставки в заббикс - \uD83C\uDD98.

      Наверное можно проще ))

      • Бехзод

        так вот код смайла для вставки в заббикс - \uD83C\uDD98. С этого момента можно подробнее?

      • Евгений

        Редачите шаблон сообщений, у меня так:

        Тема: \uD83C\uDD98 Проблема: {TRIGGER.NAME}

        Сообщение:
        Когда: {EVENT.TIME} {EVENT.DATE}
        Где: {HOST.NAME}
        Важность: {TRIGGER.SEVERITY}

        ID события: {EVENT.ID}
        {TRIGGER.URL}

  44. Алексей

    Здравствуйте, столкнулся с проблемой. Прописываю тестовое сообщение:

    /usr/lib/zabbix/alertscripts/zbxtg.py @Morfan98 test "$(echo -e 'zbxtg;graphs: zbxtg;graphs_period=3600\zbxtg;graphs_width=700\zbxtg;graphs_height=300\nzbxtg;itemid:1811\nzbxtg;title:test')"

    И в ответ на него присылает картинку с данным содержанием:"Zabbix получил некорректный запрос. Поле "from" не корректно: ожидался период времени"
    У кого-нибудь было такое? Подскажите где искать ошибку :D

  45. Дмитрий

    День добрый

    дошел до след шага
    curl --header 'Content-Type: application/json' --request 'POST' --data '{"chat_id":"210806260","text":"Проверяю отправку оповещений ботом"}' "https://api.telegram.org/bot526250249:AAFtAqy4ln0BqK5vtU_9IoSlLduhtl8IaGg/sendMessage"

    соответственно id и токен свой поставил
    и получил вот такую ошибку

    curl: (35) error:14094419:SSL routines:ssl3_read_bytes:tlsv1 alert access denied

    подскажите - что делать ?

  46. Попробую уточнить еще раз. Выход в Интернет осуществляется через proxy. От root команда выполняется ./zbxtg.py «@ivanov» «test» «test» и сообщения приходят в telegram. Если выполнять от пользователя zabbix команду: sudo -u zabbix ./zbxtg.py «@ivanov» «test» «test» то выдаются сообщения об ошибках. Удалось запустить команду от пользователя zabbix, которая приводит к отправке сообщений в телеграм: sudo -u zabbix -E bash -c '/usr/lib/zabbix/alertscripts/zbxtg.py "@ivanov" "test" "test"'. Как использовать эту команду, чтобы zabbix отправлял сам сообщения в telegram.

  47. Здравствуйте. Есть проблема. Есть zabbix сервер 4.4.6. Если с командной строки под root-ом (или переключить командную строку под пользователя "zabbix") послать сообщение командной: ./zbxtg.py "ID" "test" "test" или командой: /zbxtg.py "@ivanov" "test" "test", то сообщения приходят на telegram. Если попытаться отправить сообщение командой: sudo zbxtg.py "@ivanov" "test" "test", то ничего не происходит. В zabbix-е при срабатывании триггера ничего не происходит, а в логе zabbix-сервера появляются сообщения: Failed to execute command "/usr/lib/zabbix/alertscripts/zbxtg.py 'ID 'test' 'test'": Timeout while executing a shell script. Права на скрипты и на каталоги даны всем пользователям. Не подскажите в чем может быть проблема или хотя бы что сделать, чтобы попытаться определить проблему.

    • Так вы пробуйте отправлять не
      sudo zbxtg.py «@ivanov» «test» «test»
      а так:
      sudo -u zabbix zbxtg.py «@ivanov» «test» «test»
      И эту команду ставьте на исполнение.

      • Аноним

        Я пробовал вариант который Вы подсказали. Выполнение команды sudo -u zabbix zbxtg.py «@ivanov» «test» «test» ни к чему не приводит. Эта команда не отрабатывает, а словно уходит в бесконечное исполнение.

        • Если запустить команду sudo -u zabbix zbxtg.py «@ivanov» «test» «test» и прервать то выдается:

          File "./zbxtg.py", line 937, in
          main()
          File "./zbxtg.py", line 846, in main
          tg.send_message(uid, zbxtg_body_text)
          File "./zbxtg.py", line 94, in send_message
          answer = requests.post(url, params=params, proxies=self.proxies)
          File "/usr/lib/python2.7/site-packages/requests/api.py", line 116, in post
          return request('post', url, data=data, json=json, **kwargs)
          File "/usr/lib/python2.7/site-packages/requests/api.py", line 60, in request
          return session.request(method=method, url=url, **kwargs)
          File "/usr/lib/python2.7/site-packages/requests/sessions.py", line 533, in request
          resp = self.send(prep, **send_kwargs)
          File "/usr/lib/python2.7/site-packages/requests/sessions.py", line 646, in send
          r = adapter.send(request, **kwargs)
          File "/usr/lib/python2.7/site-packages/requests/adapters.py", line 449, in send
          timeout=timeout
          File "/usr/lib/python2.7/site-packages/urllib3/connectionpool.py", line 672, in urlopen
          chunked=chunked,
          File "/usr/lib/python2.7/site-packages/urllib3/connectionpool.py", line 376, in _make_request
          self._validate_conn(conn)
          File "/usr/lib/python2.7/site-packages/urllib3/connectionpool.py", line 994, in _validate_conn
          conn.connect()
          File "/usr/lib/python2.7/site-packages/urllib3/connection.py", line 334, in connect
          conn = self._new_conn()
          File "/usr/lib/python2.7/site-packages/urllib3/connection.py", line 157, in _new_conn
          (self._dns_host, self.port), self.timeout, **extra_kw
          File "/usr/lib/python2.7/site-packages/urllib3/util/connection.py", line 74, in create_connection
          sock.connect(sa)
          File "/usr/lib64/python2.7/socket.py", line 224, in meth
          return getattr(self._sock,name)(*args)

          • Но если выполнить по root-ом команду:
            sudo -u zabbix ./zbxtg.py «@ivanov» «test» «test» то сообщение приходит в телеграм

  48. Доброго времени.
    Столкнулся с проблемой на Centos 8, конкретно с отправкой графиков в тележку.
    Ошибка при выполнении теста
    /usr/bin/env: : Нет такого файла или каталога.

    Продублировал выполнение команды через консоль, получилось отправить добавив python3. если не добавить версию ошибка в отправке.

    python3 /usr/lib/zabbix/alertscripts/zbxtg.py "@XXXXXX" "тест" "тестовое сообщение" --debug

    Ошибка при отправке python /usr/lib/zabbix/alertscripts/zbxtg.py "@XXXXXX" "тест" "тестовое сообщение" --debug:

    bash: python: команда не найдена...

    Есть ли варианты где можно изменить в конфиге выполнение с команды python на python3 ?

    Заранее весьма всем благодарен за Ваши варианты.

    • Попробуйте просто alias сделать с python3 на python. А вообще, там нет особых проблем с установкой и настройкой python. В интернете есть материалы на эту тему.

      • Выполнил изменение в zbxtg.py
        В шапке поправил #!/usr/bin/env python на #!/usr/bin/env python3

        И пошла жара=)

        Спасибо Вам за статью Zerox=)

  49. Здравствуйте, подскажите пожалуйста, как можно убрать отображение элементов данных с кавычками, если кавычки находятся в самом элементе? С помощью предобработки или фильтрации?

    https://drive.google.com/file/d/1W3ZygaNOZeEFcyKdf4JnABD15glmuusg/view?usp=sharing

    https://drive.google.com/file/d/1UGQiBTQOpMfO3y_VVUiuK0DRZi57F3yk/view?usp=sharing

    • Не понял смысл задачи. Откуда убрать отображение? Чем мешают кавычки? Они находятся в названии элемента и ни на что не должны влиять. Названия могут быть любыми.

      • Кавычки находятся в названии элемента данных, просто при отправлении алерта через телеграм в котором есть кавычки, он некорректно отправляется, точнее все что после кавычек стирается, поэтому хотел узнать , есть ли способ убрать кавычки в названии в котором используется макрос #SERVICE.DISPLAYNAME?

        • Тут скорее надо в скрипт заглянуть и посмотреть, почему кавычки вызывают проблемы. Может это из-за разметки markdown, или может экранирования где-то не хватает. Как в заббиксе автоматом убирать кавычки из названий итемов я не знаю. Вряд ли это возможно штатным способом. Если только прямым запросом к базе. Но это тоже надо сначала выборку таких итемов делать, потом правку. В принципе, ничего сложного, но надо заморочиться и протестировать решение.

          • #!/bin/bash
            export LC_ALL="C"
            export LANG="en_US.UTF-8"
            #------------------------------------------------------------------------------

            BOT_AUTH_TOKEN=""
            LOG_FILE="/var/log/zabbix/telegram.log"

            DATETIME=$(date '+%Y/%m/%d %H:%M:%S')
            CHAT_ID="$1"
            TEXT=$(echo "$2" && echo "$3")

            #------------------------------------------------------------------------------

            if [[ "${CHAT_ID}" == "getid" ]]; then
            RESULT=$(curl -sS -i --max-time 30 "https://api.telegram.org/bot${BOT_AUTH_TOKEN}/getUpdates" 2>&1)
            RC=$?
            if [ ${RC} -ne 0 ]; then
            echo "${RESULT}"
            exit 1
            elif ! echo "${RESULT}" | grep -iq '"ok":true'; then
            echo "${RESULT}"
            exit 1
            fi
            echo "${RESULT}" | awk -F'"chat":' '{print $2}' | awk -F'"date":' '{print $1}' | sort -u | grep --color -E "\-?[0-9]{7,}"
            exit 0
            elif [[ "${CHAT_ID}" =~ ^-?[0-9]+$ && -n "${TEXT}" ]]; then
            echo "[${DATETIME}] CHAT_ID:\"${CHAT_ID}\" TEXT=\"${TEXT}\"" >> "${LOG_FILE}"
            RESULT=$(curl -sS -i --max-time 30 \
            --header 'Content-Type: application/json' \
            --request 'POST' \
            --data '{"chat_id": "'"${CHAT_ID}"'", "text": "'"${TEXT}"'"}' \
            "https://api.telegram.org/bot${BOT_AUTH_TOKEN}/sendMessage" 2>&1)
            RC=$?
            if [ ${RC} -ne 0 ]; then
            echo "${RESULT}" | tee -a "${LOG_FILE}"
            echo '' >> "${LOG_FILE}"
            exit 1
            elif ! echo "${RESULT}" | grep -iq '"ok":true'; then
            echo "${RESULT}" | tee -a "${LOG_FILE}"
            echo '' >> "${LOG_FILE}"
            exit 1
            fi
            echo "${RESULT}" >> "${LOG_FILE}"
            echo '' >> "${LOG_FILE}"
            echo "[OK] Message was sent"
            exit 0
            else
            echo "[${DATETIME}] CHAT_ID:\"${CHAT_ID}\" TEXT=\"${TEXT}\"" >> "${LOG_FILE}"
            echo "[EE] Invalid arguments" | tee -a "${LOG_FILE}"
            echo '' >> "${LOG_FILE}"
            exit 1
            fi

            exit 0

            • Предлагаете, чтобы я за вас этим занимался? :)) У меня нет на это времени.

              • Может тогда подскажите, чем можно заменить двойные кавычки в скрипте? echo "$2"? :)

              • Просто не пойму, почему текст после " не отправляется?

                • Допустим текст сообщения у вас в переменной TEXT, тогда просто за экранируйте кавычки, например так TEXT=$(echo ${TEXT} | sed 's/"/\\\"/g')

  50. Всем привет. Решил настроить отправку графиков и столкнулся с проблемой.
    Оповещение в телегу приходит но без emoji и графиков в таком виде:

    {{WARNING}} Проблема: Высокая температура на сервере
    Последнее значение: 32 (10:42:35)
    zbxtg;graphs
    zbxtg;graphs_period=1800
    zbxtg;itemid: 30037
    zbxtg;title:DL360 - CPU1Temperature
    Важность триггера: High
    Host: DL360

    id графика соответствует, но сам график не приходит.
    Через консоль поставил номер своего графика, всё приходит
    sudo -u zabbix ./zbxtg.py fyakhyaev test "$(echo -e 'zbxtg;graphs: \nzbxtg;graphs_period=3600\nzbxtg;itemid:30037\nzbxtg;title:ololo')"

  51. Народ. Помогите пожалуйста кто сталкивался. Zabbix 4.4 + Zabbix-in-Telegram

    Конфиги все поправил (до этого так же настраивал и все было хорошо, только на CentOS7 я делал) и отправляю только со своими данными
    /usr/lib/zabbix/alertscripts/zbxtg.py "@zeroxzed" "тест" "тестовое сообщение" --debug

    Traceback (most recent call last):
    File "./zbxtg.py", line 17, in
    import zbxtg_settings.py
    File "/usr/lib/zabbix/alertscripts/zbxtg_settings.py", line 15
    zbx_server = "http://10.1.22.10/" # zabbix server full url
    ^
    IndentationError: unexpected indent

  52. Failed to execute command "/usr/lib/zabbix/alertscripts/zbxtg.py 'z7172' '{{WARNING}} Проблема: Host is not available 8.8.8.5' 'Последнее значение: 0 (11:52:29)
    zbxtg;graphs
    zbxtg;graphs_period=1800
    zbxtg;itemid:29243
    zbxtg;title:DNS Google — Host is not available 8.8.8.5
    Важность триггера: ❗ High
    Host: DNS Google (8.8.8.5)
    Описание:
    '": Traceback (most recent call last):
    File "/usr/lib/zabbix/alertscripts/zbxtg.py", line 939, in
    main()
    File "/usr/lib/zabbix/alertscripts/zbxtg.py", line 884, in main
    zbx.login()
    File "/usr/lib/zabbix/alertscripts/zbxtg.py", line 295, in login
    auth=requests.auth.HTTPBasicAuth(self.basic_auth_user, self.basic_auth_pass))
    File "/usr/lib/zabbix/alertscripts/venv/lib/python2.7/site-packages/requests/api.py", line 116, in post
    return request('post', url, data=data, json=json, **kwargs)
    File "/usr/lib/zabbix/alertscripts/venv/lib/python2.7/site-packages/requests/api.py", line 60, in request
    return session.request(method=method, url=url, **kwargs)
    File "/usr/lib/zabbix/alertscripts/venv/lib/python2.7/site-packages/requests/sessions.py", line 533, in request
    resp = self.send(prep, **send_kwargs)
    File "/usr/lib/zabbix/alertscripts/venv/lib/python2.7/site-packages/requests/sessions.py", line 668, in send
    history = [resp for resp in gen] if allow_redirects else []
    File "/usr/lib/zabbix/alertscripts/venv/lib/python2.7/site-packages/requests/sessions.py", line 247, in resolve_redirects
    **adapter_kwargs
    File "/usr/lib/zabbix/alertscripts/venv/lib/python2.7/site-packages/requests/sessions.py", line 646, in send
    r = adapter.send(request, **kwargs)
    File "/usr/lib/zabbix/alertscripts/venv/lib/python2.7/site-packages/requests/adapters.py", line 514, in send
    raise SSLError(e, request=request)
    requests.exceptions.SSLError: HTTPSConnectionPool(host='10.70.10.13', port=443): Max retries exceeded with url: / (Caused by SSLError(SSLError(1, u'[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:618)'),))

    Ошибка именно с отправкой графиков, resolved без графиков отправляется и приходит
    Помогите, пожалуйста с ошибкой

    • Ошибся, суля по всему вот:
      1, u'[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed
      Я так понял, 10.70.10.13 это адрес zabbix сервера? К нему не получается подключиться, чтобы забрать график. Попробуйте не по https это делать.

      • Исправил, сейчас ошибка Zabbix user couldn't get graph (probably has no rights to get data from host), но у пользователь в группе Admins

  53. Traceback (most recent call last):
    File "/usr/lib/zabbix/alertscripts/zbxtg.py", line 9, in
    import requests
    ImportError: No module named requests

    • Все пакеты из requirements.txt установлены
      Requirement already satisfied: requests in /usr/lib/python2.7/site-packages (2.20.0)

  54. Дмитрий

    Статья как всегда отличная! Давно уже копии статей находятся в WIKI как инструкции к работам.

    По сабжу, также столкнулся с проблемой отсутствия информации о службе, при оповещении.
    Приходят сообщения "PROBLEM: Service" и все. Подскажите как исправить?

    • Дело в том, что у вас есть кавычки в сообщении, их надо за экранировать
      Допустим текст сообщения у вас в переменной TEXT, тогда
      TEXT=$(echo ${TEXT} | sed 's/"/\\\"/g')

  55. Скрипт отрабатывает из консоли, а с заббикса не отправляет сообщения.

    Детали Media type test failed.
    Process exited with code: 7.

    Подозреваю что не хватает каких то прав...
    Стоит убунту сервер, развернул из готового образа...

    • Такс, проблему частично решил дописав прокси в скрипт. НО! Теперь тест проходит, на проксе вижу обращение но мне в группу ничего не прилетает. Хотя тест с консоли прилетает.

  56. Семен Клыков

    Мне очень понравился скрипт который отправляет все в одном сообщение, куча настроек!

    https://github.com/xxsokolov/Zabbix-Notification-Telegram

  57. Что то я не понял от слова совсем настройки.
    zbx_tg_daemon_wl_ids = [-XXXXXXXXX ] - вот у меня не группа а чат. ChatID -XXXXXXX не работает когда я подставляю сюда его. Ставлю ID бота и боту все приходит.
    zbx_tg_daemon_wl_u = ["ООО "Тра ля ля"", ] - вот тоже у меня имя чата на русском с пробелами и ковычками. В общем ребята, кто и как отправляет в чат сообщения?

    • Я так и отправляю, как в статье написано. Все работает. На прошлой неделе настраивал последний раз.

  58. Добрый день, коллеги. Есть ли у кого ни то желание (у кого в наличии есть Zabbix под рукой для экспериментов) соорудить универсальный модуль для отправки уведомлений в Telegram, Viber, Skype, Sms и др.?

  59. День добрый.
    1000 раз уже все проверил, но сам заббикс не отправляет в телегу сообщения. Из консоли сервера все прекрасно уходит. CentOs 7 zabbix3.4, куда копать?

    • ошибка в журнале заббикса следующая выходит "Process exited with code: 35"

    • Разобрался со всем. Теперь хочу навести красоту. Когда сам заббикс отправляет уведомления по аллерту, то текст уведомления прилетает в телегу без разделения на абзацы. Почему?

  60. Добрый день. Подскажите из за чего возникает ошибка {"ok":false,"error_code":404,"description":"Not Found"}

    Спасибо.

  61. Дмитрий

    Добрый день!
    Помогите, пожалуйста, разобраться.
    В телеграм отлично приходят события с linux-серверов, а вот с Win-машин все оповещения о сервисах только в таком виде:
    Kakannivi ( terminal server 10.1.10.2) - PROBLEM: Service
    На почту и в самом заббиксе всё содержательно. Запускаю сервис руками и в чат прилетает:
    Resolved: Service
    В комментах поднимался этот вопрос два раза и советовали поменять кавычки.
    Игрался в разных вариациях, но всёравно не приходит полное содержание проблемы в телеграм (((
    Можете ткнуть носом куда смотреть, а то нигде найти не могу эту проблему

  62. Здравствуйте, проблема следующего характера:

    Traceback (most recent call last):
    File "/usr/lib/zabbix/alertscripts/zbxtg.py", line 909, in
    main()
    File "/usr/lib/zabbix/alertscripts/zbxtg.py", line 785, in main
    uid = tg.get_uid(zbx_to)
    File "/usr/lib/zabbix/alertscripts/zbxtg.py", line 179, in get_uid
    updates = self.get_updates()
    File "/usr/lib/zabbix/alertscripts/zbxtg.py", line 67, in get_updates
    answer = requests.post(url, params=params, proxies=self.proxies)
    File "/usr/lib/python2.7/site-packages/requests/api.py", line 116, in post
    return request('post', url, data=data, json=json, **kwargs)
    File "/usr/lib/python2.7/site-packages/requests/api.py", line 60, in request
    return session.request(method=method, url=url, **kwargs)
    File "/usr/lib/python2.7/site-packages/requests/sessions.py", line 524, in request
    resp = self.send(prep, **send_kwargs)
    File "/usr/lib/python2.7/site-packages/requests/sessions.py", line 637, in send
    r = adapter.send(request, **kwargs)
    File "/usr/lib/python2.7/site-packages/requests/adapters.py", line 510, in send
    raise ProxyError(e, request=request)
    requests.exceptions.ProxyError: HTTPSConnectionPool(host='api.telegram.org', port=443): Max retries exceeded with url: /bot603890438:AAE5T7edt2I3JCZ_SfoXC_YnERgSZrkExE0/getUpdates?offset=0 (Caused by ProxyError('Cannot connect to proxy.', NewConnectionError(': Failed to establish a new connection: [Errno 13] Permission denied',)))

    Не отрабатывает ни один из скриптов, причем, из командной строки, тестовые сообщения отправляются без проблем, подскажите в чем проблема, таится?
    (Есть похожая машина, с zabbix, и там все работает, на этой нет)!

    • Вот ошибка:

      requests.exceptions.ProxyError: HTTPSConnectionPool(host=’api.telegram.org’, port=443): Max retries exceeded with url: /bot603890438:AAE5T7edt2I3JCZ_SfoXC_YnERgSZrkExE0/getUpdates?offset=0 (Caused by ProxyError(‘Cannot connect to proxy.’, NewConnectionError(‘: Failed to establish a new connection: [Errno 13] Permission denied’,)))

      Похоже на то, что подключение к прокси не проходит.

      • Аноним

        Увы, но прокси рабочий, при точно таких же настройках работает на другом ПК.
        Но проверил с другим прокси (также из командной строки тестовые сообщения отправляются), а при срабатывании триггера нет.
        Такое чувство, пользователь не авторизуется в zabbix, тем самым не получает параметр $1-$3.
        Но это именно скрипт с графиками.
        А если простой способ отправки использовать.
        То там: Process exited with code: 7.
        Возможно, что zabbix, что-то блокирует?

  63. Добрый день. Подскажите пожалуйста, может кто сталкивался. Настроил проксирование через Tor, при проверки когда отправляешь запрос
    /usr/lib/zabbix/alertscripts/telegram.sh botНомер Тест 'Проверяю отправку оповещений ботом', возврат с таким сообщением: {"ok":false,"error_code":404,"description":"Not Found"}
    Как исправить?
    Если на установленном telegram на ПК прописать ip машины где стоит tor то сообщения ходят нормально.

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

    экранирование можно сделать прямо в баше. символ экранирования обратный слэш '\'
    чтобы вывести в текст обратный слэш его тоже надо экранировать обратным слэшем :)

    правило такое
    ${mystring//pattern/replacement}

    начало скрипта менять так
    chat="$1"
    subj="${2//\"/\\\"}"
    message="${3//\"/\\\"}"

  65. Спасибо за статью!
    Настроил по методу с графиками, все работает!

  66. Спасибо за статью!

  67. Подскажите что делать ? у кого нибудь была такая проблема?

    [root@localhost ~]# curl --header 'Content-Type: application/json' --request 'POST' --data '{"chat_id":"мой айди","text":"Привет, я Telegram-bot для Zabbix!"}' "https://api.telegram.org/botтокен/sendMessage"

    {"ok":false,"error_code":400,"description":"Bad Request: strings must be encoded in UTF-8"}[root@localhost ~]#

    • Ответ должен быть очевиден из надписи "Bad Request: strings must be encoded in UTF-8"...
      т.е. ваша кодировка в запросе не соответствует UTF-8.
      Наберите текст в кодировке UTF-8 и будет вам счастье.

      Также весь запрос в секции data на проверку бота у вас не заполнен.

  68. Доброго вечера, создал бота, id и token вставил, получил ошибку:
    -bash: curl: command not found
    - установил:
    apt install curl
    -запустил ещё раз и получил ошибку:
    curl: (3) Illegal port number
    -ошибка новая тупо из-за копипасты, затер случайно /api.telegram.org/bot, оставил ток token
    в итоге строчка стала норм (без soc5)
    запускаю и ничего, ошибки нет, сообщения в телеге нет...на сервере просто после ввода курсор переходит на новую строчку:
    >
    что это может быть? (заббикс 4.0+ngix)

    • а, всё, torsocks помог, ркн не пускал

      • Аноним

        и ещё "+", чтобы работали скрипты, то можно и в них перед /usr/lib/zabbix/alertscripts/..... дописать torsocks
        работает норм + бесплатный

  69. А как сделать отправку графика по заданному интервалу времени из забкса в телеграм?

  70. Будет ли статья про оповещения в телеграм, с новым API Zabbix 4.0, насколько мне известно через прокси данная статья не работает.
    Есть у нас реализации на питоне, которые это обрабатывают корректно. Но хотелось бы увидеть данную статью на вашем сайте с вашей точки зрения.

    • Оповещения по этой инструкции для версии Zabbix 4.0 работают. Это я точно знаю, сам настраивал. Но не через прокси, а напрямую. Судя по отзывам тут в комментариях, через прокси она тоже работает. Да я и не вижу причин, почему не будет работать. Прокси на работу с Zabbix никак не влияет, а используется только для отправки данных в Телеграм.

  71. Добрый день!
    при отправке с сервера все отлично, сообщения приходят, а при срабатывании триггера состояние отправки "неудачно", инфо:
    % Total % Received % Xferd Average Speed Time Time Time Current
    Dload Upload Total Spent Left Speed

    0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0* About to connect() to proxy blabla.ru port 1080 (#0)
    * Trying x.x.x.x...
    * Failed to connect to x.x.x.x: Permission denied
    * couldn't connect to proxy at blabla.ru:1080
    * Closing connection 0
    curl: (7) Failed to connect to x.x.x.x: Permission denied

    -rwxr-xr-x. 1 zabbix zabbix 358 Mar 27 09:18 telegram.sh
    centos7 zabbix4
    кому и какие разрешения нужно дать?
    заранее благодарен.

  72. Андрей

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

    • А что вы хотите получать при доступности сайта? Все шаблоны уведомлений хранятся в разделе Настройка -> Действия. Там можно задать шаблон письма о проблеме и о восстановлении.

  73. Андрей

    День добрый!
    У меня ошибка после выполнения # curl --header 'Content-Type: application/json' --request 'POST' --data '{"chat_id":"210806260","text":"Проверяю отправку оповещений ботом"}' "https://api.telegram.org/bot526250249:AAFtAqy4ln0BqK5vtU_9IoSlLduhtl8IaGg/sendMessage"

    SSL received a record that exceeded the maximum permissible length.

    • Проверяйте все внимательно. Буквально позавчера все настроил по этой статье. Заработало сразу.

      • Андрей

        Проверил, все сделал корректно,ошибка:

        SSL received a record that exceeded the maximum permissible length.

        Может, провайдер заблокировал доступ телеграмм, можно проверить ?

        • Такая же проблема:
          curl: (51) SSL: no alternative certificate subject name matches target host name 'api.telegram.org'
          Похоже на блокировку telegram

          • Во втором скрипте, который с графиками, есть возможность использовать proxy. Настройки в конфигурационном файле. У меня как-то так всегда получается, что все сервера, что используют уведомления в телеграм, хостятся в европе. Ни разу не пришлось использовать прокси.

  74. Подскажите как вручную узнать itemid у графика zabbix 4.0

  75. Никак не могу понять, каким образом можно выделять текст оповещения жирным или курсивом.
    В Wiki проекта на github указано, что поддерживается Markdown, в описании telegram api говорится о возможности HTML и Markdown (В скрипте по дефолту, насколько я понял markdown).
    В любом случае, никакие теги не работают.
    Никто не заморачивался?

    • curl --header 'Content-Type: application/json' --request 'POST' --data '{"chat_id":"7678567467","text":"\uD83D\uDC4C - *Here* is OK emoji","parse_mode":"MARKDOWN"}' "https://api.telegram.org//sendMessage"

  76. Измененный скрипт для прокси, если кому нужно.
    #!/bin/bash

    token='ваш токен бота'
    chat="$1"
    subj="$2"
    message="$3"

    curl --socks5-hostname 27.113.255.154:1080 -s --header 'Content-Type: application/json' --request 'POST' --data "{\"chat_id\":\"${chat}\",\"text\":\"${subj}\n${message}\"}" "https://api.telegram.org/bot${token}/sendMessage"

    27.113.255.154:1080 - прокси для примера.
    Работает на centos 7

  77. Руслан

    Из-за ковычек, например в ошибке Problem name: Service "STacSV" (Audio Service) is not running
    режется сообщение и приходит Problem name: Service
    Подскажите, пожалуйста, как решить

  78. Никак не могу победить отправку графики, ошибка: zbxtg.py: Bad Request: IMAGE_PROCESS_FAILED
    да, кстати zabbix 4.0

  79. Аноним

    Всем привет, вопрос на засыпку. Забикс отправляет график на основе тригера (срабатывание загрузка порта). В телегу приходит только график Bits recived, но проблема наблюдается на bits sent.
    Я так понимаю график выжимает отсюда zbxtg;itemid:{ITEM.ID1}. То может нужно в место 1 ставить переменную? подскажите какую?

  80. Здравствуй, All. Я только начинаю изучать линукс и заббикс, до этого все время админил на винде. Прочитав манул и комменты, все в итоге получилось. Попробую резюмировать для тех, у кого остались вопросы, т.к. вижу, что тема не стихает и все еще актуальна. Итак, подразумевается, что вы в России и что для телеграм вы подняли свой прокси-сервер, скажем, во Франции (как это сделал я) на Socks5. Скрипт /usr/lib/zabbix/alertscripts/telegram.sh
    будет иметь вид:
    ---
    #!/bin/bash

    token='67ххххх97:AAHKW8Zy0FeDwFcN2Tabrakadabra'
    chat="$1"
    subj="$2"
    message="$3"

    /usr/bin/curl -s --header 'Content-Type: application/json' --request 'POST' --data "{\"chat_id\":\"${chat}\",\"text\":\"${subj}\n${message}\"}" --proxy 'socks5://193.70.ххx.xxx:52xxx' --proxy-user proxyloginvasya:proxypwdpupkin "https://api.telegram.org/bot${token}/sendMessage"
    ---
    остальное четко по манулу и все будет работать. Обращаю внимание, что при копипасте может "съехать" синтаксис команд, там, где двойное тире может вставиться одно длинное, также и кавычки съезжают. Короче, в терминале в редакторе стирайте копипастные спецсимволы и вбивайте заново, ну в общем не мне вас учить ;)

  81. Для работы через http-proxy в скрипте команде curl добавьте:

    /usr/bin/curl -x http://proxy-address:proxy-port - если прокси без авторизации

    /usr/bin/curl -x http://USER:PASSWORD@proxy-address:proxy-port - для прокси с авторизацией

    далее команда без изменений

    Узнать chat-id у канала:

    Если канал - Делаем канал публичным (можно после сделать приватным) и выполняем, изменив выделенное на своё:

    curl https://api.telegram.org/botBOT:TOKEN/getChat?chat_id=@mychannelname

    В ответ получите что-то типа:

    {«ok»:true,»result»:{«id»:-100ХХХХХХХХХ8,»title»:………

  82. Чтобы получить идентификатор группового чата, сделайте следующее:

    Добавьте в группу TeleOT BOT.

    Получить список обновлений для вашего BOT:

    https://api.telegram.org/bot/getUpdates
    Пример:

    https://api.telegram.org/botjbd78sadvbdy63d37gda37bd8/getUpdates
    Ищите объект "chat":

    { "update_id": 8393, "сообщение": { "message_id": 3, "с": { "ID": 7474, "first_name": "AAA" }, "чат": { "ID":, "название": "}," дата ": 25497," new_chat_participant": { "ID": 71, "first_name": "NAME "," имя пользователя ":" YOUR_BOT_NAME"}}}

  83. Алексей

    Подскажите, что за ошибка?
    * About to connect() to api.telegram.org port 443 (#0)
    * Trying 149.154.167.220...
    * Connected to api.telegram.org (149.154.167.220) port 443 (#0)
    * Initializing NSS with certpath: sql:/etc/pki/nssdb
    * CAfile: /etc/pki/tls/certs/ca-bundle.crt
    CApath: none
    * NSS error -5961 (PR_CONNECT_RESET_ERROR)
    * TCP connection reset by peer
    * Closing connection 0
    curl: (35) TCP connection reset by peer

    NSS обновлен.

  84. Добрый день!
    Сделал все по мануалу. С консоли отлично работает.
    /usr/lib/zabbix/alertscripts/telegram.sh xxxxxxxxxxx Проверка 'Тестовое сообщение'.

    При срабатывании тригера в zabbix, пишет: Неудачно "Process exited with code: 35"

    Отправка на почту работает отлично.
    Подскажите, пожалуйста, куда копать?

  85. Дмитрий

    Здравствуйте.
    Иногда приходит уведомление.

    Escalation cancelled: trigger

    Как понять что это за триггер?

  86. Мне тоже статья очень помогла полтора года назад, но в июле в Телеграм перестали падать оповещения... В zabbix показывает, что оповещения успешно отправлены, а на деле - нет. У меня одной такое и стоит разбираться самой или это у многих сейчас так из-за того, что Телеграм сейчас пытаются блокировать?

    • Омг, что-то я почему-то искала новые комментарии наверху, а не внизу. Вопрос снимаю, вижу, что уже были обсуждения данного вопроса...

  87. Никита

    Разобрался- В меню Действия нужно включить было опцию отправки сообщений администраторам и выбрать отправить через Telegram.Автору большое спасибо

  88. Никита

    HELP все уже перепроверил.скрипт сделал исполняемым,из консоли отправляет.Когда настроил zabbix то пропадес созданоое оповещение в настроках пользователя само по себе то вообще отключиться оповещение.У меня zabbix 3.4 Помогите знатоки

  89. Собрался редактировать статью, чтобы актуализировать информацию. Оказалось, что ничего изменять не надо. Она полностью актуальна. Только что проверил все способы, описанные в статье. Работают все.

    Самое любопытное, что в качестве тестового сервера была виртуалка в России. Все заработало без прокси. Но завелось не сразу, так как сам пропускал некоторые моменты. То токен бота забыл указать, то имя группы неправильно писал. В общем, надо быть внимательным при настройке и все получится.

    • вася пупкин

      тогда сам добавлю. для тех у кого сокс5 по паролю, чтобы заработал запрос curl, то перед --header надо вставить --socks5-basic Enable --proxy 'socks5://:' --proxy-user ':'

      у самого на centos7 работает

  90. Дмитрий

    При отправке тестового сообщения

    centos 7
    curl 7.61 (пробовал так же с 7.29)
    open ssl 1.1.0.i (пробовал 1.0.2k-fips )
    firewalld Отключет
    selinyx отключен

    Connected to api.telegram.org (149.154.167.220) port 443 (#0)
    * Initializing NSS with certpath: sql:/etc/pki/nssdb
    * CAfile: none
    CApath: none
    * loaded libnssckbi.so
    * NSS error -5961 (PR_CONNECT_RESET_ERROR)
    * TCP connection reset by peer
    * stopped the pause stream!
    * Closing connection 0

    • Дмитрий

      Не додумался почитать коменты забыл что живу в великой и могучей...
      Проблему решил установкой TOR.

  91. Евгений

    Добрый день!
    У вас сейчас работает отправка сообщений из скрипта в телеграм?
    После подключения прокси перестал отправлять

    • Не знаю, надо будет найти время и проверить. Я сам не пользуюсь этой отправкой и после включения блокировок не проверял работу.

  92. Пока ещё не забыл всё. Напишу как я решил проблему со своего прошлого коммента.
    Заббикс пришлось переустановить т.к. я намудрил с макросами.
    В чистом исполнении сделал всё по этому ману, но при срабатывании триггера скрипт не отрабатывал, в ошибку писал, мол таймаут.
    Таймаут был т.к. скрипт обращается на апи телеграма, который у нас забанен роскомнадзором :)
    Это я предусмотрел заранее, но упустил из вида, что скрипты из заббикса выполняются от его имени ( я писал .curlrc, в который прописывал socks5 прокси ).
    По- умолчанию у zabbix выставлен nologin и домашняя директория где- то в /usr/lib
    Я дал заббиксу домашний каталог и баш:
    mkdir /home/zabbix
    chmod -R 777 /home/zabbix
    chown -R zabbix:zabbix /home/zabbix
    Положил туда curlrc
    nano /home/zabbix/.curlrc
    с таким содержимым:
    socks5 = proxyip:port
    proxy-user = user:password
    user-agent = "Mozilla/5.0 (X11; Linux i686; rv:7.0.1) Gecko/20100101 Firefox/7.0.1"
    и сменил хоум и прописал баш заббиксу
    nano /etc/passwd
    Строчку с заббиксом привел к такому виду:
    zabbix:x:997:995:Zabbix Monitoring System:/home/zabbix:/bin/bash
    В итоге всё работает ( через прокси ).
    Донаты принимаю пивом.
    Раздел про проксю в ман впиши.

    • Дмитрий

      Ради интереса всё сделал как Роман написал, в итоге заббикс не запускается если родную строчку "zabbix:x:998:996:Zabbix Monitoring System:/var/lib/zabbix:/sbin/nologin" менять на "zabbix:x:997:995:Zabbix Monitoring System:/home/zabbix:/bin/bash"

      Ошибка такая:
      Redirecting to /bin/systemctl start zabbix-server.service
      Job for zabbix-server.service failed because a configured resource limit was exceeded. See "systemctl status zabbix-server.service" and "journalctl -xe" for details.

      • А я сервер ребутнул, что бы наверняка проверить.
        У меня пути, который был прописан для заббикс не существовало, потому я и сменил его на /home/
        Но если он существует, то .curlrc лучше положить туда и вместо nologin прописать /bin/bash

  93. Привет, а у меня трабл такой:
    Centos 7 + zabbix 3.4, всё настроено по мануалу, но когда срабатывает триггер, то заббикс делает вот это:

    command:'/usr/lib/zabbix/alertscripts/telegram.sh '-140034388' 'Исправлено: Zabbix agent на Виртуалка с докером недоступен 5 минут' 'Проблема решилась в 16:39:17 2018.08.09

    Сообщение кавычкой не закрывает, поэтому оно не отправляется, как тут быть?

  94. Александр

    Спасибо! На Ubuntu заработала всё сразу.
    Но спустя пару дней стало приходить криво - :
    Но не всегда криво - кажем сегодня пришло около 7 уведомленй подряд в телеграмм нормально. А потом снова "Problem: Service" как будто не справляеться с "наплывом" когда скрипту одновременно передают данные несколько триггеров.
    [05.08.18 14:08]
    Resolved: SBS4 has just been restarted
    Problem has been resolved at 14:08:35 on 2018.08.05
    Problem name: SBS4 has just been restarted
    Host: SBS4
    Severity: Average

    Original problem ID: 54730

    [05.08.18 14:09]
    Problem: Service

    [05.08.18 14:09]
    Problem: Service

    [05.08.18 14:09]
    Problem: Service

    [05.08.18 14:09]
    Problem: Service

    [05.08.18 14:09]
    Problem: Service

    [05.08.18 14:09]
    Problem: Service

    [05.08.18 14:09]
    Problem: Service

    [05.08.18 14:09]
    Problem: Service

    [05.08.18 14:09]
    Problem: Service

    Ва

    • Дмитрий

      Нужно убрать ковычки " в прототипе триггера

      • Алексей

        #!/bin/bash

        token='000000000'
        chat="$1"
        subj="$2"
        message="$3"

        /usr/bin/curl -s --header 'Content-Type: application/json' --request 'POST' --data "{\"chat_id\":\"${chat}\",\"text\":\"${subj}\n${message}\"}" "https://api.telegram.org/bot${token}/sendMessage"
        ~
        ~
        ~

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

    • Поясните пожалуйста, где на надо кавычки убрать, что бы приходило помимо "Problem: Service" еще название службы и узла.

  95. Дмитрий

    Спасибо за отличную статью ! Все сделал, все работает ! НО
    Сообщение приходят в урезанном виде

    OK: Serice или Problem:Service

    То есть какой сервис не видно. На почту приходит все нормально. В чем может быть проблема ?

  96. Народ поделитесь готовым скриптом с прокси , пытаюсь добавить вот этот параметр —socks5 ServerProxy:8080 -U user:password у меня ругается на синтаксис, и главное везде пишут по разному, у кого заработало скиньте плиз.

  97. Может подскажет кто, как в скрипте настроить, чтобы через прокси обращение шло к api.telegram.org

    #!/bin/bash

    token='452128666:AAF--WM1k-DbmSQigXZpXDmN8KbRbwD_kmU'
    chat="$1"
    subj="$2"
    message="$3"

    /usr/bin/curl -s --header 'Content-Type: application/json' --request 'POST' --data "{\"chat_id\":\"${chat}\",\"text\":\"${subj}\n${message}\"}" "https://api.telegram.org/bot${token}/sendMessage"

  98. Дмитрий

    Всем привет!
    Подскажите, не отправляет сообщение из консоли, через браузер отправляется, в чем может быть проблема?

    curl -s -X POST https://api.telegram.org/токен моего бота/sendMessage -d chat_id=359999656 -d text="Hello World"

    https://api.telegram.org/токен моего бота/sendMessage?chat_id=359999656&text=Hello%20World

    • Дмитрий

      все разобрался, не идет отправка на api.telegram.org с впски которая за бугром все работает, провайдер блочит отправку

  99. Дмитрий

    /usr/lib/zabbix/alertscripts/telegram.sh 210806260 Тест 'Проверяю отправку оповещений ботом'

    Скрипт из консоли отрабатывает, а в заббиксе пишет не удачная отправка и ошибка "Process exited with code: 35"

    Не пойму что за хрень

  100. Здравствуйте, в какую сторону ковать, чтобы алерты веб-мониторинга так же в телеграмм сыпались?

  101. команда:
    curl --header 'Content-Type: application/json' --request 'POST' --data '{"chat_id":"-------------","text":"TEST"}' "https://api.telegram.org/bo-------------------------------/sendMessage"

    выбрасывает ошибку:
    {"ok":false,"error_code":401,"description":"Unauthorized"}

  102. День добрый.
    При тестировании запроса на Ubuntu 16.04 получаю следующее:
    curl: (35) gnutls_handshake() failed: Error in the push function.
    Не подскажите, в какую сторону рыть?

    • использование прокси решает проблему

      • Ну хоть бы написал как это решает проблему. Что для этого надо? Взять бесплатный прокси? Купить? Или ваще ничего не надо, просто поставить в конфиге использование прокси. Ещё пошлите меня маны читать....

  103. Дрюбзик

    Не вкурю, зачем оповещения в "телегу", если есть sms+ mail? Есть инет = отправляем на почту, что-то серьезное тогда СМС!

    • Я сам для себя тоже не пользуюсь уведомлениями в телеграм. Мне достаточно почты. Тут удобство, как мне видится, именно в отправке в группы. Там же можно сразу ответить для всех разом. Для работы коллектива это удобно. Для одного особо нет смысла.

  104. Не приходят графики(
    $ sudo -u zabbix /usr/lib/zabbix/alertscripts/zbxtg.py мое_имя test "$(echo -e 'zbxtg;graphs: \nzbxtg;graphs_period=3600\nzbxtg;itemid:2419\nzbxtg;title:ololo')"
    zbxtg.py: Bad Request: PHOTO_INVALID_DIMENSIONS
    zbxtg.py: Zabbix user couldn't get graph (probably has no rights to get data from host), check script manually, see https://github.com/ableev/Zabbix-in-Telegram/wiki/Graphs

    • itemid тот что в письме приходит, график для этого события есть

    • zbx_api_user и zbx_api_pass прописывал и администраторский и только для чтения.
      bx_db_database, zbx_db_user, zbx_db_password - тоже правильные

  105. У меня с прокси работает но надо искать работающие прокси
    Вот проблема графики не выводятся хотя в самих триггерах они есть

  106. /usr/bin/curl -s --header 'Content-Type: application/json' --request 'POST' --data "{\"chat_id\":\"${chat}\",\"text\":\"${subj}\n${message}\"}" --proxy 'socks5://telegram.vpn99.net:55655' "https://api.telegram.org/bot${token}/sendMessage"

    • Александр

      Прокси это хорошо конечно, но где теперь уверенность что и его не заблочат, придётся теперь вк что ли подключать

      • Нужен свой личный прокси за деньги или на отдельном сервере. Я так сделал. Конечно, бесплатные прокси не вариант. А в целом, если за телегу взялись серьезно, проще на нее забить. Все равно удобства использования уже не будет.

        • Есть ли рабочий вариант для whatsapp или viber? Куда еще можно высылать оповещения?
          Еще заметил сообщения о проблеме или задваиваются или не приходят, а приходят только решения проблемы. В действиях все ок так как в почту все приходит корректно, грешу на работу прокси.

  107. Было бы здорово намутить здесь коротенькую инструкцию как включить прокси у бота в телеграмме, потому что этот сайт выпадает первым в поиске когда ищешь zabbix bot telegram proxy!)

    • Если не сложно. Опешите подробно, что нужно сделать что бы подключить прокс. Где , что, раскоментировать. Где , что, скачать.

  108. Руслан

    У кого то получилось подключить оповещение обратно?

  109. Главная проблема - найти рабочий sock5
    проверить прокси можно так
    curl -IL --socks5 host:port --proxy-user username:password https://api.telegram.org

    но из кучи публичных пока не один не подошел((

    • Какой ответ должен прийти? У меня приходит ответ такого плана: SSL received a record that exceeded the maximum permissible length.

  110. Maksim Isaev

    Обновите скрипт https://github.com/ableev/Zabbix-in-Telegram
    там добавлена поддержка прокси sock5

  111. Есть мысли как настроить оповещения через Телеграм после блокировки? Как прикрутить прокси в скрипт?