Telegram бот на Python для мониторинга состояния Ubuntu сервера

Системное администрирование

Для web-мастеров самым важным остается стабильность в работе серверов, однако как оперативно реагировать и устранять возникшие проблемы в их работе? С этой задачей лучше всего справится 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 бота для автоматизации процессов на вашем сервере.

Оцените статью