命令行工具来分析Apache日志文件

我有一堆我想分析的Apache日志文件。 我正在寻找一个不需要太多设置的工具; 我可以通过命令行运行日志,而不会在我们的实时Web服务器上搞乱。

任何build议?

虽然上面的工具都很酷,但我想我知道提问者在问什么。 经常让我感到困惑的是,我无法以其他文件的方式将信息从访问日志中提取出来。

这是因为愚蠢的访问日志格式:

127.0.0.1 - - [16/Aug/2014:20:47:29 +0100] "GET /manual/elisp/index.html HTTP/1.1" 200 37230 "http://testlocalhost/" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:31.0) Gecko/20100101 Firefox/31.0"

为什么他们使用[]date和“”为其他事情? 他们是否认为我们不知道date是在第四场? 这令人难以置信的令人沮丧。

现在最好的工具是gawk:

gawk 'BEGIN { FPAT="([^ ]+)|(\"[^\"]+\")|(\\[[^\\]]+\\])" } { print $5 }'

上面的数据会给你:

 "GET /manual/elisp/index.html HTTP/1.1" 

换句话说,FPAT使您能够将apache日志的字段拉出来,就好像它们是实际字段而不是空间分隔的实体。 这总是我想要的。 然后我可以用pipe道parsing一下。

使FSPAT的工作在这里定义: http ://www.gnu.org/software/gawk/manual/html_node/Splitting-By-Content.html

因此,你可以设置一个别名来制作一个可以parsingapache日志的gawk:

alias apacheawk="gawk -vFPAT='([^ ]+)|(\"[^\"]+\")|(\\\\[[^\\\\]]+\\\\])' " apacheawk '$6 ~ /200/ { print $5 } | sort | uniq

为我做了这个:

 "GET / HTTP/1.1" "GET /manual/elisp/index.html HTTP/1.1" "GET /manual/elisp/Index.html HTTP/1.1" "GET /scripts/app.js HTTP/1.1" "GET /style.css HTTP/1.1" 

当然几乎所有的东西现在都是可能的。

请享用!

wtop很酷。 还有其他的工具。 通常,我将使用bash,sed和awkparsing日志。

apachetop非常酷; 它打印实时统计。 你运行它

apachetop -f /var/log/apache2/www.mysite.com.access.log

要在Debian / Ubuntu中安装它:

 apt-get install apachetop 

或者从源代码: https : //github.com/JeremyJones/Apachetop

http://www.intuitive.com/wicked/84-exploring-apache-access_log-shell-script.shtml中还有一个有趣的脚本

你想要什么样的输出?

如果你只是想计算的东西,然后grep东西logfile.txt | wc -l很好用。 如果你想要漂亮的图表…不是很多。

如果你有一个可以使用的Windows工作站,那么logparser就是你select的工具!

模拟function可以很好地工作,并且不需要很多设置。 logwrangler是一个与模拟产生更好的输出,也需要一点点设置的包。

而不是使用命令行工具,我会build议尝试Apache日志查看器。 这是一个可以监视和分析Apache日志文件的免费工具。 它可以生成一些非常酷的graphics和报告。

更多信息来自http://www.apacheviewer.com