SLI (Service Level Indicator)¶
SLI (Service Level Indicator) - это реальность, конкретные числовые значения, полученные в результате измерений тех же показателей, которые мы обещали в SLO (например, процент 5xx-ошибок или latency p99). Если SLI (реальные измерения) выходит за рамки SLO (границы, которые мы себе наметили) - пора бить тревогу и разбираться.
Общая формула: SLI = количество хороших событий / количество валидных событий * 100%
Какие бывают SLI¶
Time based SLI¶
Этот индикатор основывается на временнЫх характеристиках работы сервиса: насколько быстро сервис обрабатывает запросы; насколько быстро выполняет задачи; сколько времени занимает выполнение операции и т.п. Помогает понимать производительность, обнаруживать проблемы (например, резкий рост задержки. Time-based SLI это "пульс" сервиса. Он показывает, насколько система отзывчива, и помогает принимать решения на основе данных, а не догадок.
Примеры time-based SLI:¶
- Latency;
- Время загрузки страницы;
- Время обработки транзакции;
- и т.п.
Events based SLI¶
Этот индикатор основывается на количественных характеристиках сервиса: количество или качество ("хорошие" / "плохие") событий ("Событие" - это любое действие или операция) в системе - "что" происходит, а не "как быстро" происходит (в отличие от time based SLI). Помогает понять, насколько успешно сервис выполняет свои основные функции с точки зрения пользователей, выловить паттерны сбоев. Events based SLI превращают абстрактные "проблемы" в конкретные цифры. Они помогают понять, какие части системы чаще всего подводят пользователей, и направить ресурсы на их исправление.
Примеры events-based SLI:¶
- % успешных запросов;
- % успешных загрузок файлов;
- и т.п.
Типы events based SLI:¶
- Success Rate (успешность) - доля событий, завершившихся без ошибок. Пример: 99,9% HTTP-запросов возвращают статус 20x
- Error Rate (частота ошибок) - доля событий, завершившихся с ошибкой. Пример: ≤ 0,1% запросов к API возвращают HTTP-статус 50х
- Throughput (пропускная способность) - количество событий за единицу времени. Пример: 10000 транзакций/час (SLO: ≥ 8000 транзакций/час).
ВременнОе окно¶
SLO и SLI можно подсчитывать за разные периоды. Можно использовать календарное окно ("январь") или плавающее окно ("две недели").
Плюс календарного окна: легче планировать задачи и управлять временем - "за этот месяц я достиг SLO, все хорошо", или "SLO не достиг, нужно переделать архитектуру/переписать фичу/исправить вон ту багу".
Плюс плавающего окна: ближе к пользователям и учитывает выходные, праздники и тп.
Короткие периоды хороши для быстрого понимания ситуации. Если не достигнут SLO за прошлую неделю, останавливаешь выкатку новых фич на прод (новая фича = падению прода :)) и приоритизируешь исправление багов на следующую и исправляешь ситуацию.
Более долгие периоды хороши для стратегического планирования. Если у тебя три крупных проекта, оценка показателей за квартал/полгода позволят правильно расставить приоритеты.
Google рекомендует начинать с четырехнедельного плавающего окна.
Как замеряют SLI¶
Есть несколько способов. Есть правило - чем ближе к пользователю, тем лучше. Нужно понимать, что измерение из внутренней сети облачного провайдера и измерение из офиса реального пользователя дадут разный результат!!!