Skip to content

Latest commit

 

History

5 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Server Status Bot

Телеграм-бот для мониторинга состояния сервера. По команде или нажатию кнопки собирает метрики хоста через psutil и присылает читаемый отчёт.

Что показывает

  • Сводка (/status) — CPU, RAM, swap, средняя нагрузка (load average), аптайм, ОС.
  • Диски (/disks) — использование по каждому смонтированному разделу.
  • Сеть (/net) — объём переданных данных, пакеты, число активных соединений.
  • Процессы (/top) — топ процессов по потреблению CPU и памяти.

Все действия также доступны через инлайн-кнопки под сообщением. image

Установка

cd /opt
git clone <ваш-репозиторий> server-status-bot   # или скопируйте файлы
cd server-status-bot

python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt

Настройка

  1. Создайте бота у @BotFather и получите токен.
  2. Узнайте свой Telegram user id (например, у @userinfobot).
  3. Скопируйте пример конфига и заполните его:
cp .env.example .env
nano .env
BOT_TOKEN=123456789:AAE...
ALLOWED_USER_IDS=123456789          # через запятую, если несколько

⚠️ Безопасность: если ALLOWED_USER_IDS оставить пустым, бот будет отвечать любому пользователю Telegram и раскрывать данные вашего сервера. На боевом сервере всегда указывайте разрешённых пользователей.

Запуск

Вручную (для проверки):

source .venv/bin/activate
python bot.py

Как systemd-сервис (рекомендуется для сервера):

# отредактируйте User и пути в unit-файле под свой сервер
sudo cp server-status-bot.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable --now server-status-bot
sudo systemctl status server-status-bot     # проверить состояние
journalctl -u server-status-bot -f          # смотреть логи

Замечания

  • Некоторые метрики (число сетевых соединений, часть процессов) требуют прав. Если запускать не от root, отдельные поля могут показывать «н/д» — это нормально и не ломает бота.
  • Бот работает в режиме long polling, входящий порт открывать не нужно.
  • Сбор метрик вынесен в отдельные потоки (asyncio.to_thread), чтобы psutil не блокировал event loop.

Дальнейшее развитие

Если понадобится, бота легко расширить: мониторинг конкретных systemd-сервисов и портов, проверка HTTP-эндпоинтов, статус Docker-контейнеров, а также автоматические алерты (например, при CPU > 90% присылать сообщение самому).

About

Бот, который парсит информацию с VPS сервера и выдает её удобно и красиво в тг боте

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages