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

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

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

Введение

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

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

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

  • Использовать готового бота
  • Создать своего бота для уведомлений
  • Отправлять оповещения себе лично или в группу

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

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

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

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

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

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

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

Приступим к реализации.

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

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

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

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

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

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

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

Проверка оповещений

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

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

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

Скрипт для отправки оповещений

Напишем очень простой скрипт, который будет использовать zabbix для отправки оповещений в telegram. Стандартная настройка для директории со скриптами, которые использует заббикс для отправки уведомлений — /usr/lib/zabbix/alertscripts. Поменять ее можно в параметре AlertScriptsPath. Создадим скрипт.

# mcedit /usr/lib/zabbix/alertscripts/telegram.sh
#!/bin/bash

token='526250249:AAFtAqy4ln0BqK5vtU_9IoSlLduhtl8IaGg'
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"

Сохраняем файл и делаем исполняемым.

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

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

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

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

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

Идем в web интерфейс zabbix и добавляем новый способ оповещений. Для этого переходим в раздел Администрирование -> Способы оповещений и создаем новый.

Добавление нового способа оповещения

Заполняем необходимые поля.

Параметры нового оповещения

В данном случае {ALERT.SENDTO}, {ALERT.SUBJECT} и {ALERT.MESSAGE} этот как раз наши параметры, которые мы будем передавать скрипту.

Добавим новый способ оповещения пользователю, для которого они будут добавляться. В моем примере только один пользователь администратор, ему я и добавлю. Для этого идем в раздел Администрирование -> Пользователи. Выбираем нужного пользователя и добавляем ему новый тип оповещений — Telegram.

Редактирование оповещений пользователя

В поле «Отправлять на» вводим свой Telegram ID. Все, этого достаточно, если у вас используются дефолтные настройки действий разделе Настройка -> Действия. По-умолчанию, там есть действие, которое отправляет администраторам при срабатывании любого триггера оповещение по всем указанным каналам связи.

Активация действия

Я обычно для проверки использую тестовый триггер, который срабатывает, если на сервер подключится по ssh 2 и более юзеров. Сделаю это на своем сервере и посмотрю результат. Когда триггер сработает, на дашборде будет информация.

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

В телеграме бот пришлет уведомление.

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

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

Закрытие триггера

Скорее всего, вам не понадобится получать уведомления в телеграм на все события, которые происходят в системе. Вам нужно вручную настроить действия, на которые вы хотите получать уведомления. Для этого надо отредактировать дефолтное правило и оставить там только email оповещения. А для телеграма сделать отдельные действия.

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

Идем в Настройка -> Действия и создаем новое действие. На первой вкладке «Действие» указываем имя и условие срабатывания.

Создание нового действия

На вкладке «Операции» добавляем нужное действие. Я выбрал отправку сообщения всей группе администраторов zabbix.

Параметры действия

Это же действие продублировал для операций восстановления и подтверждения. Сохраняем действие и проверяем. Вы должны получить следующие оповещения:

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

Отправка оповещений в группу

Рассмотрим ситуацию, когда мы хотим отправлять уведомления из zabbix не конкретным людям, а сразу в группу, где будут несколько пользователей. Никаких особых настроек для этого не надо. Просто создайте группу в Телеграме, добавьте в эту группу бота @my_id_bot и напишите /start. Так вы узнаете ID группы. В эту же группу добавьте своего бота.

Теперь ID группы надо использовать в способе оповещения пользователя. Там, где мы раньше использовали ID пользователя, теперь ставим ID группы. Можете либо отредактировать предыдущий способ, либо добавить новый. Я добавлю новый, конкретно проделав следующие действия:

  1. Создал 2 способа оповещения: Telegram private и Telegram group. Способ оповещения в группу telegram
  2. Добавил оба этих способа пользователю администратор, указав соответствующие ID. Параметры telegram id
  3. Добавил оба эти способа в Действия. Действие для отправки уведомления в группу
Хочу обратить внимание, что ID группы начинается с тире, например -288179672. Я этот момент упустил и долго не мог сообразить, почему в группу не отправляются оповещения. Не знал, что этот символ является неотъемлемой частью.

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

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

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

Речь идет вот об этом скрипте — https://github.com/ableev/Zabbix-in-Telegram. Скопируем себе исходники.

# cd /usr/src && git clone https://github.com/ableev/Zabbix-in-Telegram

Для его работы, как я уже сказал выше, у вас должен быть установлен в системе python версии 2.6.0. Именно такая версия указана у разработчика скрипта. У меня нормально работает на 2.7.5. Так же для работы необходим pip модуль requests. Если у вас его нет, то надо сначала установить pip:

# cd /usr/src && wget https://bootstrap.pypa.io/get-pip.py
# python get-pip.py

а потом и сам модуль:

# pip install requests

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

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

tg_key = "526250249:AAFtAqy4ln0BqK5vtU_9IoSlLduhtl8IaGg"  # 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://zabbix.server.ru/"  # zabbix server full url
zbx_api_user = "zerox"
zbx_api_pass = "password"
zbx_api_verify = False  # True - do not ignore self signed certificates, False - ignore

zbx_basic_auth = False
zbx_basic_auth_user = ""
zbx_basic_auth_pass = ""

proxy_to_zbx = None
proxy_to_tg = None

