food-market/deploy/grafana/dashboards/README.md
nns cf760fab10
Some checks are pending
Auto-tag / Create date-tag (push) Waiting to run
CI / Backend (.NET 8) (push) Waiting to run
CI / Web (React + Vite) (push) Waiting to run
CI / POS (WPF, Windows) (push) Waiting to run
feat(s26): flaky-test detection + observability dashboards (8/8 ✓ 10/10 cert)
После 24 спринтов regress-suite разросся; нестабильность блокирует
доверие. Этот спринт: ловит flaky тесты, добавляет observability
(Grafana + Prometheus alerts + RUNBOOK), сертифицирует 10× cert-прогон.

1. tests/regression/find-flaky.sh — 10× прогон + JSON-агрегатор →
   docs/flaky-tests.md (per-test pass/fail sequence + reproduce).
2. OrgFactory.signupWithRetry теперь honors Retry-After header
   (api-client.ts:ApiError.retryAfterSec). Stage rate-limit поднят:
   RATE_SIGNUP_HOUR=5000, RATE_PER_IP_MIN=5000 (~/food-market-stage/deploy/.env).
3. fullyParallel=true + workers=4 = тесты идут в недетерминированном
   порядке; isolation работает (OrgFactory per-test).
4. workers=4 даёт **2.4× ускорение** (66.6s → 27.7s). Worker-scoped
   фикстура lib/worker-org.ts добавлена как opt-in.
5. deploy/grafana/dashboards/quality-watchdog.json (10 панелей:
   smoke success ratio 7d, incidents, multi-tenant violations,
   current emoji, p95 by endpoint, step failures, RPS, DB p95,
   docs posted, disk free) + dashboards/README.md.
   quality-watchdog.sh пишет Prometheus textfile экспорт в
   ~/.fm-watchdog/textfile/quality_watchdog.prom для node_exporter.
6. deploy/prometheus/alerts.yml — 10 правил, 4 группы (uptime,
   errors, database, quality-watchdog). MultiTenantViolation = P0.
   deploy/prometheus/prometheus.yml — reference config.
7. docs/RUNBOOK.md +178 строк: action per alert (api-down,
   rps-drop, http-errors-spike/growing, doc-posting-errors,
   db-p95-high, disk-free-low, watchdog-red, multi-tenant-violation,
   watchdog-incident). Junior-friendly с конкретными командами.

**Cert-прогон (10× workers=4):** 420/420 passed, 0 flaky, avg 30.1s/run,
total 300.6s (< 5min budget).

Изменения вне репо:
- ~/food-market-stage/deploy/.env — RATE_* limits bumped.
- ~/quality-watchdog.sh — добавлен .prom textfile экспорт.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-08 14:44:19 +05:00

1.6 KiB
Raw Blame History

Grafana dashboards

Дашборды для food-market — импортируются в Grafana через Settings → Data sources → Add Prometheus + Dashboards → Import → Upload JSON.

Список

Файл UID Назначение
food-market.json fm-baseline Sprint 13 baseline: HTTP, EF Core, бизнес-метрики
quality-watchdog.json fm-quality-watchdog Sprint 26: smoke success / p95 latency / multi-tenant violations / incidents + базовые prom-метрики

Зависимости

  1. Prometheus scrap'ит /metrics API'я (см. deploy/prometheus/prometheus.yml).
  2. node_exporter на машине, где живёт ~/quality-watchdog.sh, с флагом --collector.textfile.directory=$HOME/.fm-watchdog/textfile. Watchdog туда пишет quality_watchdog.prom после каждого прогона.
  3. Alertmanager для alert'ов из deploy/prometheus/alerts.yml — см. docs/RUNBOOK.md для action'ов.

Использование

# Local stack для теста дашбордов:
cd deploy
docker run -d -p 3000:3000 grafana/grafana
docker run -d -p 9090:9090 \
  -v $PWD/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml \
  -v $PWD/prometheus/alerts.yml:/etc/prometheus/alerts.yml \
  prom/prometheus
# Grafana: admin/admin → Add Prometheus DS → http://host.docker.internal:9090
# Import → upload grafana/dashboards/quality-watchdog.json

${DS_PROMETHEUS} template variable указывает на выбранный DS — Grafana подставит ваш Prometheus при импорте.