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

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

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

Если у вас есть желание освоить Linux с нуля, не имея базовых знаний, рекомендую познакомиться с онлайн-курсом Administrator Linux.Basic в OTUS. Курс для новичков, для тех, кто хочет войти в профессию администратора Linux. Подробности по .

Введение

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

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

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

  • Использовать встроенный 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

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

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

  1. Аватар
    Анатолий

    Здравствуйте! 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 и всё завелось как надо, сообщения в телегу теперь приходят как надо. Почему на скрипте это отрабатывало некорректно разобраться так и не удалось и останется загадкой.

  2. Аватар

    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

    • Zerox

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

    • Аватар

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

      • Zerox

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

  3. Аватар

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

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

  4. Аватар

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

    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'

    • Zerox

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

      PermissionError: [Errno 13] Permission denied: '/usr/lib/zabbix/alertscripts/zbxTelegram_files/znt.log'
  5. Аватар

    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

  6. Аватар

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

    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, не отправляет кириллицу, на английском отправляется без проблем, вы решили это проблему? если да можете подсказать решение. Спасибо

  7. Аватар

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

    • Zerox

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

      • Аватар

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

        • Zerox

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

          • Аватар

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

  8. Аватар

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

  9. Аватар
    Дмитрий

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

    • Zerox

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

      • Аватар
        Дмитрий

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

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

  10. Аватар
    Артур Аветисян

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

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

  11. Аватар

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

    • Zerox

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

      • Аватар

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

        • Zerox

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

          • Аватар

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

  12. Аватар
    Сергей

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

  13. Аватар
    Дмитрий

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

  14. Аватар
    Сергей

    При тестировании способа оповещений выдает сообщение:
    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

  15. Аватар

    Добрый день. при выполнении: 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

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

  16. Аватар
    Кирилл

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

    Так же хочу поделиться, что на версии 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

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

  17. Zerox

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

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

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

  18. Аватар

    Если провайдер совсем совсем плохой, и даже через 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"

  19. Аватар
    Евгений

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

  20. Аватар
    Алексей

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

    /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

  21. Аватар
    Дмитрий

    День добрый

    дошел до след шага
    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

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

  22. Аватар

    Попробую уточнить еще раз. Выход в Интернет осуществляется через 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.

  23. Аватар

    Здравствуйте. Есть проблема. Есть 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. Права на скрипты и на каталоги даны всем пользователям. Не подскажите в чем может быть проблема или хотя бы что сделать, чтобы попытаться определить проблему.

    • Zerox

      Так вы пробуйте отправлять не
      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» то сообщение приходит в телеграм

  24. Аватар

    Доброго времени.
    Столкнулся с проблемой на 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 ?

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

    • Zerox

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

      • Аватар

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

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

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

  25. Аватар

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

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

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

    • Zerox

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

      • Аватар

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

        • Zerox

          Тут скорее надо в скрипт заглянуть и посмотреть, почему кавычки вызывают проблемы. Может это из-за разметки 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

            • Zerox

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

              • Аватар

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

              • Аватар

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

                • Аватар

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

  26. Аватар

    Всем привет. Решил настроить отправку графиков и столкнулся с проблемой.
    Оповещение в телегу приходит но без 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')"

  27. Аватар

    Народ. Помогите пожалуйста кто сталкивался. 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

  28. Аватар

    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 без графиков отправляется и приходит
    Помогите, пожалуйста с ошибкой

    • Zerox

      Ошибся, суля по всему вот:
      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

  29. Аватар

    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)

  30. Аватар
    Дмитрий

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

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

    • Аватар

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

  31. Аватар

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

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

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

    • Аватар

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

  32. Аватар
    Семен Клыков

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

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

  33. Аватар

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

    • Zerox

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

  34. Аватар

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

  35. Аватар

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

    • Аватар

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

    • Аватар

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

  36. Аватар

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

    Спасибо.

  37. Аватар
    Дмитрий

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

  38. Аватар

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

    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, и там все работает, на этой нет)!

    • Zerox

      Вот ошибка:

      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, что-то блокирует?

  39. Аватар

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

  40. Аватар

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

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

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

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

  41. Аватар

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

  42. Аватар

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

  43. Аватар

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

    [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 ~]#

    • Decart

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

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

  44. Аватар

    Доброго вечера, создал бота, 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
        работает норм + бесплатный

  45. Аватар

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

  46. Аватар

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

    • Zerox

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

  47. Аватар

    Добрый день!
    при отправке с сервера все отлично, сообщения приходят, а при срабатывании триггера состояние отправки "неудачно", инфо:
    % 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
    кому и какие разрешения нужно дать?
    заранее благодарен.

  48. Аватар
    Андрей

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

    • Zerox

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

  49. Аватар
    Андрей

    День добрый!
    У меня ошибка после выполнения # 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.

    • Zerox

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

      • Аватар
        Андрей

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

        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

          • Zerox

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

  50. Аватар

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

  51. Аватар

    Никак не могу понять, каким образом можно выделять текст оповещения жирным или курсивом.
    В 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"

  52. Аватар

    Измененный скрипт для прокси, если кому нужно.
    #!/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

  53. Аватар
    Руслан

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

  54. Аватар

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

    • Аватар

      Прочтение конфигурационного файла еще раз, очень внимательно - решило проблему. ))

  55. Аватар
    Аноним

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

  56. Аватар

    Здравствуй, 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"
    ---
    остальное четко по манулу и все будет работать. Обращаю внимание, что при копипасте может "съехать" синтаксис команд, там, где двойное тире может вставиться одно длинное, также и кавычки съезжают. Короче, в терминале в редакторе стирайте копипастные спецсимволы и вбивайте заново, ну в общем не мне вас учить ;)

  57. Аватар

    Для работы через 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»:………

  58. Аватар

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

    Добавьте в группу 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"}}}

  59. Аватар
    Алексей

    Подскажите, что за ошибка?
    * 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 обновлен.

  60. Аватар

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

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

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

  61. Аватар
    Дмитрий

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

    Escalation cancelled: trigger

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

  62. Аватар

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

    • Аватар

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

  63. Аватар
    Никита

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

  64. Аватар
    Никита

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

  65. Zerox

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

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

    • Аватар
      вася пупкин

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

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

  66. Аватар
    Дмитрий

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

    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.

  67. Аватар
    Евгений

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

    • Zerox

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

  68. Аватар

    Пока ещё не забыл всё. Напишу как я решил проблему со своего прошлого коммента.
    Заббикс пришлось переустановить т.к. я намудрил с макросами.
    В чистом исполнении сделал всё по этому ману, но при срабатывании триггера скрипт не отрабатывал, в ошибку писал, мол таймаут.
    Таймаут был т.к. скрипт обращается на апи телеграма, который у нас забанен роскомнадзором :)
    Это я предусмотрел заранее, но упустил из вида, что скрипты из заббикса выполняются от его имени ( я писал .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

  69. Аватар

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

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

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

  70. Аватар
    Александр

    Спасибо! На 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" еще название службы и узла.

  71. Аватар
    Дмитрий

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

    OK: Serice или Problem:Service

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

  72. Аватар

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

  73. Аватар

    Может подскажет кто, как в скрипте настроить, чтобы через прокси обращение шло к 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"

  74. Аватар
    Дмитрий

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

    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 с впски которая за бугром все работает, провайдер блочит отправку

  75. Аватар
    Дмитрий

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

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

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

  76. Аватар

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

  77. Аватар

    команда:
    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"}

  78. Аватар

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

    • Аватар

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

      • Аватар

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

  79. Аватар
    Дрюбзик

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

    • Zerox

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

  80. Аватар

    Не приходят графики(
    $ 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 - тоже правильные

  81. Аватар

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

  82. Аватар

    /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"

    • Аватар
      Александр

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

      • Zerox

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

        • Аватар

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

  83. Аватар

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

    • Аватар

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

  84. Аватар
    Руслан

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

  85. Аватар

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

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

    • Аватар

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

  86. Аватар
    Maksim Isaev

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

  87. Аватар

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

    • Аватар

      Он и так работает.

    • Zerox

      В скрипте уже все есть, надо только раскомментировать в кофниге параметры с proxy и указать сервер.

      • Аватар

        Посоветуйте годный прокси сервер, пробовал отсюда http://spys.one/proxys/DE/ не помогает, ругается.

        • Аватар

          Подскажите пожалуйста раскоментированию подлежат строка: #proxy_to_tg = "proxy.local:3128" ? или эту тоже нужно? #proxy_to_zbx = "proxy.local:3128" Я так понимаю приватную проксю сюда нельзя закинуть (с логином и паролем)? и всеравно пока не работает( У вас получилось?

  88. Аватар

    Добрый день, можете подсказать, что нужно сделать, чтобы заббикс отправлял на русском языке оповещения? А то если меняешь слова "trigger" на русский язык, то он их сохраняет вопросами. Рус. лок стоит на ubuntu. Из самой системы на русском отправляются сообщения.

  89. Аватар

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

    • Zerox

      Это совсем другая логика работы и надо все делать с нуля и по-другому. А зачем в telegram отправлять все оповещения? Отправляйте только то, что реально нужно.

      • Аватар

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

  90. Аватар

    Что то отвалилось?
    Ubuntu 16.04 x86
    Бот создан, свой ID получил, ID группы тоже

    root@fox-vd:~# curl --header 'Content-Type: application/json' --request 'POST' --data '{"chat_id":"0000000","text":"Проверяю отправку оповещений ботом"}' "https://api.telegram.org/botXXX:XXX"

    502 Bad Gateway

    502 Bad Gateway
    nginx/1.12.2

  91. Аватар

    Добрый день,не могли бы помочь в чем может быть проблема?

    zbxtg.py: Conflict: can't use getUpdates method while webhook is active
    Traceback (most recent call last):
    File "/usr/lib/zabbix/alertscripts/zbxtg.py", line 888, in
    main()
    File "/usr/lib/zabbix/alertscripts/zbxtg.py", line 767, in main
    uid = tg.get_uid(zbx_to)
    File "/usr/lib/zabbix/alertscripts/zbxtg.py", line 176, in get_uid
    for m in updates["result"]:
    KeyError: 'result'

    • Zerox

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

  92. Аватар

    Добрый день! У меня почему то на SSL ругается...
    curl -v --header 'Content-Type: application/json' --request 'POST' --data '{"chat_id":"215021143","text":"Проверяю отправку оповещений ботом"}' "https://api.telegram.org/bot548010018:AAHJ0OYoUJ_QhN3cU8LIx5yj6TmNYuY8nZk/sendMessage"
    Note: Unnecessary use of -X or --request, POST is already inferred.
    * Trying 149.154.167.220...
    * TCP_NODELAY set
    * Connected to api.telegram.org (149.154.167.220) port 443 (#0)
    * ALPN, offering h2
    * ALPN, offering http/1.1
    * successfully set certificate verify locations:
    * CAfile: /etc/ssl/certs/ca-certificates.crt
    CApath: /etc/ssl/certs
    * TLSv1.2 (OUT), TLS handshake, Client hello (1):
    * OpenSSL SSL_connect: SSL_ERROR_SYSCALL in connection to api.telegram.org:443
    * stopped the pause stream!
    * Closing connection 0
    curl: (35) OpenSSL SSL_connect: SSL_ERROR_SYSCALL in connection to api.telegram.org:443

    ОС Ubuntu 18.04

    • Zerox

      Надо разбираться с конкретной ошибкой - OpenSSL SSL_connect: SSL_ERROR_SYSCALL in connection to.
      Чаще всего ошибки с ssl лежат на поверхности - неправильная дата и время на сервере.

    • Аватар

      Доброе утро. Попробуйте так:
      curl -k --insecure --socks5-basic Enable --proxy 'socks5://ip:порт' --header 'Content-Type: application/json' --request 'POST' --data '{"chat_id":"-ваш id чата","text":"Проверяю отправку оповещений ботом"}' "https://api.telegram.org/токен"

  93. Аватар

    Добрый день, спасибо за статью, все работает.
    # /usr/lib/zabbix/alertscripts/telegram.sh № Тест 'Проверяю отправку оповещений ботом' - приходит корректно, но при оповещении из zabbix вида Resolved: Service "Имя службы"..... обрезается оповещение до символа " , возможно поправить как-нибудь скрипт для отправки "?

    • Zerox

      Конечно, можно править, но надо тестировать. У меня без проблем, все работает как и должно.

  94. Аватар

    Привет, попробовал этот скрипт на freebsd, не запускается, отбивает /usr/local/etc/zabbix22/zabbix/externalscripts/telegram.sh: Command not found. Или на фряхе он не работает?

    • Zerox

      Я так думаю, во фряхе путь к утилите curl будет другой. Именно об этом у тебя ошибка.

  95. Аватар

    Приветствую, всё сделал из CLI работает.
    Журнал действий утверждает, что всё ок, но нет сообщений. Как это дело в заббиксе отладить?
    Спасибо за статью!

  96. Аватар
    Алексей

    Добрый день.
    Нужна помощь по настройке данной радости на zabbix 3.4 в docker.

    Изначально скрипт не срабатывает, ссылаясь на строку 8 в telegram.sh, со словами

    /usr/lib/zabbix/alertscripts/telegram.sh: line 8: /usr/bin/curl: No such file or directory

    что логично, ибо в контейнере любые сервисы отсутсвуют и курла нет.

    2й же метод сообщает

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

    до сюда еще руки не дошли.

    т.к дефолтная ветка забикса для докера построена на linux alpine, там нет даже apt. Так что ставить курл нечем и этот путь слишком трудозатратный. Сначала нужно просто заставить работать.
    Это все мысли в слух, вдруг кому симптомы помогут.

    Заменил имидж сервера на ветку ubuntu-3.4-latest, установил курл внутрь контейнера. Питон там уже есть.
    способ временный, не суть важно.

    docker exec ID bash -c "apt update && apt install -y curl"

    Теперь ошибка следующая:
    Process exited with code: 60.

    2й метод не работает все с тем же выводом. --debug я на нем включил, но в логах пусто.

    Дальше копаться сил небыло, так что рад любой помощи.

    а еще на сайте регистрация не работает=)

    • Zerox

      А в чем смысл запуска заббикса в докере? Не улавливаю. Это постоянные проблемы и неудобства.

      • Аватар
        даниил

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

        • Zerox

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

          • Аватар

            Заивист от инфраструктуры. Нет никакого смысла разворачивать заббикс как стендалон сервис, если инфра изначально основана на оркестрации контейнеров

            • Zerox

              Что он будет мониторить в таком случае? Для мониторинга кластера с контейнерами он не подходит. Зачем его в нем разворачивать?

  97. Аватар
    Ростислав

    https://www.shellhacks.com/ru/telegram-api-send-message-personal-notification-bot/

    Кому цікаво ось по телеграму стаття

  98. Аватар
    Ростислав

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

  99. Аватар

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

    • Zerox

      Надо раздел "Действия" смотреть и вникать в то, что там настроено. Все оповещения там.

    • Аватар
      Алексей

      Решили проблему с затраиванием? Если да - отпишитесь плиз...

      • Аватар
        Михаил

        Возникла та же ошибка. В моём случае это было вызвано тем, что при отправке уведомления скрипт ловил ошибку (так не был создан график) и отправлял три сообщения. После того, как убрал триггеры на те элементы, где графики не созданы, всё стало нормально.

  100. Аватар

    Здравствуйте автор!
    Спасибо большее за Ваши статьи, очень помогают как начинающему сис админу.
    Вынужден заметить, что натолкнулся на проблему:
    "zbxtg.py: User '*********' needs to send some text bot in private" - после выполнения файла. Решение это правка скрипта в этом же файле "zbxtg.py". При выполнении данного скрипта возникает ошибка проверки имени, по-скольку некоторые пользователи не имеют "uid Telegram".

    По сему по всему нужно убрать строки с куска функции get_uid:
    if "username" in chat: if chat["username"] == name: uid = chat["id"] оставив только uid = chat["id"]. Всех благ жду от Вас The Dude.

  101. Аватар

    При попытке отправить в групповой чат, выходит такая ошибка
    zbxtg.py: You need start a conversation with your bot first in 'namegroup' group chat, type '/start@NameBot'
    в личку нормально шлет, не могу понять - с чем может быть связно?
    в чате /start@NameBot писал, бесполезно.

    • Аватар

      Все, разобрался. Надо писать название группы, а я идентификатор ее писал :)

  102. Аватар
    Николай

    Попробовал прикрутить скрипт к Zabbix 4.0pre вот такие результаты:
    При выполнении скрипта выходит ошибка: {"ok":false, "error_code":404, "description":"Not Found"}

    Пробовал сделать так:
    /usr/bin/curl -s "https://api.telegram.org/bot${token}/sendMessage?chat_id=${chat}&text=${subj}\n${message}"

    При таком подходе скрипт отрабатывает, но при передаче параметров в скрипт из заббикса - сообщения не отправляются

    • Аватар
      Николай

      Да при этом сообщение приходит вот в таком виде: Test\nTest script.
      т.е форматирование не применяется

  103. Аватар

    Было бы круто, чтобы можно получить график по запросу
    Отправил команду боту, он тебе в ответ график :)

    Вообще из Zabbix скриптом каким-нибудь внешним есть возможность графики вытягивать - по itemid например?

  104. Аватар
    Андрей

    Настроил оповещения без графиков, работает только на пользователя, на группу не хочет. Хотя тире ставлю.

    • Zerox

      Где-то ошибка значит. У меня все получилось и с группой, и с учеткой. Принципиальной разницы в настройках нет.

  105. Аватар
    Дмитрий

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

    У меня Centos 6.5 phyton 2.7.5 zabbix 3.2.10 есть пару проблем:

    1. Скрипт отправки сообщений из консоли работает, но сам zabbix не отправляет хотя в отчете пишет, что уведомление отправлено.

    Все права на скрипт chown и chmod даны.

    2. при проверки на дебаг zbxtg.py вылезает ошибка

    File "/usr/lib/zabbix/alertscripts/zbxtg.py", line 717
    multiple_to = {i: [] for i in to_types}

    • Аватар
      Дмитрий

      Насчет второй проблемы вопрос решился, Centos новый python не увидел =)
      А вот с отправкой сообщений пока беда

      • Zerox

        Попробуй для теста запустить заббикс с правами рута. Там в конфиге есть такой параметр. И проверь.

        • Аватар
          Дмитрий

          Запустил через Allowroot=1 в zabbix_server.conf
          Не помогло.
          Все дело идет к тому, что настало время переселять zabbix на centos 7 и заодно новую версию ставить.

        • Аватар

          Привет, у меня такая же проблема. С терминала сообщения отправляются в telegram, а вот с самого zabbix нет, пишит что статус "отправлено". Версия zabbix 3.4.7
          Подскажи куда копать?

          • Аватар

            Вопрос снят. Нашел проблему. Случайно поставил пробел в функции {ALERT.SENDTO}
            Так что если у вас возникнет проблема, ищите пробелы ;) либо, есть способ понять что происходит, в скрипте дописываем функцию:

            echo "$CHAT_ID" > /tmp/testzbb
            echo "$SUBJ" >> /tmp/testzbb
            echo "$MESSAGE" >> /tmp/testzbb
            echo "TEST" >> /tmp/testzbb

            в директорие /tmp/testzbb смотрим события .

            Так же упростил скрипт отправки сообщения в телеграмм, сделал его более понятным:

            TOKEN="ваш токин"
            CHAT_ID="$1"
            SUBJ="$2"
            MESSAGE="$3"

            URL="https://api.telegram.org/bot$TOKEN/sendMessage"

            curl -s -X POST $URL -d chat_id=$CHAT_ID -d text="$MESSAGE" -d subj="$SUBJ"

  106. Аватар

    спасибо!

  107. Аватар

    Отличная статья!
    Огромное спасибо! Прикрутилось уведомление на телегу!
    Графики решил попозже сделать, но пока и этого более чем достаточно!

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

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

Нажимая кнопку "Отправить комментарий" Я даю согласие на обработку персональных данных.