浏览 4137 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-11-10
1. 通过 wvanbergen-request-log-analyzer 安装: gem sources -a http://gems.github.com sudo gem install wvanbergen-request-log-analyzer $ request-log-analyzer /var/log/my_app.log 可以分析大多内容,例如: Top 10 most requested actions Top 10 actions by time – cumulative Top 10 actions by time – per request mean Top 10 worst DB offenders – cumulative time Top 10 worst DB offenders – mean time Requests graph – per hour 2, 得到独立IP数量 cat production.log | grep “^Processing” | awk ‘{print $4}’ | uniq | wc -l 3, 每个IP的访问次数 cat production.log | grep “^Processing” | awk ‘{print $4}’ | uniq -c 4, 得到网站所有访问数量 cat production.log | grep “^Processing” |wc |awk ‘{print $1}’ 5, 统计每个页面的各自访问次数 cat production.log |grep “200 OK” | awk ‘{print $17}’ | sort | uniq -c 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2008-11-10
其实就用shell统计就够用了,比方说统计action的耗时:
cat production.log |grep "200 OK" | awk '{print $17}'|sort|uniq -c | sort -r -n | head -n 500 > stat.log 统计前200个访问最多的IP: grep Processing production.log | awk '{print $4}' | sort | uniq -c | sort -r -n | head -n 200 > stat_ip.log 等等 |
|
返回顶楼 | |
发表时间:2008-11-10
最后修改:2008-11-10
用ruby可以处理更复杂的情况,比如统计中忽略/system/check_alive(需要修改这个插件源码).
一次请求生成的log是多行的,简单用shell不容易做到吧? 附带问问有人玩过rush不? http://rush.heroku.com/ |
|
返回顶楼 | |
发表时间:2008-11-10
liusong1111 写道 用ruby可以处理更复杂的情况,比如统计中忽略/system/check_alive(需要修改这个插件源码).
一次请求生成的log是多行的,简单用shell不容易做到吧? 附带问问有人玩过rush不? http://rush.heroku.com/ 第一句话没看懂…… 什么文本问题不能用shell处理呢? sed + awk 一切轻松搞定 有问题交给拥有十年shell经验的robbin,估计都是轻松加easy吧 |
|
返回顶楼 | |
发表时间:2008-11-10
我的需求是,系统里有个/system/check_alive的url,另有个后台进程隔段时间就访问一下它,看看进程是不是还活着.
在输出的报表里,比如Requests graph会显示一天24时中,每个小时的访问数,但我不希望上面url也被统计进来,需要在log analyzer代码里进行一次过滤. 仔细想了想,似乎应该能用shell解决. log analyzer有一个parser类,用于把log文本解析成ruby数据结构,这样就能很好的利用,我刚才的例子只是担心纯文本扫描有没有那么强. |
|
返回顶楼 | |
发表时间:2008-11-10
liusong1111 写道 我的需求是,系统里有个/system/check_alive的url,另有个后台进程隔段时间就访问一下它,看看进程是不是还活着.
在输出的报表里,比如Requests graph会显示一天24时中,每个小时的访问数,但我不希望上面url也被统计进来,需要在log analyzer代码里进行一次过滤. 仔细想了想,似乎应该能用shell解决. log analyzer有一个parser类,用于把log文本解析成ruby数据结构,这样就能很好的利用,我刚才的例子只是担心纯文本扫描有没有那么强. grep -v "\/system\/check_alive" 一个过滤匹配就搞定了,把这个匹配用管道加到上面的命令里面去,可以收工了。貌似你比想了半天写ruby code要快nn倍。 |
|
返回顶楼 | |
发表时间:2008-11-11
我喜欢 shell 我也贴一个我用的
有错的自动发邮件出来 cat production.log | grep "Error" -6 -n | mail -s "Error Logs" xxxx@agideo.com |
|
返回顶楼 | |
发表时间:2008-11-11
你们让我真真见识了shell的强大。谢谢。
|
|
返回顶楼 | |
发表时间:2008-12-05
强大的shell
|
|
返回顶楼 | |