#proxy_to_zbx = "proxy.local:3128"
#proxy_to_tg = "proxy.local:3128"

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_wl_ids = [210806260, ]
zbx_tg_daemon_wl_u = ["zeroxzed", ]

zbx_db_host = "localhost"
zbx_db_database = "zabbix"
zbx_db_user = "zabbix"
zbx_db_password = "password"


emoji_map = {
    "OK": "✅",
    "PROBLEM": "❗",
    "info": "ℹ️",
    "WARNING": "⚠️",
    "DISASTER": "❌",
    "bomb": "?",
    "fire": "?",
    "hankey": "?",
}

Жирным я выделил те параметры, что нужно поменять. Вам необходимо указать token от бота, который мы ранее создавали, полный url адреса сервера с zabbix, учетную запись к нему. Лучше всего сделать отдельную учетку с доступом только на чтение. Она нужна для получения графиков. Так же вам нужно будет указать telegram id и логин. Они нам не понадобятся, так как мы не будем использовать локальную слежбу телеграма, но если поля оставить пустыми, то скрипт ругается на ошибку в конфиге. Поэтому заполняем своими данными. И в конце нужно будет указать параметры доступа к базе данных заббикса.

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

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

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

Проверка работы скрипта zbxtg.py

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

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

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

Идем в web интерфейс и добавляем 2 новых способа оповещения: один для приватных сообщений, второй для группы. Делаем все то же самое, что и раньше.

Добавление нового оповещения с помощью zbxtg.py

Я добавляю ключ —debug на время отладки, чтобы лог работы и картинки сохранялись в /var/tmp/. Это может быть полезно. Потом надо убрать. После этого добавляем новые способы оповещения пользователю. Все то же самое, что делали для первого способа.

Включение оповещения у пользователя

Название учетки и группы я указал в виде имени, а не ID. С именами тоже работает, плюс так удобнее.

Теперь создаем новое действие. которое будет использовать созданные только что способы оповещения. Вот мой пример такого действия с использованием графиков и иконок emoji в сообщениях.

Шаблон операции

Тема по умолчанию {{WARNING}} Проблема: Превышено число SSH пользователей
Сообщение по умолчанию Последнее значение: {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}} — макрос для выставления иконки с восклицательным знаком
  • zbxtg;graphs — указывает, что будем отправлять график
  • zbxtg;itemid:{ITEM.ID1} — параметр автоматически определяет itemid для графика на основании информации об итеме в триггере, можно указать нужный itemid вручную
  • zbxtg;title — задает имя для заголовка графика

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

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

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

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

Тема по умолчанию {{OK}} Решено: Превышено число SSH пользователей
 Сообщение по умолчанию  Server: {HOSTNAME} ({HOST.IP})
Описание:
Проблема устранена!
Время устранения проблемы: {DATE} {TIME}

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

Шаблон операции подтверждения

Тема по умолчанию {{OK}} Подтверждено: Превышено число SSH пользователей
 Сообщение по умолчанию {USER.FULLNAME} подтвердил проблему {ACK.DATE} {ACK.TIME} со следующим сообщением:
{ACK.MESSAGE}Текущее состояние проблемы {EVENT.STATUS}

Сохраняем действие, активируем и проверяем. При срабатывании тестового триггера я получаю следующие оповещения с графиком в telegram.

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

Отправка только графика в телеграм из заббикса

Можете теперь настраивать по своему усмотрению графики, триггеры, события с отправкой оповещений и графиков в telegram.

Заключение

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

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

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

Помогла статья? Есть возможность отблагодарить автора

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

  1. Денис

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

  2. Aleksei

    спасибо!

  3. Дмитрий
    Дмитрий

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

  4. Андрей
    Андрей

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

    • Zerox

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

  5. Maksim

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

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

  6. Николай
    Николай

    Попробовал прикрутить скрипт к 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.
      т.е форматирование не применяется

  7. Maksim

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

    • Maksim

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

  8. Денис

    Здравствуйте автор!
    Спасибо большее за Ваши статьи, очень помогают как начинающему сис админу.
    Вынужден заметить, что натолкнулся на проблему:
    «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.

  9. Алекс

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

    • Zerox

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

  10. Ростислав
    Ростислав

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

  11. Ростислав
    Ростислав

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

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

  12. Алексей
    Алексей

    Добрый день.
    Нужна помощь по настройке данной радости на 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

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

  13. Саян

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

  14. Дима

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

    • Zerox

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

  15. Антон

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

    • Zerox

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

  16. serg

    Добрый день! У меня почему то на 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 лежат на поверхности — неправильная дата и время на сервере.

  17. strim

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

    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

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

  18. VecH

    Что то отвалилось?
    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

  19. Ben

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

    • Zerox

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

      • Ben

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

  20. Альт

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

  21. Dim

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

    • andre

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

    • Zerox

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

      • Роман

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

        • Роман

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

  22. Maksim Isaev
    Maksim Isaev

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

  23. DK

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

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

  24. Руслан
    Руслан

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

  25. Роман

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

    • Денис

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

  26. strim

    /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

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

        • Dim

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

  27. Dim

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

  28. Олег

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

  29. Дрюбзик
    Дрюбзик

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

    • Zerox

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

  30. Иван

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

  31. Sergiy

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

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

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