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

Ops-борд: dev-stats-ingest-overview (здоровье ingestion)

Операционный борд здоровья batch-ingestion dev-stats (ADR-0057): лаг консюмеров, размер/латентность пакетной вставки, промахи обогащения dim_*, freshness фактов, ошибки. В отличие от продуктовой панели dev-stats-overview.md (бизнес-метрики застройщика) здесь — только эксплуатация пайплайна: раскладка «событие → факт → rollup». Grafana/OTel-борд (не ЛК).

Область Действия

ПолеЗначение
ИнструментGrafana/OTel (SRE/owning team), не ЛК застройщика
Источник данныхметрики/логи/трейсы DevStats.Background + ClickHouse pin_dev_stats (системные таблицы)
АудиторияPIN Analytics (dev-stats) / SRE
Primary SLOFreshness факта < 5 мин (событие → видимость в API); ingest-lag < 15 мин
Статусdraft

Панели

PanelМетрикаОриентир / Alert
ingest-lagdev_stats_ingest_lag_seconds (ViewedAt → IngestionTime) по консюмерамalert > 15 мин
batch-throughputdev_stats_*_ingested_total, dev_stats_ingest_batch_sizeпадение до 0 при живом трафике → alert
bulkcopy-latencyлатентность пакетной вставки (insert span)рост p95 → деградация freshness
dim-missdev_stats_dim_property_object_miss_total (late-dimension, обогащение)рост → нужен backfill dim_property_object
dim-parkedчисло спаркованных сообщений факта (deferred re-enrich, ожидают строки dim_property_object)устойчивый рост → gap измерения, скоро DLQ
funnel-lagлаг консюмеров этапов (favorites/selections/crm) по этапамнижние этапы отстают от Views
errors-dlqошибки вставки, poison/DLQ, retry-счётчикиalert на рост DLQ
dlq-depthглубина DLQ по консюмерам (poison + устойчивый late-dimension)alert на ненулевую/растущую глубину
api-5xxdev_stats_*_requests_total{status=5xx}, latency histogram метрикalert на 5xx / нарушение SLO
freshnessmax(EventDate) rollup vs nowstaleness > 5 мин → расследование

Enrichment-miss vs label-miss (важно для триажа): промах dim_property_objectenrichment-miss: блокирует вставку факта (сообщение паркуется/уходит в DLQ), просмотр временно не виден в метриках — высокий приоритет. Промах верхних измерений (dim_developer/dim_project/dim_building/dim_layout_group/dim_layout) — label-miss: факт уже обогащён (иерархия денормализована), метрика корректна, деградирует только подпись до id — низкий приоритет, backfill без срочности.

Сигналы Logs И Traces

СигналQueryCorrelation
Logs (ingest)`service=dev-stats project=DevStats.Background outcome=~"flushedparked
Traces (ingest)span=~".*Consumer" (consume + dim-lookup + insert)correlationId, causationId
Logs (API 5xx)service=dev-stats area=developers outcome=error status>=500correlationId, tenantId

Alerts И Runbooks

AlertПорогRunbook
ingest-lag high> 15 минпроверить ClickHouse доступность; консюмер догонит по offset (вставка идемпотентна)
dim gap (enrichment)рост dim_property_object_miss/dim-parkedвысокий приоритет: запустить ../background/dimension-backfill.md для dim_property_object, затем replay DLQ факта — просмотры допишутся
dim gap (label)рост промаха верхних dim_*низкий приоритет: факты корректны (иерархия денормализована), деградирует подпись; backfill измерения без срочности
DLQ depthненулевая/растущая dlq-depthразобрать причину poison (контракт producer-а) vs устойчивый late-dimension; replay после фикса
Сбой пакетной вставкиошибки вставкивосстановить CH; батч ретраится с backoff, offset не commit-ится (at-least-once без потерь)
MV driftрасхождение rollup vs фактыпересобрать rollup (../background/facts-backfill.md § rebuild)

Обратные ссылки

Автоссылки: где используется этот документ.

Связанные Документы