← Все статьи

Мониторинг Telegram-ботов: полное руководство

Зачем нужен мониторинг

Telegram-бот в продакшне — это сервис, от которого зависят пользователи. Без мониторинга вы узнаете о падении бота только когда пользователи начнут жаловаться. А это может быть через часы или дни.

Мониторинг решает три задачи:

  1. Доступность — бот запущен и отвечает на запросы
  2. Производительность — время ответа, потребление ресурсов
  3. Ошибки — отлов и уведомление о сбоях

Уровень 1: Базовый мониторинг через systemd

Если бот запущен как systemd-сервис, вы уже получаете базовый мониторинг:

# Статус бота
systemctl status mybot

# Логи за последний час
journalctl -u mybot --since "1 hour ago"

# Автоперезапуск при падении (в файле сервиса)
Restart=always
RestartSec=5

Это минимум, но у него есть ограничения:

  • Нет уведомлений о падении
  • Нет метрик (CPU, RAM, latency)
  • Нет истории инцидентов

Уровень 2: Health checks

Добавьте HTTP-эндпоинт /health в бота:

http.HandleFunc("/health", func(w http.ResponseWriter, r *http.Request) {
    // Проверяем подключение к БД
    if err := db.Ping(); err != nil {
        http.Error(w, "db down", 503)
        return
    }
    w.WriteHeader(200)
    w.Write([]byte("ok"))
})

Теперь можно мониторить HTTP-эндпоинт внешним сервисом (UptimeRobot, Healthchecks.io) и получать уведомления при недоступности.

Уровень 3: Метрики и алерты

Prometheus + Grafana

Стандартный стек для серьёзного мониторинга:

  1. Бот экспортирует метрики в формате Prometheus
  2. Prometheus собирает метрики каждые 15 секунд
  3. Grafana визуализирует дашборды
  4. Alertmanager отправляет уведомления

Полезные метрики для Telegram-бота:

  • bot_messages_total — количество обработанных сообщений
  • bot_errors_total — количество ошибок
  • bot_response_duration_seconds — время ответа
  • bot_active_users — активные пользователи
  • process_resident_memory_bytes — потребление RAM

Настройка алертов

# prometheus/rules.yml
groups:
  - name: bot-alerts
    rules:
      - alert: BotDown
        expr: up{job="mybot"} == 0
        for: 1m
        labels:
          severity: critical
        annotations:
          summary: "Bot is down"
      
      - alert: HighErrorRate
        expr: rate(bot_errors_total[5m]) > 0.1
        for: 5m
        labels:
          severity: warning

Отправка алертов в Telegram

Настройте Alertmanager для отправки уведомлений в Telegram через webhook:

# alertmanager.yml
receivers:
  - name: telegram
    webhook_configs:
      - url: 'http://localhost:9087/alert'

Уровень 4: Централизованные логи

Для ботов в продакшне важно иметь централизованное хранилище логов:

Структурированное логирование

Используйте JSON-логи вместо plain text:

{"level":"error","msg":"failed to send message","chat_id":12345,"error":"timeout","ts":"2026-03-07T12:00:00Z"}

ELK Stack (Elasticsearch + Logstash + Kibana)

Тяжёлое решение для больших проектов. Позволяет:

  • Полнотекстовый поиск по логам
  • Визуализацию трендов ошибок
  • Корреляцию событий

Loki + Grafana

Лёгкая альтернатива ELK. Работает с теми же Grafana-дашбордами, что и Prometheus.

Мониторинг в BotOps

BotOps предлагает мониторинг из коробки, без необходимости настраивать Prometheus, Grafana или ELK:

  • Дашборд — CPU, RAM, uptime каждого бота в реальном времени
  • Логи — просмотр с фильтрацией прямо в веб-интерфейсе
  • Алерты — уведомления в Telegram при падении или высоком потреблении ресурсов
  • Health checks — автоматическая проверка доступности
  • История — все инциденты и перезапуски в аудит-логе

Всё это настраивается за минуту при деплое бота.

Чеклист мониторинга

Минимальный набор для продакшн-бота:

  • [ ] Systemd с Restart=always
  • [ ] Health check эндпоинт
  • [ ] Уведомления о падении (Telegram/email)
  • [ ] Мониторинг RAM и CPU
  • [ ] Структурированные логи
  • [ ] Регулярная проверка логов на ошибки

Заключение

Мониторинг — не опция, а необходимость для любого бота в продакшне. Начните с базового (systemd + health checks), затем добавляйте метрики и алерты по мере роста. Или используйте BotOps — и получите всё из коробки.

Попробуйте BotOps бесплатно — мониторинг включён в каждый план.