浏览 2063 次
锁定老帖子 主题:awl网站访问日志分析工具
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2012-01-20
最后修改:2012-01-20
http://code.google.com/p/awl/
awl是一款命令行环境下的网站访问日志分析工具,它的名字和awk比较像,其功能和使用特点也有借鉴awk的风格。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访问日志。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |