Пишем ping бота для Telegram на Python
Для простого мониторинга доступности сайта или сервера не всегда есть смысл поднимать полноценные системы мониторинга вроде:
- Zabbix;
- Nagios;
- Prometheus;
- Grafana.
Иногда достаточно простого скрипта, который будет проверять доступность ресурса и отправлять уведомление в Telegram при падении сайта.
В этой статье напишем простого Telegram-бота на Python, который пингует ресурс и отправляет сообщение, если сервер перестал отвечать.
Регистрация Telegram-бота
Для начала нужно зарегистрировать бота через BotFather, получить токен и создать Telegram-канал.
Процесс регистрации подробно описан в статье:
Установка библиотеки pyTelegramBotAPI
Для отправки сообщений в Telegram будем использовать библиотеку:
Устанавливаем библиотеку:
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;
- небольших проектов;
- домашних серверов;
- мониторинга сайтов;
- контроля доступности сервисов.
Комментарии