Верстакфорум практиков
рекламаiprazon: приватные серверные адреса IPv4 и SOCKS5, безлимитный трафик, бесплатный тест до 2 часов
ФорумНовичкам

Как читать логи, если видишь их впервые

loginless
loginless
Новичок
сообщений 130
с мая, второй сезон
22 августа, 17:07первое сообщение

открыл лог первый раз и сразу закрыл. двадцать тысяч строк, все на одно лицо, где там ошибка непонятно.

скрипт падает примерно раз в час, в консоли пишет «смотри лог». подскажите, как вообще подходить к такому файлу, с какого конца читать?

sysdiag
sysdiag
Знаток
сообщений 1975
с фев
1 января, 08:24#2

С конца, но не совсем. Объясню порядок.

Лог никто не читает подряд. Сначала ты сужаешь файл до интересного куска, потом глазами читаешь уже двадцать строк.

Первый заход:

grep -i -n 'error\|fail\|exception' progon.log | tail -50

Получишь последние полсотни строк со словами про сбой, с номерами строк. Дальше берёшь номер первой такой строки и смотришь вокруг неё:

sed -n '4100,4160p' progon.log

И вот тут правило, которое экономит часы: интересна первая ошибка в цепочке, все следующие обычно её следствия. Люди читают самую нижнюю строку и чинят следствие.

логи читаю раньше почты
loginless
loginless
Новичок
сообщений 130
с мая, второй сезон
8 июня, 11:41#3
sysdiag: интересна первая ошибка в цепочке

то есть снизу вверх листать до места, где всё началось?

Пётр Мельник
Пётр Мельник
Участник
сообщений 810
с июл
15 ноября, 14:58#4

Да. И главный ориентир тут время. У каждой строки в начале метка времени, найди момент падения и отмотай на минуту назад. Всё, что попало в эту минуту, и есть история болезни.

Если меток времени нет, это первое, что надо поправить в своём скрипте. Лог без времени почти бесполезен.

сначала замер, потом мнение
Настя Лужина
Настя Лужина
Новичок
сообщений 265
с янв, второй сезон
22 апреля, 17:15#5

А я долго не знала про tail -f. Смотришь лог живьём, пока прогон идёт, и прямо видишь, на чём он спотыкается.

dev_null_ru
dev_null_ru
Ветеран
сообщений 2560
с фев
1 сентября, 08:32#6

Разберём типичную строку, чтобы слово «лог» перестало пугать.

08-19 03:14:22  WARN   fetcher   attempt 2 failed for /catalog/91 timeout after 15s

Слева направо: дата и время, уровень важности, имя куска программы, который это написал, дальше человеческий текст.

Уровни почти везде одинаковые:

УровеньЧто значит
DEBUGподробности для разработчика
INFOвсё идёт по плану
WARNстранно, но работаем дальше
ERRORэтот кусок работы провалился
FATALпрограмма дальше жить не может

Начинай с ERROR и FATAL. К WARN возвращайся, когда с ERROR уже разобрался.

loginless
loginless
Новичок
сообщений 130
с мая, второй сезон
8 февраля, 11:49#7

о, уровни у меня есть, я думал это просто слова большими буквами

ostrov
ostrov
Участник
сообщений 505
с окт
15 июля, 14:06#8

Ещё про размер файла. Двадцать тысяч строк это мелочь, less откроет мгновенно. Когда дорастёшь до файлов на гигабайт, cat перестанет годиться, машина задумается надолго.

Для больших файлов набор такой: less для листания, grep для поиска, zgrep для сжатых архивов логов.

sysdiag
sysdiag
Знаток
сообщений 1975
с фев
22 декабря, 17:23#9

Раз тема пошла, дам порядок разбора, которым пользуюсь сам. Работает почти на любом логе.

Шаг первый: понять окно времени. Когда всё было хорошо и когда сломалось. Две метки, больше ничего.

Шаг второй: вырезать это окно в отдельный файл. С маленьким файлом работать не страшно, оригинал остаётся нетронутым.

Шаг третий: посчитать, чего и сколько. Часто картина видна сразу по счётчику видов ошибок.

Шаг четвёртый: взять самый частый вид и найти его первое появление в окне. Дальше читать вокруг этой строки.

Шаг пятый: если ничего не понял, сравнить с логом удачного прогона. Разница между рабочим и сломанным заходом обычно и есть ответ.

сузили лог до окна времени
сузили лог до окна времени
логи читаю раньше почты
Настя Лужина
Настя Лужина
Новичок
сообщений 265
с янв, второй сезон
1 мая, 08:40#10

Сохранила порядок себе. Пятый шаг про сравнение с удачным прогоном вообще не приходил в голову.

Дарья Смолина
Дарья Смолина
Участник
сообщений 340
с дек
8 октября, 11:57#11

Добавлю мелочь, на которой сама просидела вечер. Проверяйте часовой пояс машины и время внутри самого лога. У меня записи шли по UTC, будильник срабатывал по местному, и я искала событие на три часа мимо.

timedatectl покажет, как настроена система.

Пётр Мельник
Пётр Мельник
Участник
сообщений 810
с июл
15 марта, 14:14#12

Дарья права. И ещё: заведите привычку писать в лог не только ошибки, но и вехи. Старт прогона, конец, сколько обработано за час. Тогда лог читается как дневник.

сначала замер, потом мнение
loginless
loginless
Новичок
сообщений 130
с мая, второй сезон
22 августа, 17:31#13

докладываю. нашёл по счётчику: 412 раз timeout на одном домене, всё остальное следствие. первая ошибка была в 03:14, за минуту до неё строка про смену адреса.

теперь читаю логи спокойно, спасибо всем.