Linux Labs

Практики SRE: SLO, инциденты, отказоустойчивость / Ступень 1 из 8

SLI: доля хороших запросов

Не запущена Запускается обычно ~20 с
Выйти из урока

Шаг 2 из 6 · на машине · 6 мин

Хорошие и плохие ответы

Чтобы сравнить «сайт работает» с жалобами, нужен счёт: какая доля запросов обслужена нормально.

curl проверил один запрос — свой. Покупатели за те же часы отправили тысячи, и каждый из них nginx записал строкой в access.log (журнал доступа) с кодом ответа. О работе сервиса судят по всем этим запросам сразу.

Такой счёт называют SLI (Service Level Indicator, показатель уровня обслуживания) — доля хороших событий среди всех. У сайта событие — запрос, а SLI доступности — доля хороших ответов:

text
доступность = хорошие ответы / все ответы × 100 %

Хороший ответ или нет, решает класс кода — его первая цифра:

Класс Пример Для доступности
2xx 200 — ответ отдан хороший
3xx 304 — у браузера свежая копия хороший
4xx 404 — такого адреса нет хороший: ошибся клиент
5xx 500, 502, 503, 504 — сбой на сервере плохой

Ответы 404 в этом журнале — запросы к /favicon.ico и /wp-login.php, которых в магазине нет. Сайт ответил на них правильно. Плохой ответ — когда запрос нормальный, а сервис с ним не справился, то есть 5xx.

Код ответа — девятое поле строки, $9 в awk. Поле с цифрами awk сравнивает как число, поэтому плохие ответы отбирает условие $9 >= 500, а NR в конце — число всех строк:

bash
log=/var/log/nginx/access.log
sudo awk '$9 >= 500 {b++} END {printf "%.2f\n", 100*(NR-b)/NR}' "$log"
Проверь себя 1 вопрос

Что станет с доступностью всего журнала, если считать плохими ещё и ответы 404?

  • Доступность — доля хороших ответов: один плохой её не обнуляет. 404 — около 5 % строк, на столько она и упадёт.

  • Попадают: в выводе uniq -c в начале урока 404 — второй по частоте код после 200.

  • Знаменатель — все строки журнала, он не меняется. Меняется число хороших: 404 переходят в плохие.

404 — около 5 % строк журнала: если считать их плохими, доступность упадёт примерно с 97 до 92 %. Сайт ответил на них правильно — адресов /favicon.ico и /wp-login.php в магазине нет, — поэтому SLI доступности их хорошими и считает.

Главное в шаге

  • SLI — доля хороших событий среди всех; у сайта событие — запрос, а SLI доступности — доля хороших ответов.
  • Плохие ответы — 5xx: сбой на стороне сервера. С ответами 2xx, 3xx и 4xx сервис справился.
  • Один curl проверяет один запрос, SLI — все запросы покупателей за время счёта.
Ubuntu 24.04
Загрузка…