Ответ
В DevOps я настраиваю мониторинг на основе четырех золотых сигналов и бизнес-метрик, используя стэк Prometheus/Grafana + Alertmanager.
Технические метрики (Four Golden Signals):
- Задержка (Latency): Время обработки запроса.
http_request_duration_seconds(Prometheus) илиp99в распределенных трейсах (Jaeger).
- Трафик (Traffic): Нагрузка на сервис.
- Запросы в секунду (RPS/QPS):
rate(http_requests_total[5m]) - Пропускная способность сети.
- Запросы в секунду (RPS/QPS):
- Ошибки (Errors): Частота неудачных запросов.
- Rate ошибок 5xx:
sum(rate(http_requests_total{status=~"5.."}[5m])) / sum(rate(http_requests_total[5m])) - Ошибки 4xx (часто проблема клиента).
- Rate ошибок 5xx:
- Насыщенность (Saturation): Загрузка ресурсов.
- CPU usage:
rate(node_cpu_seconds_total{mode="idle"}[5m]) - Memory usage:
node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes - Дисковое I/O, сетевые интерфейсы.
- CPU usage:
Специфичные для веб-метрики:
- TTFB (Time To First Byte): Ключевая метрика для пользовательского восприятия.
- Core Web Vitals (LCP, FID, CLS): Мониторинг через Google PageSpeed Insights или Real User Monitoring (RUM).
- Аптайм (Uptime):
avg_over_time(up{job="my-service"}[1h])
Бизнес-метрики (пример):
- Conversion Rate (часто вычисляется в отдельной аналитической системе).
- Активные пользователи в секунду.
Пример алерта в Prometheus на высокую частоту ошибок:
- alert: HighErrorRate
expr: sum(rate(http_requests_total{status=~"5.."}[5m])) / sum(rate(http_requests_total[5m])) > 0.05
for: 2m
labels:
severity: critical
annotations:
summary: "Высокий процент ошибок 5xx для {{ $labels.job }}"
Главное — не просто собирать метрики, а настраивать осмысленные алерты по ним и дашборды для быстрой диагностики.