mma*_*tax 20 log-files analytics apache-2.2
我有一堆想要分析的 Apache 日志文件。我正在寻找一种不需要太多设置的工具;我可以通过命令行运行日志,而无需在我们的实时 Web 服务器上乱搞。
有什么建议吗?
虽然上面的工具都很酷,但我想我知道提问者在问什么。我无法像处理其他文件那样从访问日志中提取信息,这常常让我感到痛苦。
这是因为愚蠢的访问日志格式:
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"
Run Code Online (Sandbox Code Playgroud)
换句话说,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"
Run Code Online (Sandbox Code Playgroud)
当然,现在几乎任何事情都是可能的。
享受!
小智 6
apachetop很酷;它打印实时统计数据。你运行它
apachetop -f /var/log/apache2/www.mysite.com.access.log
Run Code Online (Sandbox Code Playgroud)
要在 Debian/Ubuntu 中安装它:
apt-get install apachetop
Run Code Online (Sandbox Code Playgroud)
或来自来源:https : //github.com/JeremyJones/Apachetop
归档时间: |
|
查看次数: |
33476 次 |
最近记录: |