Для веб-майстрів найважливішою залишається стабільність роботи серверів, однак як оперативно реагувати та усувати виниклі проблеми в їхній роботі? З цим завданням найкраще впорається Telegram-бот, написаний на Python, для моніторингу стану Ubuntu сервера, який буде автоматично надсилати Вам сповіщення про недоступність тих чи інших компонентів для оперативного реагування та усунення проблем.
Для автоматизації сповіщень про недоступність веб-серверів Nginx, Apache, MySQL та інших на Ubuntu сервері за допомогою Telegram-бота на Python необхідно виконати наступні кроки:
Встановлення необхідних пакетів
Перед тим як розпочати встановлення, необхідно переконатися, що сервер має Python 3, pip та git.
Щоб встановити їх, виконайте наступні команди в терміналі:
sudo apt update sudo apt install python3 python3-pip git
Створення нового Telegram-бота
Перш ніж ми почнемо написання коду бота, необхідно створити Telegram-бота, отримати його API-ключ та дізнатися ID вашого чату.
Для цього дотримуйтесь інструкцій, викладених у цьому посібнику: https://core.telegram.org/bots#6-botfather.
Клонування репозиторію для надсилання сповіщень
Створіть новий каталог для проекту та клонувати репозиторій, що містить код для надсилання сповіщень, за допомогою наступних команд:
mkdir notify-telegram-bot cd notify-telegram-bot git clone https://github.com/python-telegram-bot/python-telegram-bot.git
Встановлення залежностей
Перейдіть у каталог python-telegram-bot, який ви щойно клонували, та встановіть залежності за допомогою команди:
cd python-telegram-bot pip3 install -r requirements.txt
Написання коду бота
Перейдемо до написання самого коду Telegram-бота на Python, який буде виконувати моніторинг стану Ubuntu сервера. Для цього відкрийте файл examples/echobot2.py
за допомогою будь-якого текстового редактора та замініть вміст файлу наступним кодом:
import telegram import subprocess bot = telegram.Bot(token='YOUR_API_KEY') chat_id = 'YOUR_CHAT_ID' def is_server_up(service_name): process = subprocess.run(['systemctl', 'status', service_name], stdout=subprocess.PIPE) output = process.stdout.decode('utf-8') return 'Active: active (running)' in output def check_services(): services = {'apache2': 'Apache', 'nginx': 'Nginx', 'mysql': 'MySQL'} for service in services: if not is_server_up(service): message = services[service] + ' is not running!' bot.send_message(chat_id=chat_id, text=message) if __name__ == '__main__': check_services()
Замініть YOUR_API_KEY
на API-ключ вашого бота та YOUR_CHAT_ID
на ID вашого чату.
Перевірка бота
Збережіть файл та запустіть його за допомогою команди:
python3 echobot2.py
Якщо все налаштовано правильно, бот повинен відправити повідомлення у ваш Telegram-чат, вказуючи, що сервер недоступний.
Автоматизація перевірки доступності сервера
Тепер, коли бот працює, необхідно налаштувати автоматичну перевірку стану сервера. Для цього створіть файл check_services.py
за допомогою будь-якого текстового редактора та додайте наступний код:
import time import os while True: os.system('python3 /path/to/echobot2.py') time.sleep(300)
Замініть /path/to/echobot2.py
на повний шлях до файлу echobot2.py
, який ви щойно створили.
Цей код буде перевіряти стан сервера кожні 5 хвилин.
Запуск перевірки у фоновому режимі
Щоб запустити перевірку у фоновому режимі, виконайте наступну команду:
nohup python3 /path/to/check_services.py &
Замініть /path/to/check_services.py
на повний шлях до файлу check_services.py
, який ви щойно створили.
Ця команда запустить перевірку у фоновому режимі та дозволить вам продовжувати роботу з терміналом.
Тепер ваш Telegram-бот буде надсилати сповіщення про недоступність веб-серверів на Ubuntu сервері. Ви можете налаштувати бота для сповіщення про інші сервіси, додавши їх у словник services
.
Наприклад, щоб перевірити стан сервісу SSH, додайте
'ssh': 'SSH'
у словникservices
.
Тестування бота
Тепер, коли Telegram-бот налаштований та запущений, необхідно протестувати моніторинг стану Ubuntu сервера. Для цього можна відключити один з веб-серверів на Ubuntu сервері та перевірити, чи отримаєте ви сповіщення від бота. Якщо ви отримали сповіщення, значить, бот працює коректно.
Цей простий Telegram-бот є лише початком для розвитку більш складних ботів. Ви можете розширити його функціональність, щоб він міг надсилати вам інформацію про завантаженість системи, доступний простір на диску, використання пам’яті та багато іншого.
Ви також можете використовувати бібліотеку Python python-telegram-bot
для створення більш складних ботів, які можуть виконувати різноманітні завдання на сервері.
Висновок
Тепер ви знаєте, як створити простого Telegram-бота на Python для моніторингу стану веб-серверів на Ubuntu сервері. За допомогою цього бота ви можете швидко отримувати сповіщення про недоступність веб-серверів та вживати заходів для їх відновлення.
Сподіваємось, цей гайд був корисним для вас та допоможе вам створити власного Telegram-бота для автоматизації процесів на вашому сервері.