Классический алерт на фиксированный порог обречён на компромисс: чувствительный порог шумит на каждом всплеске, спокойный — молчит при медленной деградации, которая за неделю выест весь бюджет ошибок. В обоих случаях связь оповещения с реальным ущербом для пользователя теряется.
Скорость прожигания (burn rate) меняет точку отсчёта: алерт привязан не к сырой доле ошибок, а к темпу расходования бюджета относительно вашего целевого уровня сервиса. Порог «burn rate > 14.4x» означает одно и то же — бюджет кончится слишком быстро — при цели и 99%, и 99.99%.
Многооконная многоскоростная схема из SRE Workbook требует одновременного превышения порога на длинном И коротком окне: длинное отвечает за смысл, короткое — за актуальность и быстрый сброс. В этой главе — пары порогов, разделение page и тикета, реализация на recording- и alerting-правилах Prometheus и частые ошибки.
Практическая польза главы
Практика проектирования
Переводите знания о Скорость прожигания бюджета как сигнал: многооконные многоскоростные алерты в конкретные эксплуатационные решения: правила оповещений, границы операционных инструкций и стратегии отката.
Качество решений
Оценивайте архитектуру через целевые уровни сервиса, бюджет ошибок, среднее время восстановления и устойчивость критического пути, а не только через функциональную полноту.
Аргументация на интервью
Структурируйте ответ вокруг жизненного цикла надёжности: сигнал деградации, реакция, локализация причины, восстановление и профилактика повторов.
Формулировка компромиссов
Явно фиксируйте компромиссы по Скорость прожигания бюджета как сигнал: многооконные многоскоростные алерты: скорость релизов, уровень автоматизации, стоимость наблюдаемости и операционная сложность.
Источник
Google SRE Workbook
Глава «Alerting on SLOs»: вывод многооконных многоскоростных алертов от наивного порога к рабочей схеме.
Соседняя глава SLI / SLO / SLA и бюджеты ошибок вводит и , а также . Эта глава — про то, как на их основе алертить: как привязывает оповещение к реальному ущербу для пользователя и почему один порог не справляется. Разберём наивный алерт по скорости прожигания, многооконную многоскоростную схему из , разделение page и тикета, реализацию на Prometheus и частые ошибки.
1. Чем плохи классические пороги
Классический мониторинг алертит по фиксированному порогу на сырой метрике, и в этом зашит конфликт: один и тот же порог не может быть одновременно чувствительным к резким всплескам и спокойным к мелкому фоновому шуму. Поставить его низко — дежурного будят на шум; поставить высоко — настоящая деградация проходит незамеченной. Куда ни сдвинь, теряешь одну из сторон.
Порог шумит
Алерт « > 5% за 5 минут» сработает на любой коротком всплеске, даже если за месяц бюджет ошибок почти не тронут. Дежурного будят на событие, которое само рассосалось.
Порог опаздывает
Сделаем порог консервативнее (например, «> 5% за час») — и он промолчит при медленной деградации в 0.2%, которая за неделю спокойно выест весь .
Связь с ущербом теряется
Фиксированный порог ничего не знает о вашем : 5% ошибок при цели 99% и при цели 99.99% — это совершенно разный масштаб ущерба для пользователя, но порог один и тот же.
Усталость от алертов
За шумными порогами приходит : команда привыкает отмахиваться от сигналов, и в этом фоне ложных срабатываний настоящий инцидент замечают слишком поздно.
2. Бюджет ошибок и скорость прожигания
Бюджет ошибок — это сколько ошибок допустимо за период: budget = 1 - SLO. При цели 99.9% бюджет равен 0.1% запросов за 30 дней. Скорость прожигания (burn rate) показывает, во сколько раз быстрее нормы расходуется этот бюджет:
burn rate = (наблюдаемая доля ошибок) / (бюджет ошибок)
- 1x — бюджет тратится ровно с допустимой скоростью и кончится точно к концу периода (для 30-дневного окна — через 30 дней).
- 14.4x определяется как темп, прожигающий 2% месячного бюджета за один час; отсюда весь 30-дневный бюджет уходит за 1ч / 2% = 50 часов, что относительно базовых 720 часов в месяце даёт 720 / 50 = 14.4x.
Главное свойство скорости прожигания: она нормирована на ваш . Порог «burn rate > 14.4x» означает одно и то же — «бюджет кончится слишком быстро» — независимо от того, цель у вас 99% или 99.99%.
Калькулятор скорости прожигания
Бюджет ошибок
0.100%
Скорость прожигания
10.0x
Бюджет кончится через
3.0 дн
При этой скорости сработал бы ярус: Средний page (6x / 6 часов). Сравнение порогов ниже — для целевого уровня 99.9% за 30 дней. Это упрощение: в реальной схеме page-ярус срабатывает только при одновременном превышении на длинном И коротком окне — калькулятор показывает лишь, в какой ярус по скорости попадает текущее значение.
3. Простой алерт по скорости прожигания (burn rate) и его проблемы
Первый шаг лучше порога на сырой метрике: алерт «скорость прожигания за окно > X». Но у простого одно-оконного варианта остаются два дефекта, которые SRE Workbook разбирает явно.
Чувствительность против шума
Короткое окно (5 минут) реагирует быстро, но шумит: любой кратковременный сбой задирает скорость прожигания (burn rate) вверх. Длинное окно (несколько часов) спокойнее, но медленно стартует — реакция приходит с большой задержкой, и первые минуты инцидента уходят впустую.
Долгое время сброса (reset time)
Длинное окно «помнит» прошлое: даже после того как проблема устранена, усреднённая доля ошибок ещё долго держится выше порога, и алерт продолжает гореть. Дежурный видит сигнал об уже закрытом инциденте.
4. Multi-window multi-burn-rate
Решение из SRE Workbook: для каждого яруса требуем, чтобы порог был превышен одновременно на длинном И на коротком окне. Длинное окно отвечает за смысл («бюджет действительно прожигается с такой скоростью»), короткое — за актуальность («прожигание идёт прямо сейчас, а не закончилось час назад»). Короткое окно делают примерно в 12 раз короче длинного.
Короткое окно гасит алерт сразу, как только всплеск закончился (правая граница красной зоны), даже если длинное окно ещё «помнит» инцидент. Это резко сокращает время сброса.
Рекомендуемые пары порогов (SLO 99.9%, 30 дней)
| Скорость | Длинное окно | Короткое окно | Бюджет за окно | Severity |
|---|---|---|---|---|
| 14.4x | 1 час | 5 минут | 2% | page |
| 6x | 6 часов | 30 минут | 5% | page |
| 1x | 3 дня | 6 часов | 10% | ticket |
Источник параметров: Google SRE Workbook, гл. «Alerting on SLOs». «Бюджет за окно» — доля 30-дневного бюджета, которую успеет съесть прожигание к моменту срабатывания алерта.
5. Критичность (severity): page или тикет
Скорость прожигания напрямую задаёт и нужный отклик: чем быстрее уходит бюджет, тем меньше времени остаётся до его исчерпания — и тем срочнее реакция. Отсюда естественное разделение на два класса.
Быстрое прожигание → page
14.4x и 6x съедают заметную долю месячного бюджета (2% и 5%) за часы. Это : нужно будить дежурного немедленно.
Медленное прожигание → тикет
1x за 3 дня — это плавная деградация. Бюджет уходит, но не катастрофически быстро: достаточно тикета на разбор в рабочее время, без ночного звонка.
Удобный второй способ выбрать порог — через долю бюджета: «page, если этот инцидент при текущей скорости съест > 2% месячного бюджета». Это та же таблица, выраженная не в скорости, а в ущербе.
6. Реализация в Prometheus
Долю ошибок за каждое окно считаем заранее через — это и быстрее, и читабельнее. Затем сравнивает уже готовую метрику с порогом по логике «длинное И короткое».
Recording rules: доля ошибок за окна
# Recording rule: доля «плохих» событий за окно как single metric.
groups:
- name: slo:request_error_ratio
rules:
- record: job:slo_errors_per_request:ratio_rate5m
expr: |
sum(rate(http_requests_total{code=~"5.."}[5m]))
/ sum(rate(http_requests_total[5m]))
- record: job:slo_errors_per_request:ratio_rate1h
expr: |
sum(rate(http_requests_total{code=~"5.."}[1h]))
/ sum(rate(http_requests_total[1h]))Alerting rule: многооконный page
# Быстрый page: 14.4x за 1 час И за 5 минут одновременно.
# 0.001 = бюджет ошибок при SLO 99.9%; 14.4 * 0.001 = 0.0144.
groups:
- name: slo:burn_rate_alerts
rules:
- alert: ErrorBudgetBurnFast
expr: |
job:slo_errors_per_request:ratio_rate1h > (14.4 * 0.001)
and
job:slo_errors_per_request:ratio_rate5m > (14.4 * 0.001)
for: 2m
labels:
severity: page
annotations:
summary: "Бюджет ошибок прожигается со скоростью 14.4x"Числа в выражении: при SLO 99.9% бюджет ошибок равен 0.001, поэтому порог 14.4x — это 14.4 * 0.001 = 0.0144. Полную схему со всеми тремя ярусами строят по той же модели, меняя пары окон и множители из таблицы выше.
7. Компромиссы: на каких осях выбирать окна
SRE Workbook предлагает оценивать любую схему алертинга по четырём осям. Выбор длины окон и порогов — это всегда баланс между ними.
Точность (precision)
Какая доля сработавших алертов отражает реальную проблему. Второе короткое окно нужно именно ради : оно отсекает срабатывания на уже закончившемся всплеске.
Полнота (recall)
Какую долю настоящих прожиганий мы вообще ловим. Медленное окно повышает : оно замечает плавные деградации, которые быстрый порог пропускает.
Время обнаружения
Насколько быстро алерт сработает после начала проблемы. Чем выше порог скорости прожигания и короче окно, тем быстрее реакция — но тем выше шум.
Время сброса (reset time)
Как долго алерт продолжает гореть после того, как проблема устранена. Длинное окно само по себе долго «остывает»; короткое окно гасит алерт почти сразу.
8. Частые ошибки
Одно окно вместо пары. Только длинное окно — медленный сброс и поздняя реакция; только короткое — шум на всплесках. Пара длинное-И-короткое решает обе проблемы сразу.
Алерты на причины вместо симптомов. Будить дежурного на «CPU > 90%» или «очередь растёт» — значит ловить то, что может вообще не вредить пользователю. Алертить нужно на , то есть на симптомы.
Слать на всё подряд. Медленное прожигание (1x) — это тикет на разбор в рабочее время, а не повод будить человека ночью.
Жёсткие пороги на сырую долю ошибок без привязки к . Один и тот же «5% за 5 минут» бессмысленно переносить между сервисами с разными целями.
Рекомендации
Заведите 2-3 яруса: быстрый (14.4x / 1 час) и средний (6x / 6 часов) как , медленный (1x / 3 дня) как тикет.
Делайте короткое окно примерно 1/12 от длинного — так советует Workbook. Оно работает условием «И» и отвечает за на затухших всплесках.
Считайте долю ошибок через , а сравнивайте уже готовую метрику с порогом. Так выражения остаются читаемыми и быстрыми.
Алертите на симптомы пользовательских путей, а не на инфраструктурные причины. Причины полезны для дашбордов и разбора, но не для .
Источники и материалы
Карта источников: SRE Workbook держит multiwindow, multi-burn-rate параметры и критерии page/ticket; SRE Book — базу SLO/error budget; Prometheus docs — recording и alerting rules. Числа 14.4x/6x/1x привязаны к workbook-модели 99.9% за 30 дней; для другого SLO, окна бюджета или on-call политики их надо пересчитывать.
Связанные главы
- SLI / SLO / SLA и бюджеты ошибок - Соседняя глава: вводит показатели и целевые уровни сервиса, бюджет ошибок и базовую скорость его расходования — фундамент, на котором стоит весь алертинг этой главы.
- Observability & Monitoring Design - Проектирование метрик, логов и трассировки, на которых строятся качественные показатели уровня сервиса и сигналы для алертов по скорости расходования бюджета ошибок (burn rate).
- Архитектура Prometheus - Как устроены сбор метрик, recording- и alerting-правила и Alertmanager — движок, который реально вычисляет многооконные алерты по скорости расходования бюджета ошибок (burn rate).
- Дисциплина управления инцидентами - Что происходит после срабатывания page: маршрутизация, роли, разбор. Завершает петлю «алерт по бюджету → реакция → выводы».
