awk分析nginx日志文件的方法,awk命令统计日志信息,awk命令格式与awk日志分析命令的例子,需要的朋友参考下。
awk命令格式:
awk 'pattern{action;action} pattern{action;action}' {filenames}
日志分析命令
awk 'BEGIN{len=0;tm=0} {len=length($NF);tm=substr($NF,2,len-2)+0} tm>0.5 {print NR " " $0 }' nginx.log
解释:
2、{len=length($NF);tm=substr($NF,2,len-2)+0}
3、tm>0.5 {print NR " " $0 }
代码:
awk '/responseTime/ {
where=match($0,/"responseTime":[[:alnum:]]+/); if(where>0){ spend=substr($0,RSTART,RLENGTH); len=length(spend); where = index(spend,":"); spend=substr(spend,where+1,len); spend=spend+0; if(spend>10000) print $0; } }' \ somelog.log awk统计日志信息
一些日志统计的问题,使用awk可以很迅速地处理日志中的信息,因此把比较有用的提取出来,比如如下日志:
ALARM 10-31 10:41:02 140038239139584 file[crawling_thread.cc:171] func[request_cb] url[http://bbs.tianya.cn/post-culture-282402-1.shtml] 403, proxy[58.252.56.149:9000] forbiddened
表示代理58.252.56.149端口9000失效了,被服务器封禁了,当日志文件到好几G时,如何快速统计代理ip及被封禁次数,awk命令可以解决:
grep “forbiddened” log/evcrawler.log.20131031 | awk -F “[][]” ‘{w[$8]+=1} END{for (a in w) printf(“proxy:%s, forbid times:%u\n”, a, w[a])}’
打印每个代理和封禁次数。
加上时间:
awk ‘{if($3 > “12:00:00″) print $0}’ log/evcrawler.log.20131031 | grep “forbiddened” | awk -F “[][]” ‘{w[$8]+=1} END{for (a in w) printf(“proxy:%s, forbid times:%u\n”, a, w[a])}’
|