awesome-everything EN
↑ Обратно к восхождению

Инженерная практика

On-call: alert-правила и математика budget

Суть Читай реальные alert-правила Prometheus, multi-burn-rate SLO-правило, расчёт error budget и Alertmanager-route, затем выбери senior-фикс или верно прочитай математику.
Высота — путь к senior
НольJuniorMiddleSenior
Ты на senior-высоте — в орбите
◷ 14 min

Alert-правила и математика error budget — это место, где философия on-call становится конфигом. Прочитай каждый сниппет, предскажи, что он сделает с пейджером, и выбери фикс, который senior делает первым.

Цель

Потренируй цикл, превращающий принцип в доверяемый пейджер: прочитай alert-правило, оцени, алертит ли оно на симптом или причину, посчитай burn-rate и budget и заметь шаг runbook, который реально снижает MTTR.

Сниппет 1 — cause-based alert-правило

groups:
- name: node
  rules:
  - alert: HighCPU
    expr: instance:node_cpu_utilisation:rate5m > 0.80
    for: 1m
    labels:
      severity: page
    annotations:
      summary: "CPU above 80% on {{ $labels.instance }}"
Викторина

Это правило будит с severity: page. Что в нём не так и каков фикс с наибольшим рычагом?

Сниппет 2 — multi-burn-rate SLO-правило

# SLO: 99.9% availability over 30 days. Budget = 0.1% of requests may fail.
- alert: ErrorBudgetFastBurn
  expr: |
    (
      job:slo_errors_per_request:ratio_rate1h{job="api"} > (14.4 * 0.001)
    and
      job:slo_errors_per_request:ratio_rate5m{job="api"} > (14.4 * 0.001)
    )
  for: 2m
  labels:
    severity: page
Викторина

Почему это правило требует превышения 14.4× budget И в окне 1ч, И в окне 5м, и что означает множитель 14.4×?

Сниппет 3 — арифметика error budget

SLO            = 99.95% successful requests over 30 days
Traffic        = 2,000 requests/second, steady
Budget         = (1 - 0.9995) = 0.05% of requests may fail
Incident       = a deploy bug returns 5xx on 2% of requests for 30 minutes
Question       = how much of the 30-day error budget did this one incident burn?
Викторина

Примерно какую долю месячного error budget съел этот 30-минутный инцидент с 2% ошибок?

Сниппет 4 — шаг runbook

## Runbook: api ErrorBudgetFastBurn
1. Ack the page; open the SLO dashboard (latency, errors, traffic, saturation).
2. Check Deploys panel: did a release land in the last 30 min? If yes, ROLL BACK first.
3. (If no recent deploy) check upstream-dependency error panel and DB saturation.
4. Mitigate to stop the burn; only then root-cause.
5. If error rate not falling within 15 min, escalate to secondary.
Викторина

Шаг 2 велит откатить недавний deploy до root-cause. Почему этот порядок верен для on-call responder в разгар инцидента?

Итог

On-call читается в конфиге и арифметике: сырой порог CPU с тегом severity: page — это cause-alert, плодящий fatigue; multi-window, multi-burn-rate-правило срабатывает на реальном быстром burn и игнорирует флапы; математика error budget превращает короткий инцидент в конкретный процент месячного допуска, так что ты соразмеряешь срочность реальному вреду; а хороший runbook кодирует mitigate-before-diagnose с escalation по таймеру, чтобы медианный responder восстанавливал быстро. Суди alert по actionability, делай математику budget и дай runbook нести мозг в 3 утра.

Продолжить восхождение ↑On-call: перестрой шумную rotation
хоткеи развернуть
поиск
K
пред. пьеса
k
след. пьеса
j
тиры
t
это меню
?
sources2
expand
  1. 01
  2. 02

Trademarks belong to their respective owners. Editorial reference only.