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

Наблюдаемость

SLO-платформы и 90-дневный rollout

Суть Ручное написание MWMBR PromQL на каждый сервис ненадёжно — Sloth, Pyrra, OpenSLO, Nobl9 и Datadog SLOs генерируют его декларативно. Adoption — узкое место: структурированный 90-дневный rollout превращает SLO-арифметику в SLO-культуру.
Высота — путь к senior
НольJuniorMiddleSenior
Ты на middle-высоте — в небе
◷ 13 min

Команда шестой раз в этом месяце пишет один и тот же 14.4x burn-rate PromQL — другой сервис, та же математика, другая опечатка в строке 4. Recording rule был неправильным. Алерт не сработал во время инцидента. Никто не заметил до постмортема.

Почему ручное написание — ловушка

Канонический MWMBR-набор для одного SLO требует:

  • 6 recording rules (ratio_rate на каждое окно: 5м, 30м, 1ч, 6ч, 3д и вариант для медленного горения)
  • 3 alert rules (14.4x page, 6x page, 1x ticket), каждый с AND между двумя окнами
  • 2 dashboard-панели (burn rate во времени, остаток бюджета)

Ручное написание этого на 80 сервисов означает 480 recording rules и 240 alert-выражений. Любой из множителей 14.4 * 0.001 может быть неправильным (не та SLO-цель, не то окно). Ошибка тихая — recording rule вычисляет значение, алерт срабатывает или нет, и никто не знает, что математика была неправильной, пока реальный инцидент не перестаёт пейджить.

SLO-платформы существуют для этого: ты описываешь SLI и цель в YAML-декларации, платформа генерирует PromQL.

Основные платформы

ПлатформаТипВыходКлючевая черта
SlothOpen source, CLIPrometheus rules + Grafana dashboardsYAML → recording rules + MWMBR-алерты; GitOps-дружественный
PyrraOpen source, Kubernetes operatorPrometheusRule CRDsKubernetes-native; reconcile SLO-объектов в PrometheusRule-ресурсы
OpenSLOОткрытая спецификация (CNCF sandbox)Cross-tool YAML-определениеVendor-neutral спека; Nobl9 основал; поддержка в Grafana/Datadog/Honeycomb
Nobl9Коммерческий SaaSMulti-datasource SLOsПодключает Datadog, Prometheus, Dynatrace; cross-source SLOs; развивает OpenSLO
Datadog SLOsManaged (Datadog-native)Datadog monitors + dashboardsТесная интеграция с APM; burn-rate-алерты встроены; поддержка calendar и rolling window

Минимальная декларация Sloth:

version: "prometheus/v1"
service: checkout
slos:
  - name: availability
    description: "Checkout-запросы успешны"
    sli:
      events:
        error_query: sum(rate(http_requests_total{status=~"5..",job="checkout"}[{{.window}}]))
        total_query: sum(rate(http_requests_total{job="checkout"}[{{.window}}]))
    objective: 99.9
    alerting:
      name: CheckoutAvailability
      page_alert:
        labels:
          severity: page
      ticket_alert:
        labels:
          severity: ticket

Sloth читает {{.window}} как шаблонную переменную и выдаёт все шесть recording rules с правильными значениями окна. Burn rates (14.4x / 6x / 1x) и AND-логика между окнами инжектируются автоматически.

Почему это работает

OpenSLO — нарождающийся cross-tool стандарт: один и тот же YAML управляет конфигурациями Sloth, Nobl9 и Grafana SLO. Стандартизировав на OpenSLO, можно мигрировать с Prometheus-based-алертинга на Datadog без переписывания SLO-определений. Для команд на Prometheus-стеке Sloth или Pyrra — прагматичный выбор.

Паттерн 90-дневного SLO-rollout’а

SLO-adoption чаще проваливается на культурном уровне, а не техническом. Типовой паттерн:

Недели 1–2 — одна journey, одна команда: Выбери самый важный user journey (checkout, логин, API-эндпойнт, за который платят клиенты). Определи SLI на уровне API gateway. Поставь консервативную цель (начни с 99% даже если кажется, что можно 99.9% — быстро узнаешь baseline). Инструментируй счётчики, добавь Sloth-декларацию, убедись, что recording rules появились в Prometheus.

