Linux Labs

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

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

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

Шаг 3 из 6 · на машине · 7 мин

Окно времени

Журнал хранит три часа, а жалобы — про последний. SLI всегда считают за окно времени.

Команда выше напечатала около 97 %: в счёт попали три часа работы магазина, и два спокойных часа разбавили последний. Поэтому SLI называют вместе с окном: «доступность за последний час», «за сутки», «за 30 дней». Одни и те же запросы дают разный SLI в разных окнах.

Чтобы отобрать окно, нужно время каждого запроса. Журнал магазина пишется в формате sre — его задаёт директива log_format:

bash
cat /etc/nginx/conf.d/lab-sre-log.conf

Это привычный combined и два поля в конце. $request_time — сколько секунд nginx обрабатывал запрос. $msec — момент запроса в unix-времени: секунды с 1 января 1970 года по UTC, с миллисекундами после точки. В awk последнее поле строки — $NF, предпоследнее — $(NF-1).

Unix-время — одно число, поэтому окно задаёт простое сравнение: строка входит в последний час, если её $NF не меньше, чем «сейчас минус 3600 секунд». Это число печатает date: date +%s — текущее unix-время, date -d '1 hour ago' +%s — час назад. В программу awk значение передаёт ключ -v:

bash
from=$(date -d '1 hour ago' +%s); log=/var/log/nginx/access.log
sudo awk -v from="$from" '$NF >= from' "$log" | wc -l
Упражнение · сделать

Посчитай доступность за час

Посчитай доступность магазина за последний час — долю хороших ответов в процентах — и запиши одно число в ~/sli/availability.txt, например 99.12.

Войти и начать Машина доступна после входа

Цели · 0 из 1

  • Записать в ~/sli/availability.txt доступность за последний час ещё не выполнена

Цели шага

0 из 1
  • Записать в ~/sli/availability.txt доступность за последний час — ещё не выполнена
Ubuntu 24.04

Цели шага

0 из 1
  • Записать в ~/sli/availability.txt доступность за последний час — ещё не выполнена
Загрузка…