Как реализовать мониторинг сервиса (Prometheus, Grafana, Alertmanager)?

Prometheus собирает и хранит метрики, Grafana визуализирует их на дашбордах, а Alertmanager группирует, маршрутизирует, подавляет и отправляет алерты в каналы уведомлений. Мониторинг должен покрывать инфраструктуру, приложение, зависимости и пользовательские SLI, а не только доступность сервера.
Подробный ответ

Роли компонентов

  • Prometheus периодически считывает метрики с targets, хранит time series и вычисляет alert rules;

  • Grafana подключается к Prometheus как к источнику данных и отображает дашборды;

  • Alertmanager получает alerts от Prometheus, выполняет grouping, deduplication, silencing и отправляет уведомления в Slack, email, PagerDuty и другие каналы;

  • node_exporter обычно отдаёт host-level метрики CPU, памяти, дисков и сети.

Что измерять

Для API полезно начинать с RED-подхода: rate запросов, errors и duration. Для инфраструктуры применяют USE-подход: utilization, saturation и errors. Также нужны метрики базы данных, очередей, кэша, внешних API и бизнес-метрики.

Пример Prometheus scrape-конфигурации

global:
  scrape_interval: 15s

scrape_configs:
  - job_name: node
    static_configs:
      - targets:
          - node-1.example.com:9100
          - node-2.example.com:9100

  - job_name: api
    metrics_path: /metrics
    static_configs:
      - targets:
          - api-1.example.com:8000
          - api-2.example.com:8000

Пример alert rule

groups:
  - name: api-alerts
    rules:
      - alert: ApiHighErrorRate
        expr: sum(rate(http_requests_total{status=~"5.."}[5m])) / sum(rate(http_requests_total[5m])) > 0.05
        for: 10m
        labels:
          severity: critical
        annotations:
          summary: High API error rate
          description: More than 5% of requests return 5xx for 10 minutes.

Как проектировать алерты

Алерт должен быть actionable: получатель должен понимать, что произошло, на какой сервис это влияет и что делать дальше. Нельзя алертить на каждую внутреннюю метрику без связи с пользовательским воздействием. Для каждого критичного алерта нужен runbook со ссылками на дашборд, логи и шаги диагностики.

Надёжность мониторинга

Сам monitoring stack тоже требует резервирования, резервных копий конфигурации, контроля retention и защиты доступа. Для критичной инфраструктуры Prometheus и Alertmanager разворачивают с высокой доступностью, а алерты проверяют тестовыми срабатываниями.

Как ответить на собеседовании

Я использую Prometheus для сбора метрик, Grafana для дашбордов и Alertmanager для маршрутизации уведомлений. Слежу за RED-метриками API, USE-метриками инфраструктуры, состоянием зависимостей и бизнес-показателями. Алерты делаю actionable, с порогом, временем подтверждения и runbook, чтобы не создавать alert fatigue.

Оцени свой прогресс

Честно оцени своё понимание этого вопроса, чтобы мы могли построить твой учебный трек максимально эффективно.
Читать в блоге