system/bots/monitor/README.md

Monitor Bot — Персональный бот-монитор

Версия: 1.0.0
Дата: 2026-01-11
Статус: Ready


Что это

Персональный Telegram бот для мониторинга системы.

Особенности:
- Работает только для владельца (проверка Telegram ID)
- Интеграция с system/monitor/
- Команды мониторинга и управления системой
- Безопасный (whitelist команд и сервисов)


Быстрый старт

1. Создать бота в Telegram

# Открыть @BotFather в Telegram
# Отправить: /newbot
# Название: My Monitor Bot
# Username: my_monitor_bot (любой свободный)

# Скопировать токен: 123456:ABC-DEF...

2. Получить свой Telegram ID

# Написать @userinfobot в Telegram
# Скопировать ID: 123456789

3. Настроить переменные окружения

# Добавить в ~/.bashrc или создать .env
export MONITOR_BOT_TOKEN='123456:ABC-DEF...'
export OWNER_TELEGRAM_ID='123456789'

# Применить
source ~/.bashrc

4. Запустить бота

cd /opt/claude-workspace

# Проверить что всё работает
python3 system/bots/monitor/bot.py

Бот отправит приветственное сообщение в Telegram.


Команды

Мониторинг

/status        - Текущий статус системы (disk, memory, CPU)
/alerts        - Активные алерты за последние 24 часа
/last_check    - Результаты последней проверки

Системные

/logs [service]  - Показать логи сервиса
                   Примеры: /logs nginx, /logs monitor

/run <task>      - Запустить задачу из scheduler
                   Пример: /run backup

Помощь

/help   - Список команд
/start  - Начать работу с ботом

Структура

system/bots/monitor/
├── bot.py                  ← Основной файл бота
├── config.yaml             ← Конфигурация
├── README.md               ← Эта документация
│
└── handlers/               ← Обработчики команд
    ├── __init__.py         ←   Экспорт
    ├── help.py             ←   /help, /start
    ├── monitoring.py       ←   /status, /alerts, /last_check
    └── system.py           ←   /logs, /run, /restart

Безопасность

1. Проверка доступа

Бот работает только для владельца. Проверка по Telegram ID:

def is_allowed(self, user_id: int) -> bool:
    return user_id == self.owner_id

Все остальные пользователи получают отказ.

2. Whitelist команд

Только разрешённые команды обрабатываются:

handlers = {
    '/start', '/help',
    '/status', '/alerts', '/last_check',
    '/logs', '/run'
}

3. Whitelist сервисов

Для /logs и /restart — только разрешённые сервисы:

allowed_services = {
    'nginx', 'monitor', 'system', 'docker'
}

4. Таймауты

Все команды имеют таймауты:
- /status — 30 секунд
- /logs — 10 секунд
- /run — 120 секунд


Интеграция с monitor

Бот использует существующий system/monitor/:

/status → python3 system/monitor/run.py --quick --json
/alerts → чтение .monitor/alerts/
/last_check → чтение system/monitor/output/latest.json

Автоматические уведомления (TODO):
- Monitor может отправлять алерты через бота
- Настраивается в system/monitor/config.yaml


Запуск как сервис

Создать systemd unit

sudo nano /etc/systemd/system/monitor-bot.service
[Unit]
Description=Monitor Bot - Personal Telegram Bot
After=network.target

[Service]
Type=simple
User=root
WorkingDirectory=/opt/claude-workspace
Environment="MONITOR_BOT_TOKEN=123456:ABC-DEF..."
Environment="OWNER_TELEGRAM_ID=123456789"
ExecStart=/usr/bin/python3 /opt/claude-workspace/system/bots/monitor/bot.py
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target

Включить и запустить

sudo systemctl daemon-reload
sudo systemctl enable monitor-bot
sudo systemctl start monitor-bot

# Проверить статус
sudo systemctl status monitor-bot

# Логи
sudo journalctl -u monitor-bot -f

Разработка

Добавить новую команду

  1. Создать обработчик в handlers/:
# handlers/my_handler.py

def handle_mycommand(bot, args):
    """Обработчик /mycommand"""
    return "✅ <b>Результат</b>\n\nТекст ответа"
  1. Импортировать в handlers/__init__.py:
from .my_handler import handle_mycommand

__all__ = [..., 'handle_mycommand']
  1. Добавить в bot.py:
handlers = {
    ...
    '/mycommand': handle_mycommand,
}

Тестирование

# Запустить бота в режиме отладки
export MONITOR_BOT_TOKEN='...'
export OWNER_TELEGRAM_ID='...'

python3 -u system/bots/monitor/bot.py

FAQ

Как узнать свой Telegram ID?

Написать @userinfobot в Telegram.

Бот не отвечает

  1. Проверить токен: echo $MONITOR_BOT_TOKEN
  2. Проверить ID: echo $OWNER_TELEGRAM_ID
  3. Проверить логи: journalctl -u monitor-bot -f

Как добавить второго пользователя?

Сейчас бот работает только для одного владельца. Для добавления:

  1. Изменить bot.py:
ALLOWED_IDS = [123456789, 987654321]

def is_allowed(self, user_id: int) -> bool:
    return user_id in ALLOWED_IDS
  1. Перезапустить бота

Бот не видит monitor

Проверить пути:

ls -la /opt/claude-workspace/system/monitor/run.py
ls -la /opt/claude-workspace/system/monitor/output/latest.json

Roadmap

v1.1 — Интерактивность

v1.2 — Автоматизация

v2.0 — Claude Session


Связи


Лицензия

Часть платформы Claude Workspace.


Версия: 1.0.0
Автор: Claude Sonnet 4.5
Дата: 2026-01-11