Шаг 5 из 6 · лаба · 30 мин
Доступность и p95 по журналу
Скрипт, который по журналу nginx за любое окно времени считает доступность сайта и 95-й перцентиль времени ответа, — чтобы SLI считался одной командой вместо конвейера, набранного по памяти.
Ситуация
SLI магазина shop.lab.test — доступность и p95 времени ответа — дежурные до сих пор считают конвейером, который
каждый набирает по памяти, и цифры за один и тот же час у всех выходят разные. Нужен один скрипт, которому
доверяют все.
Журнал сайта — /var/log/nginx/shop.access.log (вчерашний — shop.access.log.1.gz), формат строки задан в
/etc/nginx/conf.d/sre-log.conf: в конце строки — время ответа $request_time и unix-время запроса $msec.
Журналы nginx читаются через sudo.
Задача
Напиши скрипт ~/sli.sh, который запускается так:
~/sli.sh LOG FROM TO
LOG— журнал nginx в этом формате, обычный или сжатый gzip (.gz);FROMиTO— время в любом виде, который понимаетdate -d:'2026-10-22 13:00','2026-10-22T13:00:00';- в окно попадают запросы с
FROMвключительно доTOне включая — по unix-времени запроса.
Скрипт печатает одну строку:
total=<запросов в окне> availability=<доступность> p95=<p95>
- доступность — процент ответов с кодом меньше 500 среди всех запросов окна, две цифры после точки (
93.04); - p95 — время ответа ближайшим рангом: времена по возрастанию, строка номер ⌈0,95 · total⌉, значение как в журнале;
- за окно без запросов —
total=0 availability=- p95=-.
Проверка запустит скрипт от твоего имени на своих журналах, которых на машине нет, поэтому sudo внутри
скрипта не нужен. Сверить скрипт на журнале машины можно по ~/sli-check.txt: там команда и строка, которую она
должна напечатать.
Нужные инструменты уже установлены. Интернета на машине нет.
Лаба · самостоятельно
Команды в этой лабе не даны: набирай их в терминале сам. Цели проверяются на машине после каждой команды.
Цели
0 из 4-
~/sli.sh — исполняемый скрипт, на журнале машины печатает одну строку total=… availability=… p95=… — ещё не выполнена
-
На журналах проверки total и доступность совпадают с эталоном — ещё не выполнена
-
На журналах проверки p95 совпадает с эталоном — ещё не выполнена
-
Сжатый журнал (.gz) скрипт читает сам, за окно без запросов печатает total=0 availability=- p95=- — ещё не выполнена
Машина запускается
Подсказки
0 из 3Цели лабы
0 из 4-
~/sli.sh — исполняемый скрипт, на журнале машины печатает одну строку total=… availability=… p95=… — ещё не выполнена
-
На журналах проверки total и доступность совпадают с эталоном — ещё не выполнена
-
На журналах проверки p95 совпадает с эталоном — ещё не выполнена
-
Сжатый журнал (.gz) скрипт читает сам, за окно без запросов печатает total=0 availability=- p95=- — ещё не выполнена
Цели проверяются на машине после каждой команды.