Observability: логи, метрики, алерты

Observability: логи, метрики, алерты

Без observability вы узнаёте о проблеме от пользователя в Telegram. Минимум: JSON-логи, 5 golden metrics, алерт на 5xx и latency.

Observability: логи, метрики, алерты
Иллюстрация к материалу

Логи

  • Structured JSON: traceId, userId, route, duration
  • Не логировать PII и card data
  • Centralize: Loki/ELK/CloudWatch

Метрики

  • RED: rate, errors, duration per endpoint
  • Business: orders/min, payment success rate
  • Infra: CPU, memory, PG connections

Алерты

Alert on symptom (error rate), not cause (cpu 80%) alone. Runbooks в Notion.

Observability: логи, метрики, алерты
Схема и рабочий процесс

Чеклист

  • Dashboard per service
  • On-call rotation documented
  • Post-incident review template

Runbook на 1 страницу

Симптом → dashboard → likely cause → mitigation → escalate. Для 5xx spike: проверить deploy time, DB connections, external PSP timeout.

SLO для продукта

Задайте error budget: 99.9% availability = ~43 мин downtime в месяц. Алерт только если сжигаете budget быстрее плана — иначе on-call выгорает от шума.

Минимальный стек для MVP

JSON logs в stdout → Loki или CloudWatch. Prometheus node_exporter + postgres_exporter, Grafana dashboard «API RED». Алерт: error rate >1% 5m OR p95 latency >2s на /api/checkout.

Business metrics в том же Prometheus: `payment_success_total`, `orders_created`. On-call без runbook бесполезен — одна страница на каждый алерт с командами и эскалацией.

TraceId пробрасывайте из Caddy/Nginx в Nest через X-Request-Id — support находит логи пользователя за секунды, а не перебирает grep по времени вручную.

Observability за один день

  • Structured JSON logs с traceId
  • Dashboard: error rate и p95 latency top-5 routes
  • Один алерт на 5xx spike с ссылкой на runbook
  • Post-incident: допишите runbook, не только «починили»