用于分析 Apache 日志文件的命令行工具

用于分析 Apache 日志文件的命令行工具

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

有什么建议吗?

答案1

虽然上面的工具都很酷,但我想我知道提问者在问什么。我无法像处理其他文件那样从访问日志中提取信息,这常常让我很痛苦。

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

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"

当然现在几乎任何事情都已成为可能。

享受!

答案2

頁面很酷。还有其他实用程序。我经常使用 bash、sed 和 awk 来解析日志。

答案3

阿帕奇很酷;它打印实时统计数据。你可以用

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

要在 Debian/Ubuntu 中安装它:

apt-get install apachetop

或来自来源:https://github.com/JeremyJones/Apachetop

答案4

我建议你尝试使用 Apache Logs Viewer,而不是使用命令行工具。这是一款免费工具,可以监控和分析 Apache 日志文件。它可以动态生成一些非常酷的图表和报告。

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

相关内容