agent-control-center/docs/operations/MONITORING.md

16 KiB
Raw Permalink Blame History

Monitoring & Health-check

Версия: 0.1.0-draft Дата: 2026-07-20 Статус: Draft Зависит от: SPECIFICATION.md (§7.5 Operations and observability), docs/adapters/HERMES.md, docs/patterns/WORKER_ORCHESTRATION.md

Этот документ описывает систему мониторинга и health-check'ов для Hermes Agent в составе Agent Control Center. Реализация запрещена до G0/G1 и утверждения оператором.

1. Обзор

Система мониторинга ACC охватывает три слоя:

  1. Инфраструктурный — Connector, Control Plane, базы данных, сеть
  2. Агентский — Hermes профили, провайдеры, credential pools
  3. Интеграционный — Gateway (Telegram polling), 9Router, внешние API

2. Health-check компонентов

2.1 Матрица health-check

Компонент Метод проверки Периодичность Критичность
Hermes default профиль hermes --profile default doctor 5 мин CRITICAL
Worker-code hermes --profile worker-code doctor 5 мин HIGH
Worker-fast hermes --profile worker-fast doctor 5 мин HIGH
Worker-research hermes --profile worker-research doctor 5 мин MEDIUM
Worker-review hermes --profile worker-review doctor 5 мин MEDIUM
Gateway (Telegram) hermes gateway status 1 мин CRITICAL
9Router curl https://9router.example.com/health 1 мин HIGH
OpenCode Go API curl -I https://api.opencode.ai/health 5 мин HIGH
Fireworks API curl -I https://api.fireworks.ai/health 5 мин HIGH
Gemini API curl -I https://generativelanguage.googleapis.com 5 мин HIGH
NVIDIA API curl -I https://integrate.api.nvidia.com/v1 5 мин HIGH
Дисковое пространство df -h 15 мин MEDIUM
Память free -m 15 мин MEDIUM
CPU top -bn1 15 мин LOW

2.2 Hermes Health-check

# Комплексная проверка
hermes doctor --fix

# Проверка конфигурации
hermes config check

# Статус компонентов
hermes status --all

# Проверка конкретного профиля
hermes --profile worker-code doctor

# Проверка gateway
hermes gateway status

# Проверка cron
hermes cron status

2.3 Интерпретация статусов

Статус Описание SLA Impact
healthy Все проверки пройдены
degraded Часть функций работает с ограничениями WARNING, частичная доступность
unhealthy Критическая функция недоступна CRITICAL, требуется intervention
unknown Health-check не выполнен / нет данных WARNING, проверка мониторинга

3. Ключевые метрики

3.1 Latency

Метрика Цель WARNING CRITICAL
hermes_response_time_p95 ≤ 5s > 10s > 30s
provider_latency_p95 (openrouter) ≤ 3s > 8s > 20s
delegate_task_startup_time_p95 ≤ 10s > 20s > 60s
telegram_polling_latency_p95 ≤ 2s > 5s > 15s
9router_proxy_latency_p95 ≤ 500ms > 2s > 5s

3.2 Token usage

Метрика Обновление WARNING CRITICAL
tokens_used_daily Каждый запрос > 80% дневной квоты > 95%
tokens_used_monthly Каждый запрос > 80% месячной квоты > 95%
tokens_per_request_avg Скользящее окно 1 час > 100K в среднем (аномалия) > 500K (возможна утечка)
cost_estimate_daily Ежечасно > бюджета > бюджета × 1.5

3.3 Error rates

Метрика Окно WARNING CRITICAL
provider_4xx_rate 5 мин > 5% > 15%
provider_5xx_rate 5 мин > 2% > 10%
delegation_failure_rate 15 мин > 10% > 25%
gateway_message_delivery_failure 15 мин > 5% > 15%
telegram_polling_errors 5 мин > 3 ошибок > 10 ошибок

3.4 Gateway метрики

Метрика Описание WARNING CRITICAL
telegram_polling_loop_healthy polling loop активен false в течение 2 мин false в течение 5 мин
gateway_websocket_connected mTLS WSS к Control Plane disconnected > 30s disconnected > 5 мин
active_user_sessions Количество активных пользователей = 0 (нет активности)
message_queue_depth Глубина очереди недоставленных сообщений > 100 > 1000

