AWK分析access日志中的应用
来源:互联网 发布:广联达软件购买 编辑:程序博客网 时间:2024/06/08 00:59
要即时分析线上访问商品情况,命中率,缓存,热点商品统计,比如一小时内,数秒内的值,还有一些其它数据指标的分析。这个时候AWK就显得非常强大了。
日志格式:
由Nginx配置
$remote_addr $request_time_usec $http_x_readtime [$time_local] \"$request_methodhttp://$host$request_uri\" $status $body_bytes_sent \"$http_referer\" \"$http_user_agent\" $upstream_response_time $http_ns_client_ip $srcache_cache_status
很久没用awk了,有些生疏,记下此次过程。
1 首先要从一个日志文件获取指定时间以来数据。如何进行日期比较?
主要是取当前系统时间生与一个与日志格式相同的字符串再进行比较,awk 内置 strftime这个函数,可以使用这个函数
2 如何统计商品这段时间访问数?
从访问URL中 抓取特定参数 id 来进行统计,每分析到一条 ids[id]++;
3 如何抓取URL中指定参数?
使用gsub函数,t=gsub(/.*[&|?]id=|[&|"].*/,"",t),t为整个访问的URL
4 如何获取top N?
使用sort将结果排序:for(i in ids){print i,ids[i] | "sort -r -n -k2"}
5 由于中间还夹杂些其它它干扰日志,需要再作些简单的过滤。
最终结果:
完整的热点访问统计:
awk 'BEGIN{sum=0;now=strftime("[%d/%b/%Y:%T",systime())}{if(NF>15 && $4>now){sum++;t=$7;t=gsub(/.*[&|?]id=|[&|"].*/,"",t);ids[t]++;srcache[$NF]++; }}END{ for(i in ids){print i,ids[i] | "sort -r -n -k2"} print "total:" sum}' xxxx-access_log | more
命中率
awk 'BEGIN{sum=0;now=strftime("[%d/%b/%Y:%T",systime())}{if(NF>15 && $4>now){sum++;t=$7;id=gsub(/.*[&|?]id=|[&|"].*/,"",t);ids[t]++;srcache[$NF]++; }}END{ for(i in srcache){print i,srcache[i]} hit=srcache["HIT"]/sum; print "Total:" sum,"Hit rate:"hit}' xxxx-access_log
如需要1小时内的统计: systime()-3600
- AWK分析access日志中的应用
- awk分析nginx日志
- 日志分析awk
- AWK日志分析实战
- awk 分析web日志(页面执行时间)(常见应用3)
- awk 分析web日志(页面执行时间)(常见应用3)
- awk 分析web日志(页面执行时间)(常见应用3)
- awk分析nginx日志,获取pv
- awk分析nginx日志,获取pv
- awk分析nginx日志,获取pv
- 日志分析常用工具(一) —— awk
- awk实例_分析日志文件
- Awk使用及网站日志分析
- awk nginx日志分析接口响应时间
- awk日志分析 持续增加中...ing
- Search-guard在ELK Stack日志分析系统中的应用
- shell分析nginx access log日志
- shell分析nginx access log日志
- winrar 注册码
- 整数的乘积
- C函数之strtok使用及Win & BSD实现
- gdb 调试小记(关于watch)
- android 读取联系人等信息
- AWK分析access日志中的应用
- Java 学习资料
- cctype头文件中定义的函数
- JAVA 多线程-单例设计模式-懒汉式
- Ruby学习笔记6
- 互联网测试环境解决方案
- 编程之美“字符串移位包含的问题”的另一种解法
- 【转】ARM9 2410移植之ARM中断原理, 中断嵌套的误区,中断号的怎么来的
- 创建对象的几种方式