---
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/ua/)
  * [FAQ](https://zomro.com/ua/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)  
  
  
  


Схожі статті

[Ядра серверів Minecraft Java](https://zomro.com/ua/blog/faq/332-minecraft-java-server-cores) [Як переглянути логи shutdown і restart у Windows Server](https://zomro.com/ua/blog/faq/258-kak-posmotret-logi-shutdown-i-restart-v-windows-server) [Як створити свій образ Windows для Cloud VPS (OpenStack)](https://zomro.com/ua/blog/faq/513-how-to-create-your-own-windows-image-for-cloud-vps) [Як підключитися до сервера через FTP, SFTP та SCP](https://zomro.com/ua/blog/faq/687-how-to-connect-to-a-server-via-ftp-sftp-and-scp) [Оновлення та пониження версії PHP на системі CentOS 7](https://zomro.com/ua/blog/faq/434-upgrading-and-downgrading-php-on-centos-7)

[ Сервер з GPU від €174.80/міс ](/dedicated-servers/type=gpu)
