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

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

Ответ

В моей практике основным стеком для мониторинга и алертинга был Prometheus + Alertmanager + Grafana.

1. Prometheus: Собирал метрики через pull-модель. Писал правила алертов на PromQL.

# prometheus.rules.yml
groups:
- name: node_alerts
  rules:
  - alert: InstanceDown
    expr: up{job="node-exporter"} == 0
    for: 2m
    labels:
      severity: critical
      team: devops
    annotations:
      summary: "Instance {{ $labels.instance }} is down"
      description: "{{ $labels.instance }} of job {{ $labels.job }} has been down for more than 2 minutes."

2. Alertmanager: Группировал, подавлял дубли (inhibition) и маршрутизировал алерты на каналы: Slack, Email, PagerDuty, Telegram (через webhook). Настраивал разные маршруты для severity: critical и warning.

3. Grafana: Использовал не только для дашбордов, но и для алертов на основе визуализаций, что удобно для сложных, не-PromQL сценариев.

Для логов: Использовал Loki (как легковесную альтернативу ELK) или Elastic Stack. Алёртинг по логам настраивал через Grafana Loki Ruler (аналогично Prometheus) или ElastAlert для Elasticsearch.

В облаке (AWS): Активно использовал CloudWatch Alarms для метрик AWS-сервисов (RDS, DynamoDB, Lambda) и отправлял их в SNS для интеграции с тем же Slack/Email.