Как понять, что с микросервисами все хорошо

«Как понять, что с микросервисами все хорошо» — вопрос из категории Мониторинг и логирование, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В моей практике состояние микросервисной архитектуры оценивается по четырем ключевым золотым сигналам мониторинга, которые мы отслеживаем в реальном времени через Prometheus и Grafana.

1. Задержка (Latency) Время ответа сервиса должно оставаться в пределах SLA. Я отслеживаю перцентили (p50, p95, p99). Например, для HTTP-сервиса:

# p95 latency за 5 минут
histogram_quantile(0.95, rate(http_request_duration_seconds_bucket[5m]))

2. Трафик (Traffic) Объем запросов, который обрабатывает сервис. Резкие изменения могут указывать на проблемы:

rate(http_requests_total[5m])

3. Ошибки (Errors) Доля ошибочных ответов должна быть минимальной. Мы настраиваем алерты при превышении порога в 1%:

# Alert при >1% ошибок 5xx
rate(http_requests_total{status=~"5.."}[5m]) 
/ 
rate(http_requests_total[5m]) > 0.01

4. Насыщенность (Saturation) Насколько "наполнены" ресурсы сервиса (CPU, память, дисковое IO, сеть). Для контейнеров в Kubernetes:

# Использование памяти контейнером
container_memory_working_set_bytes{pod=~"my-service-.*"}
# Лимит памяти
container_spec_memory_limit_bytes{pod=~"my-service-.*"}

Дополнительные проверки:

  • Health checks должны возвращать 200 OK (kubectl get endpoints).
  • Логи без критических исключений (отслеживаем через ELK/Loki).
  • Зависимости (базы данных, очереди) доступны и отвечают.
  • Балансировка трафика равномерна между репликами.
  • Автоскейлинг HPA корректно реагирует на нагрузку.

На дашборде в Grafana у меня сводка по всем этим метрикам, что позволяет за 30 секунд оценить общее состояние системы.