利用线上日志统计接口的QPS

背景:

最近在对接sentinel到项目中,利用jMeter压测确定限流规则的QPS值,同时想查看一下线上接口的QPS值。

材料:

日志是本地压测产生的日志,重要的是格式

2019-07-03T11:16:23+0800|127.0.0.1|-|-|GET|http|127.0.0.1|/iptv/api/new/video/play/get?...
2019-07-03T11:16:23+0800|127.0.0.1|-|-|GET|http|127.0.0.1|/iptv/api/new/video/play/get?...
2019-07-03T11:16:23+0800|127.0.0.1|-|-|GET|http|127.0.0.1|/iptv/api/new/video/play/get?...

问题:

如何统计某个接口每秒的QPS那?

分析:

看如下日志,2019-07-03T11:16:23+0800|127.0.0.1|-|-|GET|http|127.0.0.1|/iptv/api/new/video/play/get?...;其实,我们就是要统计接口/iptv/api/new/video/play/get在相同秒数(即:同一个时间秒数,2019-07-03T11:16:23)出现的次数。

解决办法:

先抛出命令行:tail -f host-access.log | grep '/iptv/api/new/video/play/get' | awk -F '|' '{print substr($1,1,19)}' | uniq -c

  1. 首先,通过tail -f 不间断查询日志(-f 表示不间断查询最新统计上来的日志)
  2. 第二,我们要锁定指定行(即,包含指定访问接口的日志),一般使用grep命令,如 grep /iptv/api/new/video/play/get ,得到一个请求对应的一行日志
  3. 截取对应列中秒级时间并打印(即:2019-07-03T11:16:23),常用的命令工具有cut和awk,这里用awk演示:
    1. 上面的日志格式是用 ‘ | ’进行分割的,所用awk的 -F参数指定分隔符为 | ,分割完后我们取第一个结果,即 $1 ;再用substr截取第1到第19位(格式:2019-07-03T11:16:21),用print打印结果为:
      2019-07-03T11:16:21
      2019-07-03T11:16:21
      2019-07-03T11:16:21
      2019-07-03T11:16:22
      2019-07-03T11:16:22
      2019-07-03T11:16:22
      2019-07-03T11:16:22
      2019-07-03T11:16:23
      2019-07-03T11:16:23
      2019-07-03T11:16:23
      2019-07-03T11:16:23

       

  4. 对结果进行去重统计,常用工具uniq,参数指定 -c:

    20 2019-07-03T11:05:22
    14 2019-07-03T11:05:23
    22 2019-07-03T11:05:24
    20 2019-07-03T11:05:25
    20 2019-07-03T11:05:26
    20 2019-07-03T11:05:27
    20 2019-07-03T11:05:28

     

命令行综述:

tail -f host-access.log | grep '/iptv/api/new/video/play/get' | awk -F '|' '{print substr($1,1,19)}' | uniq -c

    获取增量日志         |        每个请求对应的行信息           |     截取相同秒数的时间              | 去重计数

结果:

每秒的QPS值在20左右

注:使用cut工具统计的QPS,传送门

  • 5
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值