Какой стек технологий вы используете для настройки мониторинга сервиса?

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

Ответ

Для комплексного мониторинга сервиса я предпочитаю использовать стек на основе Prometheus, так как он стал де-факто стандартом для динамических сред, таких как Kubernetes.

Основной стек для метрик и алертинга:

  1. Prometheus:
    • Собирает метрики по модели pull (или через pushgateway для кратковременных задач).
    • Использую Prometheus Operator в Kubernetes, который автоматически обнаруживает сервисы и Pod'ы через ServiceMonitors и PodMonitors.
      # Пример ServiceMonitor для приложения
      apiVersion: monitoring.coreos.com/v1
      kind: ServiceMonitor
      metadata:
      name: my-app-monitor
      spec:
      selector:
      matchLabels:
        app: my-app
      endpoints:
      - port: web
      path: /metrics
  2. Grafana:
    • Для визуализации. Создаю дашборды, которые показывают ключевые метрики: latency, error rate, traffic (принципы RED) и использование ресурсов (USE).
    • Дашборды хранятся как код (json-файлы) и разворачиваются через конфигурацию.
  3. Alertmanager:
    • Обрабатывает алерты от Prometheus, группирует их, подавляет дубли и маршрутизирует в нужные каналы (Slack, Email, PagerDuty).

Для логирования:

  • Loki: В последнее время выбираю его вместо ELK для логов, так как он легковеснее и лучше интегрируется с Grafana (единый интерфейс). Агент Promtail собирает логи с нод и отправляет в Loki.
  • ELK/EFK-стек (Elasticsearch, Fluentd/Fluent Bit, Kibana) — для случаев, когда нужен полнотекстовый поиск и сложный анализ логов.

Для трейсинга распределённых систем:

  • Jaeger или Grafana Tempo (если уже используется Grafana Cloud/Loki). Инструментирую приложения с помощью OpenTelemetry.

Дополнительные инструменты:

  • cAdvisor & node-exporter: Для сбора метрик по контейнерам и хостам.
  • Blackbox Exporter: Для мониторинга доступности endpoints (HTTP, TCP, ICMP).
  • В облачных средах также настраиваю интеграцию с нативными сервисами, например, AWS CloudWatch для метрик, которые сложно или неэффективно собирать Prometheus'ом (например, метрики по S3 или billing).

Цель — построить систему, которая не только показывает текущее состояние, но и помогает быстро локализовать причину инцидента, связав между собой метрики, логи и трейсы.