Ответ вслух Senior grep, sed, awk, find, xargs спрашивают часто обновлено

Разбор лога в консоли

Вопрос

Сервис стал отвечать медленно. У тебя есть access.log nginx и SSH. Как ты быстро поймёшь, что происходит, только стандартными утилитами?

Попробуйте сами

Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.

Показать ответ и разбор

Коротко

Сначала беру актуальное окно: tail -n 10000 access.log или фильтр по времени, чтобы не смешивать с прошлой неделей. Дальше распределение кодов: awk '{print $9}' sort uniq -c sort -rn.

Что должно прозвучать в ответе

  • Смотрю свежие строки: `tail -f` или `tail -n 1000`, чтобы работать с актуальным окном

  • Распределение кодов ответа: `awk '{print $9}' | sort | uniq -c`, ищу рост 5xx или 499

  • Топ URL и IP: не долбит ли один клиент или один эндпоинт

  • Если в логе есть `$request_time`, сортирую по нему и смотрю самые медленные запросы

  • Ищу всплеск по минутам: группировка по времени через `cut` или awk

  • Сопоставляю с логом приложения через `grep` по времени или request id

Что могут спросить следом

  • Как посчитать запросы в минуту?
  • Что значит код 499 в nginx?
  • Как сделать то же на гигабайтном gzip-логе?

Разбор

Сначала беру актуальное окно: tail -n 10000 access.log или фильтр по времени, чтобы не смешивать с прошлой неделей. Дальше распределение кодов: awk '{print $9}' | sort | uniq -c | sort -rn. Если выросли 502 и 504, проблема в апстриме, если 499, клиенты не дожидаются ответа. Потом топ URL и топ IP тем же приёмом: часто медленно становится из-за одного тяжёлого эндпоинта или бота. Если в формат лога добавлено $request_time, сортирую по этой колонке и смотрю, какие запросы самые долгие. Чтобы найти момент начала, группирую по минутам: вырезаю время до минут и делаю uniq -c. Найдя время и URL, иду в лог приложения с grep по времени или по request id. Для сжатых логов то же самое через zcat или zgrep, и не забываю LC_ALL=C, это заметно ускоряет sort и grep на больших файлах.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.