Наблюдаемость агентов и регламент сбоя¶
Методология говорит, что нужно «видеть деградацию за недели» (раздел 9). Когда часть работы PO делают агенты и сервисы, то же самое нужно про них самих: «увядший» сервис — тот, у которого нет пульса.
Где реализовано
poh-observability (OpenObserve, Grafana, Bugsink, OpenTelemetry), hermes-home-server (защита и алертинг сервера), регламент сбоя в poh-widget-jira (AGENTS.md, docs/RUNBOOK.md). Зрелость: светофор, алерты и ошибки — в эксплуатации.
Светофор¶
Один экран отвечает: всё ли работает, а если нет — что и с какого момента.
- Сбор: коллектор OpenTelemetry (хост, журнал, веб-сервер, проверка доступности раз в минуту, пульсы
*.okсервисов); хранилище метрик; дашборды и алерты как файлы в репозитории, применение с откатом; алерты — бот в одну комнату. - Ошибки — отдельные сущности (Bugsink), а не строки в логе; стандартный клиент без текстов сообщений и без персональных данных.
- Расход токенов и квоты читаются из состояния профилей агентов.
- Правило покрытия: виджет без строки в реестре подсистем — «не наблюдается» на светофоре и алерт через 15 минут.
- Изменения конфигурации — только git → PR → слияние владельцем → применение. Агенты читают метрики и ошибки только на чтение.
Стартовые SLO¶
| Что | Цель |
|---|---|
| Сообщение корпоративного мессенджера → Element | p95 < 30 с (алерт: нет пульса 10 минут, потеря, p95 > 2 мин) |
| Виджеты | 99,5% за 7 дней, p95 < 1 с; алерт — три провала подряд |
| Сервер | RAM < 85%, диск < 80%, любой OOM |
| Перезапуски сервиса | ≥ 3 за 24 часа — красный |
| Пульс сервисов | ≤ 10 минут (лента ≤ 15) |
Критический алерт — сразу и затем «восстановлено (длилось N минут)»; предупреждения — сводкой раз в сутки. Хранение: метрики 7 дней поминутно и 90 дней почасово, безопасность 1 год, логи 30 дней, трейсы 14 дней. Значения — стартовые; пересмотр через две недели.
Регламент сбоя¶
Единый порядок реакции, чтобы не усугубить сбой:
- Масштаб снаружи за минуту: виджеты, мессенджер, ping, порты.
- Причина с доказательством до правок. Нет доказательства — так и писать: «не выяснено».
- Минимальная обратимая правка без остановки сервисов.
- Проверка глазами пользователя, а не «процесс жив».
- Исправить причину так, чтобы сбой не был тихим: тест; ошибка с причиной вместо пустого результата; строка в журнале при старте.
- Снять временную правку.
- Чужие изменения — через владельца или его сессию, не молча.
- Запись в журнал инцидентов.
Отдельные правила: перенос каталога — сначала юнит с явными путями и проверка строки старта, потом удаление старых путей; выкладка — сверка, что никто не правил те же файлы; боевая запись в Jira — на моке, вживую с согласия; тяжёлые сборки на сервере — только с ограничениями памяти и процессора. Диагностический признак: «ping есть, а все порты отказывают» — это бан адреса защитой от подбора, а не падение сервера.
Это дополняет роль хранителя в П9: регламент нужен и людям, и агентам, а каждый урок превращается в проверяемый тест.