Наблюдаемость
Wide events
Section titled “Wide events”Каждая операция (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).
Метрики
Section titled “Метрики”/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 на нодах не нужен.
Уведомления
Section titled “Уведомления”Дискретные события, требующие действия админа, доставляет подписчик уведомлений (доменные события): ошибка продления сертификата, нода 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 мин |
Сломан учёт трафика |