我有一堆要分析的Apache日志文件。我正在寻找不需要太多设置的工具;我可以通过命令行运行日志,而不必在实时网络服务器上乱七八糟。
有什么建议吗?
我有一堆要分析的Apache日志文件。我正在寻找不需要太多设置的工具;我可以通过命令行运行日志,而不必在实时网络服务器上乱七八糟。
有什么建议吗?
Answers:
虽然上面的工具都很酷,但我想我知道提问者在问什么。我经常无法像使用其他文件那样从访问日志中提取信息,这使我感到非常痛苦。
这是由于愚蠢的访问日志格式:
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"
他们为什么将[]用作日期,将“”用作其他内容?他们是否认为我们不知道日期在字段4中?真令人沮丧。
目前最好的工具是gawk:
gawk 'BEGIN { FPAT="([^ ]+)|(\"[^\"]+\")|(\\[[^\\]]+\\])" } { print $5 }'
根据上面的数据,这将为您提供:
"GET /manual/elisp/index.html HTTP/1.1"
换句话说,FPAT使您能够拉出apache-log的字段,就好像它们是实际字段一样,而不仅仅是空格分隔的实体。这就是我一直想要的。然后,我可以使用管道来解析更多内容。
在此处定义了使FSPAT工作的方法:http ://www.gnu.org/software/gawk/manual/html_node/Splitting-By-Content.html
因此,您可以设置别名以创建可以解析apache日志的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"
当然,几乎所有其他一切现在都是可能的。
请享用!
awk '($9 == 200) {print $6,$7,$8}'
显示与示例相同的内容。在那里不需要使用FPAT(即使在其他情况下也可以使用此方法)
apachetop很酷;它打印实时统计信息。你用
apachetop -f /var/log/apache2/www.mysite.com.access.log
要在Debian / Ubuntu中安装它:
apt-get install apachetop
我建议不要使用命令行工具,而是尝试使用Apache Logs Viewer。这是一个免费的工具,可以监视和分析Apache日志文件。它可以动态生成一些非常酷的图形和报告。