Linux Labs

Практики SRE: SLO, инциденты, отказоустойчивость / Ступень 2 из 8 · шаг 5 из 6

Доступность и p95 по журналу

средняя ~30 мин
Не запущена Запускается обычно ~20 с
Сообщить о проблеме

Ситуация

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 · открываются по одной
Подсказка 1
Показать решение после 3 неудачных проверок

Выйти из лабы?

Машина проработает ещё 10 минут и удалится. Файлы пропадут, выполненные цели останутся.

Загрузка…