美文网首页
使用shell命令从请求日志中分析pv、uv

使用shell命令从请求日志中分析pv、uv

作者: trustjs | 来源:发表于2019-01-11 11:39 被阅读12次

在日常工作中,我们经常要统计用户的访问量。
对于pv、uv的统计方式有很多,一般就是前端主动埋点,然后去相关的系统里面查看。
但有时候,前端可能忘记埋点,或者一些其它原因,导致拿不到pv、uv。这个时候,我们可以通过用户的请求日志中来分析出pv、uv。

准备

假如我们有如下日志,其中user_id为用户唯一id,那么就可以通过这个字段来统计UV。其实我们的需求就是匹配出每行日志中的user_id值,然后进行排序,去重,就可以拿到数量了。最简单的办法是通过正则匹配,在这篇文章里我们另辟蹊径。
⚠️注意:如果生产环境日志量比较大,可以先把日志下载到本地再进行分析,避免在生产环境执行命令导致线上机器卡死
out.log

2019-01-07 23:56 +08:00: 200 'GET' '/v/1.0' 'serial=12312&version=2050006&ad=1231&poiId=162912563&poiName=%E5%9B%9B%E5%AD%A3%E5%A4%A7%E7%A2%97%E7%B2%A5&user_id=161991&source=android&role=1&f=android 'SPEND:' 0
2019-01-07 23:57 +08:00: 200 'GET' '/v/1.0' 'serial=32332&version=2050006&ad=1231&poiId=162912563&poiName=%E5%9B%9B%E5%AD%A3%E5%A4%A7%E7%A2%97%E7%B2%A5&user_id=161992&source=android&role=1&f=android 'SPEND:' 0
2019-01-07 23:58 +08:00: 200 'GET' '/v/1.0' 'serial=wrwer&version=2050006&ad=1231&poiId=162912563&poiName=%E5%9B%9B%E5%AD%A3%E5%A4%A7%E7%A2%97%E7%B2%A5&user_id=161993&source=android&role=1&f=android 'SPEND:' 0
2019-01-07 23:59 +08:00: 200 'GET' '/v/1.0' 'serial=qweeq&version=2050006&ad=1231&poiId=162912563&poiName=%E5%9B%9B%E5%AD%A3%E5%A4%A7%E7%A2%97%E7%B2%A5&user_id=161993&source=android&role=1&f=android 'SPEND:' 0

Grep 命令

命令格式:grep [option] pattern file

  • 第一步: 过了出out.log中对应接口的日志
    代码如下,/v/1.0 是我的日志中http请求的某个path,我想统计每天还有多少用户在访问这个path
grep /v/1.0 out.log
  • 第二步:从上面的结果中过滤出2019-01-07这天的数据,我们使用管道 | 符操作.
grep /v/1.0 out.log | grep 2019-01-07

awk 命令

  • 第三步:使用awk -F 将每行日志以固定的字符串分割成多段, 类似于javascript中的.split 方法。在本示例中,以user_id=分割,'{print $2}' 表示打印出第二段
grep /v/1.0 out.log | grep 2019-01-07 | awk -F "user_id=" '{print $2}'

结果如下

161991&source=android&role=1&f=android 'SPEND:' 0
161992&source=android&role=1&f=android 'SPEND:' 0
161993&source=android&role=1&f=android 'SPEND:' 0
161993&source=android&role=1&f=android 'SPEND:' 0
  • 第四步:再使用awk -F按&符号分割日志,然后取第一个数据,也就是user_id的值。
grep /v/1.0 1.log | grep 2019-01-07 | awk -F "user_id=" '{print $2}' | awk -F "&" '{print $1}'

结果

161991
161992
161993
161993
  • 最后,也就是完整的命令,进行排序、去重,统计数量。
grep /v/1.0 1.log | grep 2019-01-07 | awk -F "user_id=" '{print $2}' | awk -F "&" '{print $1}' | sort | uniq | wc -l

得到结果 3,即是我们想要的数据。

相关文章

  • 使用shell命令从请求日志中分析pv、uv

    在日常工作中,我们经常要统计用户的访问量。对于pv、uv的统计方式有很多,一般就是前端主动埋点,然后去相关的系统里...

  • python统计pv/uv

    代码实现 参考资料 从Nginx的access日志统计PV、UV和热点资源

  • access 日志分析

    log日志分析,Nginx 0.8.5版本access.log日志分析shell命令 大 | 中 | 小 [ 2...

  • 统计PV、UV

    使用Hive日常工作基本上都会碰到统计PV、UV的需求,有如下日志表格式表: 统计一段时间内的PV、UV可以用如下...

  • 结合Hive、Sqoop统计日志pv和uv

    分析 数据源格式 需求分析现在每天中的每一个小时,都有一个日志文件,想要统计每天内每个时段的PV和UV(根据gui...

  • 从nginx access日志中,用shell统计日pv和uv

    声明: 此篇文章是摘抄,并不是原创,在此做个备份,方便自己以后查阅。摘抄地址: 通过nginx日志利用shell统...

  • 淘宝用户的行为数据python

    一、数据来源 来源:天池数据—淘宝用户的行为数据 数据列字段介绍: 二、分析目标 总PV、总UV、PV与UV的关系...

  • 【产品】20分钟课程学习

    学习产品改进时使用的AB测试的方法和原则:多方案、单变量、有标准。 学习运营策划中的流量数据分析,学习UV,PV,...

  • 监视dd的进度

    方法1:通过使用 pv 安装pv并放在仅输入/输出dd命令之间。 注意:启动后无法使用dd。 从包装说明中[htt...

  • Python免秘钥ssh远程登录执行命令

    最近项目有一个小需求,在本地python脚本中,从远程服务端拿nginx的accesslog来分析pv和uv。 根...

网友评论

      本文标题:使用shell命令从请求日志中分析pv、uv

      本文链接:https://www.haomeiwen.com/subject/xxitdqtx.html