Недели 3–4 — верификация SLO и бюджета: Наблюдай SLO две недели. Baseline error rate такой, как ожидался? SLI коррелирует с реальными репортами пользователей? Скорректируй цель если базовый уровень значительно лучше (ужесточи) или хуже (слишком жёсткие SLO создают культуру постоянной заморозки — ослабь). Составь черновик error budget policy, но пока не подписывай.

Недели 5–8 — алертинг и подпись policy: Включи MWMBR-алерты. Добавь SLO-дашборд. Проведи fire drill: намеренно сломай сервис на 5 минут и убедись, что 14.4x-алерт срабатывает в течение нескольких минут, пейджит on-call, и гаснет в течение 5 минут после фикса. Подпиши error budget policy с director-level одобрением. Донеси policy до всех стейкхолдеров.

Недели 9–12 — rollout на 5–10 сервисов: Тиражируй паттерн на другие сервисы. Каждая команда использует один Sloth YAML-шаблон. Платформенная команда владеет генератором; продуктовые команды — своими SLO-целями. Проведи первый ежеквартальный SLO-пересмотр: какие SLO запускали алерты, которые имели значение; какие были шумом?

После 90 дней — проверка культуры: Опроси on-call-команды: реагируют ли они на SLO-алерты или игнорируют? Проверь: происходят ли на самом деле feature-заморозки при исчерпании бюджетов? Если нет — повтори коммуникацию policy. 90-дневная точка — когда нужно смотреть, покрывают ли SLO правильные journeys: пробелы на первом проходе обычны.

Почему это работает

Adoption — узкое место, не инструментарий. Команда с настроенным Sloth, но без подписанной error budget policy и ежеквартального review-ритуала — в том же состоянии, что команда с одним медленным-оконным алертом: числа есть, но культура на них не реагирует. 90-дневный rollout — разница между «у нас есть SLO» и «SLO управляет тем, как мы принимаем решения».

Расставь шаги по порядку

Упорядочи шаги 90-дневного SLO-adoption:

  1. 1 Выбери единственный высокоценный user journey; определи SLI на уровне API gateway
  2. 2 Поставь консервативную SLO-цель; инструментируй счётчики; проверь recording rules в Prometheus
  3. 3 Наблюдай baseline две недели; скорректируй цель под реальный пользовательский допуск
  4. 4 Включи MWMBR-алерты; проведи fire drill; подпиши error budget policy
  5. 5 Распространи на 5–10 сервисов используя тот же Sloth/Pyrra-шаблон
  6. 6 Проведи первый ежеквартальный SLO-пересмотр: какие алерты имели значение, какие были шумом?
Викторина

В чём главное преимущество использования Sloth или Pyrra вместо ручного написания PromQL для SLO-алертов?

Викторина

Команда настроила Sloth, запустила MWMBR-алерты и считает SLO-adoption завершённым. Какой критический шаг пропущен?

Вспомните перед уходом
  1. 01
    Что генерирует инструмент типа Sloth из единственной SLO YAML-декларации?
  2. 02
    Почему 90-дневный SLO-rollout начинается с одной journey при консервативной цели, а не сразу ставит 99.9% на все сервисы?
Итог

Ручное написание MWMBR PromQL на многих сервисах вносит тихие математические ошибки — неправильные длины окон, неправильные burn-множители, неправильные пороги. SLO-платформы (Sloth, Pyrra, OpenSLO, Nobl9, Datadog) решают это, генерируя recording rules, alert-выражения и дашборды из декларативного SLI-определения. OpenSLO — нарождающийся cross-tool стандарт. Технический setup — лёгкая часть: узкое место — adoption. 90-дневный rollout начинается с одного user journey при консервативной цели, наблюдает baseline две недели, проводит fire drill алерта, подписывает error budget policy, и только потом расширяется на сервисы. Без ежеквартального review-ритуала и подписанной policy SLO превращаются в числа на дашборде, на которые никто не реагирует.

Связанные уроки
Продолжить восхождение ↑SLO на малом трафике и математика burn rate из первых принципов
хоткеи развернуть
поиск
K
пред. пьеса
k
след. пьеса
j
тиры
t
это меню
?
sources4
expand
  1. 01
  2. 02
  3. 03
  4. 04

Trademarks belong to their respective owners. Editorial reference only.