---
title: 'Как создать телеграм бота для мониторинга удаленных хостов | Zomro'
description: 'В данной статье мы научимся создавать телеграм бота для мониторинга удаленных серверов, маршрутизаторов по их IP или hostname.'
image: 'https://dx86q6oq7ry0e.cloudfront.net/uploads/media/blog/a55@server-panel.net/2023/02/01/1677488312_img_6383.png'
---

![opened image]()

  * [Zomro](https://zomro.com/rus/)
  * [FAQ](https://zomro.com/rus/blog/faq/)
  * Как создать телеграм бота для мониторинга удаленных хостов 



# Как создать телеграм бота для мониторинга удаленных хостов

25-02-2023

Для мониторинга серверов или сетевых устройств существует множество программных решений, многие из которых требует ресурсов сервера для развертывания и знаний по настройке. Но если у Вас один или несколько серверов или маршрутизатор с белым* IP то нет надобности развертывать сложную структуру мониторинга только для того, чтобы проверять, доступен ли сервер или маршрутизатор. Достаточно создать простого телеграм бота, который будет отправлять Вам уведомление в телеграм, если проверяемый IP недоступен (down) и когда снова доступен (up). Сам бот будет работать 24/7 на виртуальном сервере под управлениям операционной системы Linux, с минимальной нагрузкой на ресурсы.  
* белый IP адрес - это уникальный IP адрес, выданный на устройство или сервер и доступен из интернета. Такой IP является публичным.  
  
Что необходимо сделать:  
1\. В Telegram создать бота и приватный канал, в который добавить бота. В канал Вы можете приглашать тех, кто тоже может наблюдать за мониторингом   
2\. Установить на сервере python3. В этой статье мы рассмотрим размещение бота на виртуальном сервере с ОС Ubuntu 20.04 (можно разместить на любой ОС, на которой можно установить пакет python3)  
3\. Создать скрипт-файл, прописать в нем IP хостов (серверов или маршрутизаторов), установить период мониторинга и запустить с крипт в режиме работы 24/7.  
  
Приступим к выполнению.  
  
1\. Для регистрации нового телеграм бота, необходимо в приложении Telegram найти бот-сервис @BotFather и отправить ему команду регистрации нового бота  
/newbot![Как создать телеграм бота для мониторинга удаленных хостов - 1](https://dx86q6oq7ry0e.cloudfront.net/uploads/media/blog/a55@server-panel.net/2023/02/01/1677488269_img_6382.png)![Как создать телеграм бота для мониторинга удаленных хостов - 2](https://dx86q6oq7ry0e.cloudfront.net/uploads/media/blog/a55@server-panel.net/2023/02/01/1677488312_img_6383.png)  
Далее @BotFather запросит название для нашего бота. Ограничений в названии нет, введем, например:  
IP monitoring  
![Как создать телеграм бота для мониторинга удаленных хостов - 3](https://dx86q6oq7ry0e.cloudfront.net/uploads/media/blog/a55@server-panel.net/2023/02/01/1677488365_img_6384.png)  
Теперь необходимо ввести уникальное имя бота в системе Telegram. Название бота должно оканчиваться на _bot. Назовем, для примера  
ip_monitoring_super_bot  
![Как создать телеграм бота для мониторинга удаленных хостов - 4](https://dx86q6oq7ry0e.cloudfront.net/uploads/media/blog/a55@server-panel.net/2023/02/01/1677488480_img_6385.png)  
После этого, @BotFather предоставит нам TOKEN, с помощью которого можно управлять ботом. TOKEN необходимо сохранить, так как он понадобиться нам позже.  
![Как создать телеграм бота для мониторинга удаленных хостов - 5](https://dx86q6oq7ry0e.cloudfront.net/uploads/media/blog/a55@server-panel.net/2023/02/01/1677488475_img_6386.png)  
Телеграм бот зарегистрирован.  
  
Теперь создадим приватный канал, в который наш новый бот с именем @ip_monitoring_super_bot будет отправлять сообщения.  
  
Для этого в окне чатов программы Telegram нажимаем на иконку создания нового сообщения и выбираем New chanel - Create chanel - придумываем название каналу (например, IP monitoring chanel) - выбираем тип канала Private и добавляем бота @ip_monitoring_super_bot.  
![Как создать телеграм бота для мониторинга удаленных хостов - 6](https://dx86q6oq7ry0e.cloudfront.net/uploads/media/blog/a55@server-panel.net/2023/02/01/1677488516_img_6387.png)![Как создать телеграм бота для мониторинга удаленных хостов - 7](https://dx86q6oq7ry0e.cloudfront.net/uploads/media/blog/a55@server-panel.net/2023/02/01/1677488529_img_6388.png)  
![Как создать телеграм бота для мониторинга удаленных хостов - 8](https://dx86q6oq7ry0e.cloudfront.net/uploads/media/blog/a55@server-panel.net/2023/02/01/1677488545_img_6389.png)![Как создать телеграм бота для мониторинга удаленных хостов - 9](https://dx86q6oq7ry0e.cloudfront.net/uploads/media/blog/a55@server-panel.net/2023/02/01/1677488553_img_6390.png)  
В результате мы получаем приватный канал, в который бот @ip_monitoring_super_bot будет отправлять сообщения о состоянии оборудования, которое мы мониторим. Также в этот канал можно пригласить по специальной ссылке любого пользователя телеграм.  
Следует обратить внимание и проверить в свойствах канала IP monitoring chanel, добавлен ли бот @ip_monitoring_super_bot в качестве администратора канала. Чтобы перейти в свойства канала, достаточно нажать на названии канала.  
![Как создать телеграм бота для мониторинга удаленных хостов - 10](https://dx86q6oq7ry0e.cloudfront.net/uploads/media/blog/a55@server-panel.net/2023/02/01/1677488597_img_6394.png)![Как создать телеграм бота для мониторинга удаленных хостов - 11](https://dx86q6oq7ry0e.cloudfront.net/uploads/media/blog/a55@server-panel.net/2023/02/01/1677488617_img_6395.png)  
Также нам понадобится значение chat_id. Для этого необходимо:  
\- перейти в чат бота @ip_monitoring_super_bot и отправить сообщение /start (это запустит бота в работу)  
\- сделать тестовое сообщение (любое) в канале IP monitoring chanel  
\- перейти в браузере по ссылке https://api.telegram.org/botTOKEN/getUpdates  
В нашем примере ссылка будет в таком виде:  
https://api.telegram.org/bot5921115541:AAHltzyZpC_MBZzydhrOD_Brn8lnKNf7XXX/getUpdates  
Результат на экране будет таким:  
![Как создать телеграм бота для мониторинга удаленных хостов - 12](https://dx86q6oq7ry0e.cloudfront.net/uploads/media/blog/a55@server-panel.net/2023/02/01/1677488672_screenshot_1.png)Итак, запомним 2 важных значения для управления ботом:  
token= 5921115541:AAHltzyZpC_MBZzydhrOD_Brn8lnKNf7XXX  
chat_id = -100185915XXX  
  
2\. Подключимся к серверу по SSH ([как это сделать](https://zomro.com/rus/blog/faq/218-kak-vojti-na-linux-server-po-ssh))  
  
Проверим установлен ли python3:  
python3 --version  
  
Если python3 не установлен (ошибка: -bash: python3: command not found), необходимо установить командой  
\- для Ubuntu:  
apt install python3 -y  
\- дляCentOS  
yum install python3 -y  
Дополнительно установим модуль requests:  
pip3 install requests  
  
После установки можно проверить еще раз версию. Может быть приблизительно так:  
![Как создать телеграм бота для мониторинга удаленных хостов - 13](https://dx86q6oq7ry0e.cloudfront.net/uploads/media/blog/a55@server-panel.net/2023/02/01/1677488735_screenshot_2.png)  
Более подробно об установке python3: [Как установить Python 3.10 на Ubuntu 20.04](https://zomro.com/rus/blog/faq/299-kak-ustanovit-python-310-na-ubuntu-2004)  
  
3\. Создадим папку, в которой будет размещен скрипт мониторинга. Для этого выполним команду:  
cd && mkdir pingmonitor && cd pingmonitor  
  
Создадим и откроем файл  
vim main.py  
  
и разместим в нем скрипт:  
  
#----------------------------------------------------  
import os  
import requests  
import time  
#-------------------------  
hostname = ['8.8.8.8','1.1.1.1']  
time_pause = 30  
#-------------------------  
def SendMsgToTelegramChanel(msg):  
token="TOKEN"  
chat_id = 'CHAT_ID'  
params = {'chat_id': chat_id,'text': msg}  
response = requests.get('https://api.telegram.org/bot'+token+'/sendMessage', params=params)  
def IsHostAlive(host):  
ret = os.system('ping -c 2 {} > /dev/null'.format(host))  
if ret == 0:  
return True  
return False  
while True:  
for i in range(len(hostname)):  
file_signal = hostname[i] +'_down'  
if IsHostAlive(hostname[i]):  
if os.path.isfile(file_signal):  
os.remove(file_signal)  
SendMsgToTelegramChanel(hostname[i] + ' is up')  
#print(hostname + ' is up!')  
else:  
if not os.path.isfile(file_signal):  
open(file_signal,'tw').close()  
SendMsgToTelegramChanel(hostname[i] + ' is down')  
#print(hostname + ' is down!')  
time.sleep(time_pause)  
#------------------------------------------------  
  
\- в скрипте следует заменить TOKEN и CHAT_ID на сохраненные ранее значения token и chat_id.  
\- в строке hostname = ['8.8.8.8','1.1.1.1'], вместо IP 8.8.8.8 и 1.1.1.1 укажите IP (или hostname) Вашего сервера или маршрутизатора, которые необходимо мониторить*. IP адреса устройств следует указывать в одинарных кавычках и через запятую (если IP больше чем один)  
\- значение переменной time_pause = 30, указывает период проверки (в секундах). Не рекомендуется устанавливать меньше 10-15 секунд, особенно, если список проверяемых IP большой.  
\- не удаляйте отступы строк в скрипте. Это может привести к синтаксической ошибке.  
  
(*)скрипт использует метод проверки через отправку icmp пакетов (ping), по этой причине, следует убедится, что на сервере или маршрутизаторе (которые мониторятся) не блокируются ping-запросы.  
  
Теперь все готово для запука скрипта.  
Так как скрипт должен работать 24/7, чтобы его работа не отображалась на основном экране консоли, запустим его в отдельном "окне" с помощью утилиты screen (если не установлена, установите ее. Более подробно: [Основы работы с утилитой screen](https://zomro.com/rus/blog/faq/295-rabota-s-utilitoj-screen)).  
Для этого выполним команду:  
screen -S pingmonitor  
  
и перейдем к папку с файлом скрипта:  
cd && cd pingmonitor  
  
Запустим скрипт в работу командой:  
python3 main.py  
![Как создать телеграм бота для мониторинга удаленных хостов - 14](https://dx86q6oq7ry0e.cloudfront.net/uploads/media/blog/a55@server-panel.net/2023/02/01/1677488770_screenshot_3.png)  
Чтобы выйти из сеанса и оставить работающим наш скрипт, нажмите Ctrl+a+d. Теперь SSH консоль можно закрывать.  
Чтобы подключиться к сеансу с работающим скриптом, подключитесь к серверу по SSH и выполните команду:  
screen -r pingmonitor  
  
В случае, если сервер или маршрутизатор станет недоступен и после того, как станет доступным, Вы получите сообщение в канале IP monitoring chanel.  
![Как создать телеграм бота для мониторинга удаленных хостов - 15](https://dx86q6oq7ry0e.cloudfront.net/uploads/media/blog/a55@server-panel.net/2023/02/01/1677488771_screenshot_4.png)  
  
  
  


Похожие статьи

[Сброс пароля в VMware ESXi 6](https://zomro.com/rus/blog/faq/344-reset-password-in-vmware-esxi-6) [Мониторинг доступности сервера через планировщик Windows](https://zomro.com/rus/blog/faq/418-monitoring-server-availability-via-windows-scheduler) [Как установить Node.js на Windows Server 2012, 2016, 2019](https://zomro.com/rus/blog/faq/312-kak-ustanovit-nodejs-na-windows-server-2012-2016-2019) [Основы работы в mysql](https://zomro.com/rus/blog/faq/264-osnovy-raboty-v-mysql) [Бекапы с переносом сайтов на серверах VestaCP/HestiaCP через mount](https://zomro.com/rus/blog/faq/385-backups-with-site-transfer-on-vestacphestiacp-servers-via-mount)

[ Выделенный сервер с GPU от €174.80/мес ](/dedicated-servers/type=gpu)
