如何在Web服务器访问日志中找到最常见的错误代码

时间:2018-12-05 20:46:32

标签: bash apache http

如何在Web服务器access.log中找到最常见的错误代码?

1 个答案:

答案 0 :(得分:1)

您可以尝试以下操作:

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

然后,sortuniq -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上进行了测试。