# SigNoz MVP: dashboards и alerts Документ фиксирует versioned-спецификацию первых панелей. Создавайте их через SigNoz Query Builder и экспортируйте полученный Dashboard V2 JSON обратно в репозиторий после проверки реальных имён attributes на production-like данных. Обязательные фильтры каждой панели: ```text service.namespace = han-chat deployment.environment = production-like ``` Добавьте переменные `deployment.environment`, `service.name` и `service.version`. Идентификаторы пользователей, запросов, SMS и сессий переменными dashboard не являются. Для Prometheus-scraped SMS/Keycloak metrics имя источника находится в bounded datapoint label `service_name`; для OTLP signals используется resource attribute `service.name`. ## Dashboard: HAN API RED 1. **Request rate** — rate/sum `han_http_requests_total`, group by `http.route`, `http.request.method`. 2. **Error rate** — доля `han_http_requests_total` с `http.response.status_class=5xx`. 3. **Latency p50/p95/p99** — `han_http_request_duration_seconds`, group by route template. 4. **Rate-limit decisions** — rate `han_rate_limit_decisions_total`, group by `scope`, `outcome`. 5. **Bootstrap outcomes** — rate `han_auth_bootstrap_total`, group by `outcome`. 6. **Slow/error traces** — link в Traces с `service.name=api-backend`. ## Dashboard: HAN SMS 1. **Send outcomes** — rate `sms_send_total`, group by `provider`, `send_status`. 2. **Provider p95 latency** — `sms_provider_request_duration_seconds`. 3. **Uncertain outcomes** — rate `sms_uncertain_total`. 4. **Callback result/lag** — `sms_callback_total`, `sms_callback_lag_seconds`. 5. **Oldest pending** — `sms_pending_oldest_age_seconds`. 6. **Journal rows/settings** — `sms_journal_rows`, `sms_settings_valid`. 7. **Worker traces** — `service.name=sms-worker`, span `sms.process`. ## Dashboard: Collector health Используйте autocomplete Metrics Explorer для фактических `otelcol_*` имён версии Collector `0.117.0`: 1. accepted и refused spans/metric points/log records; 2. exporter sent/failed; 3. sending queue capacity/size; 4. tail-sampling sampled/dropped/late spans; 5. process RSS/CPU; 6. Prometheus scrape failures для `sms-service`, `sms-worker`, `keycloak`; 7. отсутствие данных по каждому обязательному `service.name`. ## Первые alerts Alerts создаются после 24 часов baseline. Все правила получают owner, severity и ссылку на `SIGNOZ_RUNBOOK.md`. - **API 5xx:** доля 5xx > 5% в течение 5 минут. - **API latency:** p95 выше 750 ms 10 минут; до разделения route-классов это warning, не page. - **SMS uncertain:** рост `sms_uncertain_total` дольше 5 минут. - **SMS pending stale:** `sms_pending_oldest_age_seconds > 300` 5 минут. - **SMS settings invalid:** `sms_settings_valid < 1` 5 минут. - **Collector refused/dropped:** значение > 0 дольше 5 минут. - **Collector queue:** заполнение > 80% 10 минут. - **No telemetry:** обязательный production-like сервис отсутствует 10 минут при ожидаемом трафике. Не создавайте SLO по sampled traces. Availability/error budget рассчитываются по metrics. Multi-window burn alerts добавляются после двух недель baseline. ## Acceptance Dashboard считается введённым в эксплуатацию, когда: 1. панели показывают свежие данные после synthetic request; 2. фильтр release отделяет текущий rollout от предыдущего; 3. route содержит template, а не UUID/raw URI; 4. ни одна metric series не содержит user/session/request/trace identifiers; 5. alert проверен контролируемым synthetic failure; 6. экспортированный Dashboard V2 JSON сохранён рядом с этим документом.