nginx筛选字段+excel统计
今天临下班的时候,领导叫我统计下即将举行的xx活动中,所有接口url在整天测试过程中,平均访问时间分别是多少,然后降序排序列出来,好让分析性能瓶颈。
第一次遇到这样的需求,以为要搞很久,领导也比较体贴,知道我没弄过之后,竟然帮我问开发是否了解,linux是否有现成的统计函数,我都猜只能从nginx日志去分析的了~~~果不其然。
幸好领导帮我化繁为简:叫我先筛选nginx中两列数据:url ,upstream_response_time,然后再导出来放到excel ,作进一步统计分析。
一、nginx筛选字段
1、先查看nginx中对日志格式定义
log_format json '{"@timestamp":"$time_iso8601",' '"host":"$server_addr",' '"clientip":"$remote_addr",' '"size":$body_bytes_sent,' '"responsetime":$request_time,' '"upstreamtime":$upstream_response_time,' '"upstreamhost":"$upstream_addr",' '"http_host":"$host",' '"url":"$uri",' '"xff":"$http_x_forwarded_for",' '"referer":"$http_referer",' '"agent":"$http_user_agent",' '"status":"$status"}';
2、顺带观察日志输出 ——》非必须
摘录一条具体日志,如下(为了保密,一些字段信息我改了下):
{"@timestamp":"2021-05-31T09:10:02+08:00","host":"123.14.16.8","clientip":"119.129.123.213","size":8097,"responsetime":0.007,"upstreamtime":0.007,"upstreamhost":"172.12.11.14:8291","http_host":"act.ljysai.cn","url":"/gyp/gyp/images/logo_defaultHead.png","xff":"-","referer":"https://act.ljysai.cn/gyp/gyp/manage/index.html","agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36","status":"200"}
3、最终核心处理命令:
cat 活动.access.log | awk -F '"' '{print $30" "$19}' | tr -d ':' | tr -d ',' > /tmp/活动_20210531.log
为啥要用 tr 命令呢,因为响应时间筛选完之后,实际上长这种样子
然后我导出完之后,就不知道怎么进行excel处理了,还是我们的领导厉害呀,简直是excel小能力,请收下我的膝盖。。。。
二、excel统计
1、原始数据长这样:
2、最终成品
具体过程,我都是凭记忆敲的,可能有误导成分。。。为了不影响我领导伟大的杰作,俺自己复制一个玩
(1)选中“数据透视表”
重头戏来嘞。。。登登登~~~~!!!
(2)两列数据全部选中,“确定”。然后第一列拖去“行”的空白框上,第二列拖去“值”的空白框
(3)计算平均值
参考:http://www.360doc.com/content/18/0114/16/30583536_721860402.shtml
鼠标单击,选中“值”,“值字段设置”
选择求平均值
然后再把这个行的玩意再拉多一次下去,跟值放一起,最终成品如下图:
(4)降序显示请求时间
至此,大功告成~~~~