Николаев Виталий
Блог веб-разработчика: Битрикс, PHP, Python, Linux и SEO
Python Python
19.04.2018

Пишем ping бота для Telegram на Python

Пишем ping бота для Telegram на Python

Для простого мониторинга доступности сайта или сервера не всегда есть смысл поднимать полноценные системы мониторинга вроде:

  • Zabbix;
  • Nagios;
  • Prometheus;
  • Grafana.

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

В этой статье напишем простого Telegram-бота на Python, который пингует ресурс и отправляет сообщение, если сервер перестал отвечать.

Регистрация Telegram-бота

Для начала нужно зарегистрировать бота через BotFather, получить токен и создать Telegram-канал.

Процесс регистрации подробно описан в статье:

Пишем Telegram-бота на Python

Установка библиотеки pyTelegramBotAPI

Для отправки сообщений в Telegram будем использовать библиотеку:

pyTelegramBotAPI

Устанавливаем библиотеку:

pip install pyTelegramBotAPI

Python-скрипт мониторинга

Сам бот максимально простой:

import os
import telebot

hostname = "google.com"

channel = '@test'

token = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'

# Выполняем ping
response = os.system('ping ' + hostname)

# Инициализируем Telegram-бота
bot = telebot.TeleBot(token)

# Проверяем доступность ресурса
if response == 0:

    print(hostname + ' is up!')

else:

    print(hostname + ' is down!')

    # Отправляем сообщение в Telegram
    bot.send_message(
        channel,
        hostname + ' is down!'
    )

Как работает скрипт

  • os.system() — выполняет команду ping;
  • response == 0 — сервер отвечает;
  • response != 0 — ресурс недоступен;
  • bot.send_message() — отправляет сообщение в Telegram.

Настройка параметров

В скрипте нужно заменить:

  • google.com — на ваш сайт или сервер;
  • @test — на Telegram-канал;
  • token — на токен вашего бота.

Автоматический запуск проверки

Чтобы мониторинг работал постоянно, скрипт нужно запускать автоматически:

  • через Cron в Linux;
  • через Планировщик задач Windows.

Пример запуска каждые 5 минут через cron:

*/5 * * * * /usr/bin/python3 /root/ping-bot.py

Плюсы такого решения

  • минимальная нагрузка;
  • простая настройка;
  • работает даже на слабом VPS;
  • не требует базы данных;
  • Telegram-уведомления приходят моментально.

GitHub репозиторий

Полный код бота доступен на GitHub:

https://github.com/Nikovit/ping-bot

Итог

В результате получается простой Telegram-бот для мониторинга доступности сайтов и серверов.

Такой скрипт отлично подходит для:

  • личных VPS;
  • небольших проектов;
  • домашних серверов;
  • мониторинга сайтов;
  • контроля доступности сервисов.
34 просмотров

Комментарии

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