4. Алерты

4.1 Классификация

Severity Описание Время реакции Эскалация
CRITICAL Сервис недоступен, пользователи затронуты 5 мин Немедленно → Operator
WARNING Деградация, возможны проблемы 30 мин В течение часа
INFO Информационное событие В рабочее время

4.2 Перечень алертов

Alert ID Название Severity Условие Runbook
ALT-GTW-001 Gateway down CRITICAL hermes gateway status != running §6.1
ALT-GTW-002 Telegram polling lag WARNING Polling latency > 5s за 5 мин §6.2
ALT-PRV-001 Provider quota exhausted CRITICAL Все ключи провайдера exhausted §6.3
ALT-PRV-002 Provider unavailable CRITICAL Все провайдеры для профиля unhealthy §6.4
ALT-PRV-003 Quota warning WARNING > 80% квоты использовано §6.3
ALT-WRK-001 Worker profile offline WARNING Профиль unhealthy > 10 мин §6.5
ALT-WRK-002 All workers offline CRITICAL Все worker-профили unhealthy §6.5
ALT-CFG-001 Config invalid WARNING hermes config check failed §6.6
ALT-BKP-001 Backup failed WARNING Последний снапшот старше 24ч BACKUP.md
ALT-DSK-001 Low disk space CRITICAL < 5 GB свободно §6.7
ALT-9RT-001 9Router unreachable WARNING Health-check 9Router failed > 5 мин §6.8
ALT-CRN-001 Cron scheduler stalled WARNING Последний tick > 2× интервала hermes cron status

5. Мониторинговые инструменты

5.1 Встроенные

Инструмент Команда Назначение
hermes doctor hermes doctor [--fix] Проверка зависимостей и конфигурации
hermes status hermes status --all Статус компонентов
hermes config check hermes config check Проверка конфигурации
hermes gateway status hermes gateway status Статус gateway
hermes cron status hermes cron status Статус планировщика
hermes insights hermes insights --days 7 Аналитика использования
hermes debug hermes debug (или /debug) Отчёт для отладки

5.2 Внешние (рекомендуемые)

  • Prometheus + Grafanaсбор и визуализация метрик
  • Healthchecks.io / Uptime Kuma — внешний мониторинг доступности
  • Sentry / Datadog — отслеживание ошибок
  • W&B — логирование ML-экспериментов и usage

6. Процедуры восстановления

6.1 Gateway down

# 1. Проверить статус
hermes gateway status

# 2. Проверить логи
tail -100 ~/.hermes/logs/gateway.log | grep -i "error\|failed"

# 3. Перезапустить
hermes gateway restart

# 4. Если не помогло — проверить systemd (Linux)
systemctl --user status hermes-gateway
systemctl --user reset-failed hermes-gateway
systemctl --user restart hermes-gateway

# 5. Если crash loop — проверить конфигурацию платформ
hermes config check
# Убедиться, что токены платформ валидны

6.2 Telegram polling lag

# 1. Проверить статус polling
hermes gateway status | grep telegram

# 2. Переключить fallback IP (если блокировка)
# В config.yaml:
# gateway.platforms.telegram.fallback_ips добавить/изменить IP

# 3. Перезапустить gateway
hermes gateway restart

6.3 Provider quota exhausted

# 1. Проверить статус ключей
hermes auth list opencode-go
hermes auth list fireworks
hermes auth list gemini
hermes auth list nvidia

# 2. Если есть активные ключи — проверить стратегию
# Убедиться, что exhausted ключи корректно исключены

# 3. Если все ключи exhausted:
#    a. Проверить наличие резервных ключей
#    b. Добавить новый ключ: hermes auth add <provider>
#    c. Или ждать сброса квоты

# 4. Для срочных задач — переключить на другого провайдера
#    worker-code (opencode-go) → worker-code (nvidia / deepseek-v4-pro)

6.4 Provider unavailable

# 1. Проверить доступность API
curl -I https://api.opencode.ai/health
curl -I https://api.fireworks.ai/health
curl -I https://generativelanguage.googleapis.com

