system/monitor/CLAUDE.md

Monitor — Агент здоровья системы

Версия: 1.1.0
Модель: Haiku (ОБЯЗАТЕЛЬНО дешёвая)
Запуск: По расписанию или команде
Telegram: @aiproektor_bot → оператору


ВАЖНО: МОДЕЛИ

┌─────────────────────────────────────────────────────────┐
│  Monitor ВСЕГДА использует HAIKU                        │
│                                                         │
│  Haiku:  проверки, сбор данных, простые алерты         │
│  Sonnet: анализ сложных логов (редко, по эскалации)    │
│  Opus:   только критические инциденты                   │
└─────────────────────────────────────────────────────────┘

При запуске через Task tool:

Task(subagent_type="Explore", model="haiku", prompt="проверить диск...")

РОЛЬ

Monitor следит за здоровьем системы:
- Инфраструктура (диск, память, CPU, сервисы)
- Платформа (очереди, сессии, логи)
- Делегирование (успешность моделей, эскалации)


ЗАПУСК

Команды

# Полная проверка
python3 system/monitor/run.py

# Быстрая (только critical)
python3 system/monitor/run.py --quick

# Отчёт в Markdown
python3 system/monitor/run.py --report

# JSON вывод
python3 system/monitor/run.py --json

Cron (рекомендуется)

# /etc/cron.d/claude-monitor

# Быстрая проверка каждые 30 минут
*/30 * * * * root cd /opt/claude-workspace && python3 system/monitor/run.py --quick

# Полная проверка каждые 6 часов
0 */6 * * * root cd /opt/claude-workspace && python3 system/monitor/run.py

# Ежедневный отчёт в 8:00
0 8 * * * root cd /opt/claude-workspace && python3 system/monitor/run.py --report > .monitor/reports/$(date +\%Y-\%m-\%d).md

СТРУКТУРА

system/monitor/
├── CLAUDE.md              ← Этот файл
├── run.py                 ← Точка входа
├── config.yaml            ← Настройки и пороги
│
├── checks/                ← Проверки
│   ├── infra.py           ←   Сервер
│   ├── platform.py        ←   Платформа
│   └── delegation.py      ←   Делегирование
│
├── alerts/                ← Уведомления
│   ├── telegram.py        ←   Telegram
│   └── file.py            ←   Файл (fallback)
│
├── tickets/               ← Тикеты
│   └── creator.py         ←   Создание тикетов
│
└── output/                ← Результаты
    └── latest.json        ←   Последний запуск

ПРОВЕРКИ

Infra (сервер)

Проверка Что смотрит
disk Использование диска (%)
memory Использование RAM (%)
cpu Load average
services Статус systemd сервисов
docker Здоровье контейнеров

Platform (платформа)

Проверка Что смотрит
queues Застрявшие задачи (>48ч)
sessions Старые сессии
context Актуальность PROTOCOL.md
logs Ошибки в логах

Delegation (делегирование)

Проверка Что смотрит
success_rate Успешность по моделям
escalations Количество эскалаций
costs Расход токенов

ПОРОГИ

Настраиваются в config.yaml:

infra:
  disk:
    warning: 80    # %
    critical: 90   # %
  memory:
    warning: 80
    critical: 90

ВЫХОДЫ

1. Алерты оператору

2. Тикеты Архитектору

Создаются в .queue/inbox/:

id: monitor-20251221-180000
type: ticket
created_by: monitor
importance: high  # или medium
title: "disk: 92%"
source: check_disk

3. Результаты


ЭВОЛЮЦИЯ

Добавить проверку

  1. Открыть checks/infra.py (или другой домен)
  2. Добавить функцию check_*:
def check_something(config: Dict) -> Dict[str, Any]:
    # ... логика
    return {
        "name": "something",
        "value": 42,
        "unit": " items",
        "status": "ok",  # или warning/critical
        "recommendation": "..." if status != "ok" else None
    }
  1. Добавить в run_checks() список

Новый алерт-канал

  1. Создать alerts/slack.py (или другой)
  2. Импортировать в run.py
  3. Добавить в process_findings()

TELEGRAM

Monitor использует @aiproektor_bot для алертов.

Конфиг: system/config/telegram.yaml

bots:
  proektor:                    # ← Monitor использует этого бота
    token: "..."
    username: "aiproektor_bot"

chats:
  operator: 1318367261         # ← Куда шлёт алерты

Коннектор: library/connectors/api/telegram/


СВЯЗИ


Версия: 1.0.0