Перейти к содержанию

·Observability

SLO вместо «всё зелёно»

Панель, на которой всё зелёное, не отвечает на вопрос, хорошо ли работает сервис. Цель по уровню обслуживания отвечает, потому что содержит число и срок.

Панель мониторинга, на которой все индикаторы зелёные, сообщает одно: ни один из порогов не превышен. Она не сообщает, хорошо ли работает сервис, потому что пороги обычно выставлены по принципу «чтобы не орало».

Цель по уровню обслуживания устроена иначе. Это утверждение вида «столько-то процентов запросов обслуживаются быстрее такого-то времени за такой-то период». В нём есть число, есть критерий и есть окно.

Что даёт формулировка с окном

Возможность потратить бюджет. Если цель — девяносто девять процентов за месяц, то один процент — это допустимая доля неудач, и она конечна.

Отсюда практический вопрос, которого нет у зелёных индикаторов: сколько бюджета осталось. Если к середине месяца израсходовано две трети, дальше выкатывать рискованно. Если израсходовано пять процентов, можно двигаться быстрее.

Это переводит разговор о надёжности из области ощущений в область расчёта. И, что важнее, даёт язык для спора о приоритетах: «мы не успеваем» против «у нас кончается бюджет ошибок» — второе проверяемо.

Почему пороги плохо работают

Порог — это точка, а деградация — процесс. Показатель, который полдня стоит на девяноста восьми процентах от порога, не даёт срабатывания и означает, что что-то уже не так.

К тому же порог настраивают по прошлому. Он отражает представление о норме на момент настройки, и через год норма другая, а порог тот же. Обычно его чуть подкручивают вверх после каждого ложного срабатывания — и в итоге он стоит там, где уже ничего не поймает.

Что нужно, чтобы SLO работал

Данные с процентилями, а не средние. Цель формулируется через долю запросов, значит нужно распределение.

Достаточная история. Окно у цели — обычно месяц или квартал; на данных за неделю такую цель не посчитать.

И критерий, отражающий пользователя. Цель по времени ответа сервера не имеет смысла, если страница потом три секунды собирается в браузере. Поэтому наблюдение за фронтендом — не дополнение к серверному, а условие того, что цель вообще про пользователя.

Что генерируется, а что нет

Части, относящиеся к наблюдаемости, целям уровня обслуживания и панелям, можно сгенерировать вместе с отчётом по кластеру. На выходе — обычные артефакты Prometheus, Grafana и Alertmanager, а не наш проприетарный формат.

Чего сгенерировать нельзя — самого значения цели. Девяносто девять процентов или девяносто девять и девять — это решение о том, сколько стоит надёжность, и принимает его тот, кто платит за инфраструктуру и отвечает перед пользователями.

Самая частая ошибка

Поставить цель выше, чем нужно. Каждая девятка после запятой дороже предыдущей примерно на порядок, и почти всегда обнаруживается, что пользователи не заметили бы разницы.

Вторая по частоте — поставить цель и ни разу к ней не вернуться. Цель, по которой не принимают решений о выкатах, — это тот же зелёный индикатор, только с более сложной формулой.