# 2. Если API недоступен — ждать восстановления
# 3. Переключить профили на альтернативных провайдеров
#    (см. WORKER_ORCHESTRATION.md §3 Fallback-цепочки)

# 4. Проверить статус 9Router
curl https://9router.example.com/health

6.5 Worker profile offline

# 1. Проверить статус профиля
hermes --profile worker-code doctor

# 2. Проверить конфигурацию
hermes --profile worker-code config check

# 3. Проверить .env профиля
hermes --profile worker-code config env-path
# Убедиться, что API ключи на месте и валидны

# 4. Проверить доступность провайдера (см. §6.4)

# 5. Если проблема в модели — переключить модель
hermes --profile worker-code config set model.default <alternative_model>

6.6 Config invalid

# 1. Проверить синтаксис
hermes config check

# 2. Сравнить с последним бэкапом
diff ~/.hermes/config.yaml ~/.hermes/backups/latest/config.yaml

# 3. Восстановить из бэкапа (см. BACKUP.md)
python scripts/restore_backup.py --latest

6.7 Low disk space

# 1. Определить, что занимает место
du -sh ~/.hermes/sessions/
du -sh ~/.hermes/logs/
du -sh ~/.hermes/audio_cache/

# 2. Очистить старые сессии
hermes sessions prune --older-than 30

# 3. Очистить старые логи
find ~/.hermes/logs/ -name "*.log" -mtime +7 -delete

# 4. Очистить audio cache
find ~/.hermes/audio_cache/ -mtime +7 -delete

6.8 9Router unreachable

# 1. Проверить доступность
curl -v https://9router.example.com/health

# 2. Переключить Hermes на прямой endpoint
# В config.yaml изменить base_url на прямой URL провайдера
hermes config set model.base_url "https://api.opencode.ai/v1"

# 3. После восстановления 9Router — вернуть конфигурацию

7. Панель мониторинга

Рекомендуемая структура дашборда:

┌─────────────────────────────────────────────────────────┐
│  AGENT CONTROL CENTER — MONITORING          v0.1.0-draft │
├────────────┬────────────┬────────────┬──────────────────┤
│  PROFILES  │ PROVIDERS  │  GATEWAY   │  INFRASTRUCTURE  │
│  ────────  │  ────────  │  ────────  │  ──────────────  │
│  default   │ opencode   │ telegram   │  CPU:  34%       │
│  ● ONLINE  │ ● HEALTHY  │ ● ONLINE   │  RAM:  62%       │
│            │            │            │  DISK: 41%       │
│  worker-c  │ fireworks  │ discord    │                  │
│  ● ONLINE  │ ● DEGRADED │ ○ OFFLINE  │  UPTIME: 14d 3h  │
│            │            │            │                  │
│  worker-f  │ gemini     │ slack      │  CONNECTOR       │
│  ● ONLINE  │ ● HEALTHY  │ ○ OFFLINE  │  ● CONNECTED     │
│            │            │            │                  │
│  worker-r  │ nvidia     │            │  BACKUP          │
│  ● ONLINE  │ ● HEALTHY  │            │  ✓ 2h ago        │
│            │            │            │                  │
│  worker-rv │            │            │  CRON            │
│  ● ONLINE  │            │            │  ✓ running       │
├────────────┴────────────┴────────────┴──────────────────┤
│  USAGE TODAY                    ERRORS (LAST HOUR)       │
│  ─────────                      ──────────────────       │
│  Tokens: 1.2M / 5M (24%)        Total: 12               │
│  Cost:   $4.20 / $25.00 (17%)   4xx: 8  | 5xx: 4        │
│                                  Rate: 0.3%              │
├──────────────────────────────────────────────────────────┤
│  RECENT EVENTS                                           │
│  14:32  INFO   worker-code: task completed (45s)         │
│  14:30  WARN   fireworks: quota 82%                      │
│  14:28  INFO   telegram: message delivered               │
│  14:25  WARN   worker-fast: latency spike (8.2s p95)     │
└──────────────────────────────────────────────────────────┘

8. Ссылки