Для 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 бота для автоматизации процессов на вашем сервере.