Журнал хранит три часа, а жалобы — про последний. SLI всегда считают за окно времени.
Команда выше напечатала около 97 %: в счёт попали три часа работы магазина, и два спокойных часа разбавили последний. Поэтому SLI называют вместе с окном: «доступность за последний час», «за сутки», «за 30 дней». Одни и те же запросы дают разный SLI в разных окнах.
Чтобы отобрать окно, нужно время каждого запроса. Журнал магазина пишется в формате sre — его задаёт директива log_format:
Это привычный 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:
Посчитай доступность за час
Посчитай доступность магазина за последний час — долю хороших ответов в процентах — и запиши одно число в ~/sli/availability.txt, например 99.12.
Цели · 0 из 1
- Записать в ~/sli/availability.txt доступность за последний час ещё не выполнена