Как найти наиболее распространенный код ошибки в журналах доступа к веб-серверу - PullRequest
0 голосов
/ 05 декабря 2018

Как мне найти наиболее распространенный код ошибки в веб-сервере access.log?

1 Ответ

0 голосов
/ 06 декабря 2018

Вы можете попробовать что-то вроде этого:

cat /var/log/apache2/access_log | sed 's/\[.*\]//' | sort | uniq -c | awk '//{if($1>=5) print $0}' | sort -nr

Идея состоит в том, чтобы разделить вещи, которые меняются от строки к строке, такие как метки времени или IP-адреса, чтобы объединить ошибки.В этом случае я только вырезал временные метки, используя sed, предполагая, что они заключены в квадратные скобки.Так что sed 's/\[.*\]//' заменит это \[.*\] ничем.

Так, например, эта строка:

127.0.0.1 - - [03/Oct/2016:23:45:27 +0300] "GET /favicon.ico HTTP/1.1" 200 1406

станет такой:

127.0.0.1 - -  "GET /favicon.ico HTTP/1.1" 200 1406

Тогда sort и uniq -c агрегируют смежные идентичные строкии добавьте количество дубликатов.Таким образом, это будет выглядеть примерно так:

22 127.0.0.1 - -  "GET /favicon.ico HTTP/1.1" 200 1406

Это означает, что следующая строка (без вычеркнутой метки времени) появилась в журнале 22 раза.

Тогда awk '//{if($1>=5) print $0}' будет отображать только повторяющиеся строки, которые появлялись 5 или более раз, причем 5 было произвольным.И затем окончательная сортировка.

Это было проверено на OSX и Ubuntu.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...