Перейти к содержимому

Модуль XXII — здоровье, SLA и аптайм

Модуль XXII отвечает на три вопроса об AI-компонентах estate (парка) — что здорово, что деградировало или упало, и что от чего зависит. Он ограничен надёжностью агентов и MCP-серверов, а не здоровьем хоста или инфраструктуры в целом. Эта страница — справочник о том, что измеряет модуль, что он материализует, и где его честные границы.

XXII — это потребитель ядра, а не зонд: открытие сокетов в инфраструктуру заказчика — это забота коннектора, а в запечатанном наборе наблюдений нет вида здоровья. Поэтому здоровье выводится из сигналов, которые модуль может доказать:

  • Живость (пассивная). Сессия или агент, обращающиеся к MCP-серверу — или агент, действующий — это свидетельство того, что субъект жив. Это обновляет маркер последнего появления субъекта и складывает ребро зависимости.
  • Результаты активных зондов. Внешний проверяющий здоровье или сам агент отправляет результат на эндпоинт отчёта по проверке — честный путь приёма для «проверок здоровья / OTEL-метрик».
  • Устаревание (staleness). Известный субъект, который перестаёт появляться в рамках ожидаемой каденции, сам является сигналом. Фоновая зачистка переводит его в degraded, затем down, и открывает инцидент. Зачистка только деградирует или помечает как упавший; восстановление приходит исключительно из реальной живости, так что свежесозданная проверка никогда не эмитит ложного восстановления.

Модулю принадлежат четыре сущности. Проверка здоровья — это объявленный оператором отслеживаемый субъект (агент или MCP-сервер) с ожидаемой каденцией и целевым SLA; она несёт текущее снимочное состояние субъекта — healthy, degraded, down или unknown. Событие здоровья — это журнал переходов, доступный только для добавления, из которого аптайм и SLA реконструируются — но никогда не хранятся как текущий счётчик. Инцидент здоровья — это жизненный цикл open→resolved периода деградации или падения, с обеспечением одного открытого инцидента на субъект. Зависимость здоровья — это автоматически обнаруженное ребро инициатор → цель — карта зависимостей, накапливаемая идемпотентно.

Здоровье материализуется только для объявленных проверок. Субъект, наблюдаемый живым, но с необъявленной проверкой, честно выводится на карте зависимостей как observedвиден живым, здоровье не измерено — состояние, отличное от healthy (объявленная проверка просигналила) и от unknown (назван, нет свидетельства живости). Продукт никогда не фабрикует состояние «измеренно-здоров», которое он не вычислял. XXII также зеркалирует текущее состояние субъекта в сущность ядра HealthStatus, когда субъект является id ядра, так что другие плоскости могут читать здоровье агента или MCP.

XXII потребляет edge.observed из шины для пассивной живости и карты зависимостей, плюс отчёты активных зондов, которые приходят на его API. Он производит, он не доставляет: сигналы down, degraded, recovered и нарушения SLA эмитятся как FindingReport с минимальными данными в канале finding.reported — общепродуктовый поток оповещений, который модуль XV (уведомления) маршрутизирует в Slack, PagerDuty или SIEM. XXII никогда не доставляет и никогда не подписывается на собственные находки.