Что такое мониторинг ошибок (Error Monitoring)?

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

Ответ

Мониторинг ошибок — это практика непрерывного отслеживания приложений и инфраструктуры с целью обнаружения, агрегации, анализа и оповещения о сбоях (exceptions, errors, crashes). В отличие от метрик (CPU, память) или логов, он фокусируется на пользовательском опыте и функциональных сбоях, позволяя быстро находить root cause.

Чем отличается от логирования и метрик?

  • Логи: Неструктурированный/полуструктурированный поток событий. Требуют парсинга и агрегации для поиска ошибок.
  • Метрики (Prometheus): Числовые данные о работе системы (запросов в секунду, latency). Показывают что система замедлилась, но не всегда почему.
  • Мониторинг ошибок (Sentry, Datadog APM): Контекстуализированные данные об отдельных сбоях: стектрейс, состояние окружения, пользователь, предшествующие события. Показывает почему упал конкретный запрос.

Типичный стек для мониторинга ошибок в DevOps:

  1. Инструмент для приложений: Sentry, Rollbar, Elastic APM. Интегрируется в код.
  2. Инструмент для инфраструктуры и сетевых ошибок: Prometheus + Alertmanager (отслеживает метрики типа rate(http_requests_total{status=~"5xx"}[5m])), специализированные агенты для мониторинга сетевых устройств.
  3. Логирование как дополнение: ELK Stack или Loki для глубокого анализа контекста вокруг ошибки.

Пример настройки оповещения в Prometheus для мониторинга ошибок 5xx на ingress-контроллере Nginx в Kubernetes:

# prometheus-rules.yaml
apiVersion: monitoring.coreos.com/v1
kind: PrometheusRule
metadata:
  name: app-error-rules
spec:
  groups:
  - name: http-errors
    rules:
    - alert: High5xxErrorRate
      expr: rate(nginx_ingress_controller_requests{status=~"5.."}[5m]) > 0.05
      for: 2m
      labels:
        severity: critical
        tier: frontend
      annotations:
        summary: "High 5xx error rate on {{ $labels.ingress }}"
        description: "5xx error rate is {{ $value }} per second for ingress {{ $labels.ingress }}. This affects service {{ $labels.service }}."
        runbook: "https://wiki.internal/runbooks/5xx-errors"

Ключевые DevOps-метрики в мониторинге ошибок:

  • Error Rate/SLO: Процент запросов, завершившихся ошибкой, относительно общего числа. Цель — держать ниже целевого значения (например, < 0.1%).
  • MTTR (Mean Time To Resolution): Среднее время от обнаружения ошибки до ее исправления. Снижается за счет качественных алертов и runbook'ов.
  • Уникальные ошибки за период: Помогает оценивать стабильность релиза.

Итог: Мониторинг ошибок — это не просто "получить стектрейс". Это процесс, который связывает сбой в коде с бизнес-метриками (потерянные транзакции, недовольные пользователи) и позволяет командам DevOps и разработки проактивно улучшать надежность системы.