Код-ревью Middle Алертинг и усталость от алертов обновлено

Код-ревью: правила алертов

Вопрос

Команда добавила правила алертов для API. Найдите проблемы.

groups:
  - name: api
    rules:
      - alert: HighCPU
        expr: node_cpu_usage > 0.8
        labels:
          severity: page
      - alert: ApiErrors
        expr: rate(http_requests_total{status="500"}[1m]) > 0
        labels:
          severity: page
          value: "{{ $value }}"
      - alert: ApiLatency
        expr: avg(http_request_duration_seconds_sum / http_request_duration_seconds_count) > 0.5
        for: 2h
        labels:
          severity: page
        annotations:
          summary: "Latency"

Коротко

Хорошие правила будят по симптомам, считают доли и перцентили через rate, имеют разумный for и понятные аннотации с раннбуком. Значения выводятся в аннотации через шаблоны, а метки остаются стабильными: severity, team, service.

Что должен найти ревьюер

  1. Ошибкастрока 4
    Алерт на CPU с severity page будит людей по причине, а не по симптому. Перевести в дашборд или ticket, а будить по ошибкам и задержке.
  2. Ошибкастрока 5
    Нет for: алерт сработает на первом же всплеске и будет мигать.
  3. Ошибкастрока 9
    Любая одна ошибка 500 будит дежурного: порог > 0 вместо доли ошибок. Только статус 500, а 502 и 503 не учтены (status=~"5.."). Окно 1 минута слишком короткое и шумное.
  4. Ошибкастрока 12
    Значение в метке: метки входят в идентичность алерта, и каждый новый $value порождает новый алерт. Значения кладут в аннотации.
  5. Ошибкастрока 14
    Среднее по счётчикам без rate: это среднее с момента старта процесса, оно почти не меняется. Нужны перцентили из гистограммы через rate.
  6. Ошибкастрока 15
    for: 2h для задержки с severity page: дежурный узнает о проблеме через два часа после пользователей.
  7. Стильстрока 19
    Аннотация из одного слова, нет описания, масштаба и runbook_url: дежурный не поймёт, что делать.

Разбор

Хорошие правила будят по симптомам, считают доли и перцентили через rate, имеют разумный for и понятные аннотации с раннбуком. Значения выводятся в аннотации через шаблоны, а метки остаются стабильными: severity, team, service.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.