论坛首页 综合技术论坛

awl网站访问日志分析工具

浏览 2063 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2012-01-20   最后修改:2012-01-20
awl是一款命令行环境下的网站访问日志分析工具,它的名字和awk比较像,其功能和使用特点也有借鉴awk的风格。awl的主要功能就是过滤日志条目,控制输出格式。http://code.google.com/p/awl/

通常awl并不能给产出最终想要的数据,但它提供了极大的灵活性,它被设计为充当网站数据分析先锋的角色。它的产出可以直接使用,也可以由后续处理程序继续分析。比如我们要查看所有GET请求且状态码不是200的访问记录,且只关心IP地址和请求的URL,则可以用如下命令实现:

awl '{m="GET"&!(s=200):%h\t%l}' /var/log/httpd/localhost-access_log

如果需要保存结果,可以用">"重定向到文件中。假如我们要查看iPad终端访问数量,则可以这样:

awl '{a*"iPad":%h}' /var/log/httpd/localhost-access_log | wc -l

a代表user Agent,*代表包含字符串。这样的好处就是如果仅仅是URL参数里含有iPad,并不会被误认为iPad终端访问。这一点是用awk等工具较难处理的,也是awl专注的领域。awl不会以awk那种强大的功能为目标,相反awl与awk可以成为绝佳组合,正如其命名一样。下面的例子演示如何通过命令行组合实时分析访客IP、访问目标路径和返回状态:

tail -f /var/log/httpd/localhost-access_log | awl '{:%h,%lp,%s}' | awk ...

awl的输出格式可以(也只能)自由定制,这带来了很大的灵活性,输出结果可以是CSV格式(支持对数据域中特殊字符进行CSV转码),可以是Tab分割的形式,甚至可以是SQL语句:

awl '{:insert into access_log values ("%h", "%m", "%lp", "%s")}'

此外,有时候我们会对URL中的参数感兴趣,尤其如果我们利用JS发送请求、服务器端以HTTP log形式记录数据来实现统计数据的采集时,我们的主要数据域可能都在参数里。awl对此提供了很方便的支持,只需使用一个内置函数P(输出格式符里省去字母P):

awl '{P(user)["Alan":%h\t%(Alan)}' ...

上面的命令将筛选出所有参数“user”值以“Alan”开头的日志条目,以IP、Tab制表符、参数值的形式输出。

对于大规模的日志分析处理,现在很多有实力的公司都开始用Hadoop分布式处理了。Hadoop方案中很多开源项目都使用类似Tab分割的文本数据输入,这时awl也可以成为一个极佳拍档,它可以很灵活很方便的产出这种数据。

作为一个命令行工具,它很多时候不能直接得到最终所需数据,但它可以帮你省去原始日志解析这一块,无论你做的是什么项目,只要是标准的Web访问日志。
论坛首页 综合技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics