博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[转]Shell 统计PV, UV ,独立IP
阅读量:6276 次
发布时间:2019-06-22

本文共 1515 字,大约阅读时间需要 5 分钟。

  hot3.png

每天分析日志的哥们实在伤不起,经常需要给出PV,UV,独立IP等一些统计值,使用C/C++,java都可以写,过程是这样的,先读取文件,逐行扫描,把能标记的值放入数据结构中,排重得出最终结果,其实Linux本身有很强大的文本处理功能,完全可以用shell + 一些文本小工具得出结果。

 

Nngix输出的access log文件如下:

 

 

日志文件代码  
  1. 192.168.1.166 - - 119272312 [05/Nov/2011:16:06:59 +0800"GET /index.html HTTP/1.1" 200 370 "http://192.168.1.201/" "Chrome/15.0.874.106" "-"  
  2. 192.168.1.166 - - 119272312 [05/Nov/2011:16:06:59 +0800"GET /poweredby.png HTTP/1.1" 200 3034 "http://192.168.1.201/" "Chrome/15.0.874.106" "-"  
  3. 192.168.1.177 - - 1007071650 [05/Nov/2011:16:06:59 +0800"GET /favicon.ico HTTP/1.1" 404 3650 "-" "Chrome/15.0.874.106" "-"  
  4. 192.168.1.178 - - 58565468 [05/Nov/2011:16:17:40 +0800"GET / HTTP/1.1" 200 3700 "-" "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)" "-"  
  5. 192.168.1.166 - - 119272312 [05/Nov/2011:16:17:40 +0800"GET /nginx-logo.png HTTP/1.1" 200 370 "http://192.168.1.201/" "Chrome/15.0.874.106" "-"  

 

PV很简单,大致就是统计某个URL的访问次数,例如统计/index.html的访问次数

 

Shell代码  
收藏代码
  1. grep "/index.html" /var/log/nginx/access.log –c  

 

 

UV呢,我们根据用户标识(第四列) ,首先需要字符串截取,使用cut命令,以空格符号分割,-d “ ”, 再取第四列-f 4,然后这里需要排重,需要使用uniq工具,uniq速度很快,但是基于就近排重,前一个后一个一样会排重,之间间隔了不一样的,就不行了,这就必须使用sort工具来对标识符进行排序,排序后再使用uniq工具就可以达到目的,之间我们用管道符号链接, 最后再用 wc –l 输出统计数

 

比如我们统计访问了/index.html这也页面的uv:

 

 

Shell代码  
收藏代码
  1. grep "/index.html" /var/log/nginx/access.log | cut –d “ ” –f 4| sort | uniq | wc –l  
 

 

独立IP:

 

假设我们要统计整站的独立IP,那么我们不需要使用 grep来匹配具体页面,只需要使用cat输出即可:

 

 

Shell代码  
收藏代码
  1. cat /var/log/nginx/access.log | cut –d “ ” –f 1 | sort| uniq | wc -l  

 

都木有使用强大的awk,就完成了基本的统计需求:)

转载于:https://my.oschina.net/comguo/blog/146672

你可能感兴趣的文章
windows 密钥登陆 linux
查看>>
IOS 录制视频
查看>>
limit检查
查看>>
Android Things 简介
查看>>
菜鸟学Linux 第049篇笔记 DNS log, zone, view
查看>>
菜鸟学Linux 第054篇笔记 建立加密的http
查看>>
ListView 的多选模式
查看>>
宏正自动科技发表新款8/16端口双滑轨LCD KVM多电脑切换器
查看>>
解决 Missing GL version
查看>>
VS 编译链接错误集锦
查看>>
Dns域名服务器之,ACL ,转发域及子域授权的基本配置
查看>>
Android权限列表
查看>>
Linux中的网络监控命令
查看>>
360项目-07
查看>>
使用Nginx进行TCP/UDP端口转发
查看>>
读书笔记2(Effective java)
查看>>
[bat]批量替换文件内容
查看>>
Java代码到字节码——第一部分
查看>>
Linux挂载安装VMware tool
查看>>
Android中利用ViewFliper实现屏幕切换效果
查看>>