Мониторинг числа подписчиков канала telegram в Zabbix

Хочу поделиться небольшой заметкой на тему мониторинга за объектами популярного мессенджера. Я расскажу, как мониторить число подписчиков в каналах и группах telegram с помощью Zabbix. Благодаря гибкости как заббикса, так и телеграма, сделать это очень просто.

Онлайн-курс по устройству компьютерных сетей

На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.

Мониторинг числа подписчиков канала telegram в Zabbix

Введение

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

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

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

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

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

Переходим непосредственно к настройке мониторинга за подписчиками.

Как получить информацию о подписчиках в telegram

У Telegram отличное api, с помощью которого можно взаимодействовать с мессенджером. Конкретно о числе подписчиков можно узнать с помощью метода getChatMembersCount. В качестве параметра ему нужно передать id чата или имя публичного канала. Покажу на примере своего чата https://t.me/srv_admins и канала https://t.me/srv_admin.

Протестируем запрос на количество подписчиков с помощью curl из консоли сервера мониторинга zabbix.

# curl -s https://api.telegram.org/bot654532507:AAHBacH_3OpjGtPeWwNmTrk12J6Hc/getChatMembersCount?chat_id=@srv_admin
{"ok":true,"result":4325}

Получили ответ в формате json. Он отлично подходит для zabbix, так как последний умеет из коробки парсить json. У вас есть 2 варианта дальнейшей настройки мониторинга:

  1. Сделать скрипт на сервере, который будет слать запросы в api telegram и передавать полученное значение в zabbix с помощью агента. Плюс решения в том, что нагрузка на сервер мониторинга минимальная. Неудобство в том, что нужно куда-то добавлять скрипт.
  2. Слать запросы к api напрямую с zabbix сервера с помощью HTTP Агента. И сразу там же парсить полученный ответ. Плюс этого подхода в том, что все настройки хранятся в шаблоне и легко сохраняются или переносятся через экспорт шаблона. Минус в том, что все вычисления и запросы выполняются самим заббиксом.

Я обычно иду по второму пути, потому что так удобнее.

Мониторинг подписчиков telegram в Zabbix

Переходим в web интерфейс zabbix-server, создаем новый шаблон и добавляем туда новый item.

Создание item для мониторинга за подписчиками

В качестве url указано следующее значение:

https://api.telegram.org/bot{$TOKEN_BOT}/getChatMembersCount?chat_id={$CHANNEL_NAME}

Ниже указан Тип информации: Числовой (целое положительное). В предобработке делаем фильтр по JSONPath, чтобы получить числовое значение из json.

Предобработка ответа от telegram api

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

Макросы шаблона

Из основного все. По аналогии делается мониторинг за пользователями группы (чата). Вот пример моего шаблона - zabbix-telegram.xml. Не забудьте указать свои макросы для названий канала, группы и токена бота.

В шаблоне несколько айтемов:

  • TG Group - число подписчиков группы, обновляется раз в 10 минут;
  • TG Chat - число подписчиков чата, обновляется раз в 10 минут;
  • Изменение подписчиков - зависимый элемент данных, фиксирует относительное изменение числа подписчиков группы после каждой проверки;
  • Изменения за сутки - сумма значений предыдущего айтема изменение подписчиков за последние 24 часа;
  • Подписчики по дням - запускается раз в сутки в 23:59, чтобы зафиксировать количество подписчиков в этот день.

Все айтемы шаблона мониторинга подписчиков telegram в zabbix

На этом у меня по мониторингу подписчиков телеграм в zabbix все.

Заключение

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

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

и т.д. Больше примеров смотрите в разделе Zabbix.

Углубленный онлайн-курс по MikroTik.

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном онлайн-курcе по администрированию MikroTik. Автор курcа – сертифицированный тренер MikroTik Дмитрий Скоромнов. Более 40 лабораторных работ по которым дается обратная связь. В три раза больше информации, чем в MTCNA.

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

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

Автор Zerox

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

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

  1. Спасибо за статью.
    Подскажите пожалуйста, как в заббиксе можно ввести в переменную(или макрос) имя массива json для создания прототипа элемента данных?
    {"status":"running","cluster":"master","date":"09\/12\/2021","time":"04:13","lch":{"stest":{"active":false,"connect":true,"status":"-----","queueopen":true,"input":"10","output":"0","queue":"1"},"aftn":{"active":true,"connect":true,"status":"AC---","queueopen":true,"input":"17","output":"4","queue":"0"},"corpmail":{"active":true,"connect":true,"status":"A----","queueopen":true,"input":"0","output":"26","queue":"0"}}}
    Имена масивов "stest, aftn, corpmail. Json в заббиксе получил, а вот как сделать что бы создавались элементы данных на основе имён массивов разобраться не могу...

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

      • Аноним

        А подготовить, это вы имели ввиду добавить id например в массив?

        • Вся инфа по автообнаружению и созданию элементов данных тут - https://www.zabbix.com/documentation/5.4/ru/manual/discovery/low_level_discovery
          Там есть примеры и для json. Я так сходу не скажу, можно ли Ваш json распарсить прямо в zabbix и использовать для создания итемов. Возможно, его придётся немного преобразовать. С этим надо разбираться.

          • Аноним

            Документацию читал, и операнды пробывал использовать, но они просто не предназначены для извлечения динамических имён массивов, поэтому и обратился сюда в надежде на совет. Но всё равно спасибо, за направление, буду дальше копать.

            • Я недавно занимался вопросом автообнаружения и придумал небольшой трюк. Он описан в заметке - https://t.me/srv_admin/1361 Если кратко, то для формирования списка для автообнаружения я использую предобработку с помощью javascript. В нём можно как угодно обработать в том числе и json и подать его в нужном виде. Посмотрите, может это поможет решить задачу.

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

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

    • Просто добавляете шаблон через импорт на Zabbix Server. Потом прикрепляете его к любому хосту. Логичнее всего к самому Zabbix серверу его и прикрепить. Потом идете в этот хост, куда прикрепили шаблон, и изменяете в макросах информацию о канале и токен. Это все через стандартный функционал Zabbix делается, никаких костылей. Если что-то не понятно, можно нагуглить, типа "как импортировать шаблон" или "как изменить макрос" и т.д.

  3. Виталий

    Статья супер.

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Нажимая кнопку "Отправить комментарий" Я даю согласие на обработку персональных данных.
Используешь Telegram? Подпишись на канал автора →
This is default text for notification bar