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



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

您可以尝试以下操作:

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次以上的重复行,其中5次是任意的。然后是最后的排序。

这在OSX和Ubuntu上进行了测试。

最新更新