Skip to content

Наблюдаемость

Каждая операция (HTTP-запрос, обработка сообщения агента, фоновая задача) порождает одно структурированное событие со всем контекстом: trace id, субъект, маршрут, статус, latency, бизнес-атрибуты (node id, subscription id, revision), ошибка с типом. Одно событие вместо десятка разрозненных строк лога — расследование не требует ручной сборки контекста.

Транспорт — OpenTelemetry: спаны с атрибутами → collector → любой совместимый backend. В collector — tail sampling: 100% ошибок и медленных операций, доля обычных для фона. Решение о сохранении принимается после завершения trace — отбор по результату, а не по догадке в начале.

Соглашения:

  • Атрибуты — единый реестр констант в platform/telemetry; никаких ad-hoc строк в фичах.
  • Бизнес-события уровня «изменение состояния» дополнительно фиксируются в audit_log — это продуктовые данные с ретенцией, не телеметрия.
  • Логи как поток строк остаются только у агента и Xray на нодах (доступны через панель, gRPC API).

/metrics (Prometheus) на backend. Ключевые:

Метрика Тип Назначение
astral_nodes_connected gauge Открытые стримы агентов
astral_node_revision_lag gauge desired − applied по нодам; > 0 долго — алерт
astral_node_apply_errors_total counter Ошибки применения desired state
astral_usage_reports_total counter Принятые/отклонённые отчёты трафика
astral_subscriptions{status} gauge Срез по статусам
astral_certificate_expiry_seconds gauge До истечения, по сертификатам
astral_payment_events_total{status} counter
http_*, grpc_*, river_* Стандартные серверные метрики

Системные метрики нод (CPU, память, диск) приходят в StatusReport и экспортируются backend-ом как astral_node_system_*{node} — отдельный exporter на нодах не нужен.

Дискретные события, требующие действия админа, доставляет подписчик уведомлений (доменные события): ошибка продления сертификата, нода offline дольше порога, ошибка применения desired state, заявка на регистрацию, возврат платежа.

Каналы — конфигурация, не БД: email (SMTP панели) и опциональный webhook (POST JSON на настроенный URL — от Telegram-бота до PagerDuty, интеграция на стороне получателя). Дедупликация: повторное событие того же типа по той же сущности не отправляется чаще раза в N часов — флапающая нода не флудит почту.

Уведомления дополняют Prometheus-алерты, а не заменяют: алерты — про пороги и тренды при наличии мониторинга, уведомления — про события с адресатом и работают в инсталляции без Prometheus вообще.

Алерты (рекомендуемый базовый набор)

Section titled “Алерты (рекомендуемый базовый набор)”
Условие Смысл
astral_nodes_connected < число active-нод 5 мин Нода offline
astral_node_revision_lag > 0 10 мин Нода не может применить конфигурацию
astral_certificate_expiry_seconds < 14 дней Продление не работает
Нет usage_reports от online-ноды 10 мин Сломан учёт трафика