linux文件权限rwrr,使用Linux命令对Nginx日志进行简单统计

首先,在 Nginx 日志末尾添加 $request_time 把响应时间到日志中。

PV

统计 PV,就是日志行数。

[root@izwz9gnho9y85rrwrrr7v2z log]# cat access.log |wc -l

53102

UV

UV, 即是统计 IP 数。

[root@izwz9gnho9y85rrwrrr7v2z log]# cat access.log |awk '{print $1}' |sort |uniq -c |wc -l

2886

注意,uniq -c,去重并在输出行前面加上每行在输入文件中出现的次数,必须先排序一次,它是逐行比较,遇到下一行不相同次数就恢复1了。

访问最频繁的IP

IP 出现次数从高到低。

[root@izwz9gnho9y85rrwrrr7v2z log]# cat access.log |awk '{print $1}' |sort |uniq -c |sort -rn |head

7766 219.132.139.37

4472 113.64.105.9

2981 116.5.142.176

2139 113.64.102.24

1356 113.81.2.143

1352 113.64.101.143

1206 113.87.195.185

1192 183.25.126.220

1079 183.25.125.144

1064 113.64.102.172

sort -nr, n 按数值来排序(而不是ascii码值),r 倒序,大的在前。

访问最频繁的URI

URI 出现次数从高到低。

[root@izwz9gnho9y85rrwrrr7v2z log]# cat access.log |awk '{print $7}' |sort |uniq -c |sort -rn |head

6310 /api/user-push-message

3553 /

2484 /api/homepage-today-recommendgoods?title=&sort=&page=1&pagesize=10

2484 /api/homepage-pintuan?title=&sort=&page=1&pagesize=2

2482 /api/homepage-hot-salerecommend?title=&sort=&page=1&pagesize=2

2326 /api/homepage?page=1

2094 /api/lucky-draw/1

1379 /api/profile

1248 /api/collectAndViewhistory

1175 /api/homepage

状态码分布情况

[root@izwz9gnho9y85rrwrrr7v2z log]# cat access.log |awk '{print $9}' |sort |uniq -c |sort -nr

46217 200

2523 404

1302 500

1223 304

926 401

678 302

254 400

120 "-"

51 157

44 499

30 422

29 206

21 405

12 413

12 403

8 301

4 SP1

3 419

2 408

最耗时的请求发生时间、所请求的 URI 和耗时

[root@izwz9gnho9y85rrwrrr7v2z log]# cat access.log |awk '{print $4,$7,$NF}' |sort -k3 -nr|head

[01/Mar/2019:02:11:32 /api/homepage?page=1 20.542

[11/Feb/2019:05:24:15 /api/collectAndViewhistory?type=2&page=1 10.027

[01/Mar/2019:00:49:22 /api/cate-list?title=%E7%9F%AD%E8%A2%96&sort=&page=3 8.811

[26/Mar/2019:08:41:18 /api/homepage-pintuan?title=&sort=&page=1&pagesize=2 8.493

[03/Mar/2019:09:16:49 /api/homepage?page=1 8.424

[01/Mar/2019:03:44:09 /api/homepage-cheap-goods?title=&sort=&page=2 8.152

[29/Mar/2019:03:05:32 /api/cate-list?title=%E5%9C%A8%E6%B7%98%E5%AE%9D%E5%92%8C%E4%BA%AC%E4%B8%9C%E5%89%8D%E8%AE%B0%E5%BE%97%E5%8F%91%E9%93%BE%E6%8E%A5%E7%BB%99%E6%88%91%E7%9C%8B%E7%9C%8B%E6%88%91%E6%B2%A1%E6%9C%89%E4%BC%98%E6%83%A0%E5%88%B8%E5%93%A6[%E5%A5%B8%E7%AC%91]%E7%9C%81%E9%92%B1%E6%98%AF%E4%B8%80%E7%A7%8D%E5%A5%BD%E4%B9%A0%E6%83%AF%EF%BC%8C%E5%B8%8C%E6%9C%9B%E4%BD%A0%E6%8B%A5%E6%9C%89[%E8%B0%83%E7%9A%AE]&sort=&page=2 7.956

[01/Mar/2019:15:37:50 /api/homepage?page=1 7.876

[18/Feb/2019:02:51:49 /api/items/576998516953 7.744

[04/Mar/2019:03:00:00 /api/collectAndViewhistory 7.474

awk 中 $NF, 表示最后一个字段。sort -k3, 表示依据第3个字段来排序, 默认的字段分割符是空格,如果是其他可以使用 -t 指定。

不同 URI 的平均耗时

[root@izwz9gnho9y85rrwrrr7v2z log]# cat access.log |awk '{s[$7] += $NF;c[$7]++}END{for(i in s){print i,s[i]/c[i]}}' |sort -k2 -nr |head

/api/cate-list?title=%E7%9F%AD%E8%A2%96&sort=&page=3 8.811

/api/cate-list?title=%E5%9C%A8%E6%B7%98%E5%AE%9D%E5%92%8C%E4%BA%AC%E4%B8%9C%E5%89%8D%E8%AE%B0%E5%BE%97%E5%8F%91%E9%93%BE%E6%8E%A5%E7%BB%99%E6%88%91%E7%9C%8B%E7%9C%8B%E6%88%91%E6%B2%A1%E6%9C%89%E4%BC%98%E6%83%A0%E5%88%B8%E5%93%A6[%E5%A5%B8%E7%AC%91]%E7%9C%81%E9%92%B1%E6%98%AF%E4%B8%80%E7%A7%8D%E5%A5%BD%E4%B9%A0%E6%83%AF%EF%BC%8C%E5%B8%8C%E6%9C%9B%E4%BD%A0%E6%8B%A5%E6%9C%89[%E8%B0%83%E7%9A%AE]&sort=&page=2 7.956

/api/items/576998516953 7.744

/api/cate-list?title=%E6%B4%97%E9%9D%A2%E5%A5%B6&sort=&page=2 6.562

/api/cate-list?title=%E4%B9%9D%E9%98%B3JYS-A800%E7%BB%9E%E8%82%89%E6%9C%BA%E5%AE%B6%E7%94%A8%E7%94%B5%E5%8A%A8%E5%A4%9A%E5%8A%9F%E8%83%BD%E7%A2%8E%E8%82%89%E6%90%85%E6%8B%8C%E6%90%85%E8%82%89%E7%BB%9E%E9%A6%85%E6%89%93%E8%82%89%E6%89%93%E8%92%9C%E6%96%99%E7%90%86&sort=&page=2 6.449

/api/homepage-cheap-goods?title=&sort=&page=6 6.243

/api/cate-list?title=%E7%9F%AD%E8%A2%96&sort=&page=4 6.21

/api/cate-list?title=%E7%A0%A7%E6%9D%BF&sort=&page=1 6.078

/api/cate-list?title=%E7%89%9B%E4%BB%94%E8%A3%A4&sort=price_asc&page=2 5.902

/api/cate-list?title=%E7%89%9B%E4%BB%94%E8%A3%A4&sort=price_asc&page=1 5.663

awk 中,s 数组统计 URI 耗时总和,c 数组统计 URI 总请求次数,最后相除。

如果仅考虑 URI 不考虑 query_string,可以使用 split 进行分割截取:

cat access-20191129.log |awk '{split($5,a,"?");print a[1],$NF}' |awk '{s[$1]+=$2;c[$1]+=1}END{for(i in s){print i,s[i]/c[i]}}' |sort -k2 -rn

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值