Николаев Виталий
Блог веб-разработчика: Битрикс, 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

В своих проектах я использую серверную инфраструктуру Timeweb Cloud

VPS и облачные решения для стабильной работы сайтов на PHP и 1С-Битрикс — от корпоративных сайтов до интернет-магазинов и высоконагруженных веб-проектов.

Перейти на Timeweb Cloud
Реклама · ERID: CQH36pWzJqVJ4YD9t5y227AkMQdhpG2THarwRmX2g9tS8x

Установка библиотеки 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!'
    )

В своих проектах я использую серверную инфраструктуру Timeweb Cloud

VPS и облачные решения для стабильной работы сайтов на PHP и 1С-Битрикс — от корпоративных сайтов до интернет-магазинов и высоконагруженных веб-проектов.

Перейти на Timeweb Cloud
Реклама · ERID: CQH36pWzJqVJ4YD9t5y227AkMQdhpG2THarwRmX2g9tS8x

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

  • 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;
  • небольших проектов;
  • домашних серверов;
  • мониторинга сайтов;
  • контроля доступности сервисов.
107 просмотров
Где заказы?

Почему один сайт стабильно приносит заявки, а другой годами просто «висит в интернете»?

В телеграм-канале «Где заказы?» я разбираю реальные ошибки бизнеса, SEO, сайты, рекламу, воронки продаж и показываю, почему компании теряют клиентов и как это исправить.

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

Комментарии

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