资讯专栏INFORMATION COLUMN

基于shell统计nginx访问日志

IT那活儿 / 1431人阅读
基于shell统计nginx访问日志

在日常的web应用使用中,通常会对访问信息进行收集记录,进行统计分析,以提高和改进应用建设。目前主流的数据收集方式基本都是基于javascript。当然,在日志比较小的情况下,也可以通过shell命令做一些简单的分析。下面以Nginx的AccessLog为例,介绍通过shell的awk命令统计应用的访问信息。


[
awk介绍
]


awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在对数据分析生成报告时,显得尤为强大。简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。


使用方法:awk{pattern + action} {filenames}


[
常用利用shell统计日志命令
]


1、根据访问IP统计UV

IP:独立IP数,是指独立浏览了页面的不同IP,即统计不同的IP浏览用户数量。同一IP不管访问了几个页面,独立IP数均为1;不同的IP浏览页面,计数会加1。


UV(UniqueVisitor):独立访客,统计访问某站点的用户数;


awk {print $1} access.log | sort | uniq -c | wc -l


2、根据访问URL统计PV

PV(PageView):访问量,即页面浏览量或点击量,衡量用户访问的网页数量;在一定统计周期内用户每打开或刷新一个页面就记录1次,多次打开或刷新同一页面则浏览量累计。


awk {print $7} access.log | wc -l


3、统计访问最多的URL

根据访问最多的URL来判断哪些业务比较繁忙;


awk {print $7} access.log | sort | uniq -c | sort -n -k 1 -r | more


4、统计访问最频繁的IP

根据访问IP来判断哪些IP操作最多;


awk {print $1} access.log | sort | uniq -c | sort -n -k 1 -r | more


5、根据时间段统计查看日志

具体使用sed或者grep都可以,主要是编写正则表达式;


sed:

cat  access.log| sed -n /1/Sep/2020:[01-23]/p | more


grep:

grep 1/Sep/2020:[01-23] access.log |more


6、统计当日的pv和uv

因为是统计当日的pv和uv,所以在编写命令之前了解一下nginx的日志格式。日志的默认格式如下:

默认输出的月份使用英文简写。


pv:

cataccess.log | sed -n /`date "+%d/%b/%Y"`/p | awk {print $7} | sort | wc -l


uv:

cataccess.log | sed -n /`date "+%d/%b/%Y"`/p |awk {print $1} | sort|uniq -c | wc -l


如果使用以上这两个命令发现统计不出来任何数据时,就要检查一下,系统的语言变量LANG是否配置成中文,如果是则需要配置成英文。


使用以下命令配置成英文:

exportLANG="en_US.UTF-8"

这时在执行pv和uv命令就可以统计出来了。


7、获取最耗时的请求时间、url

下面是获取最耗时的前十个请求,如果想获取全部则去掉:head-10

cat access.log | awk {print $4,$7,$NF} | awk -F " {print $1,$2,$3} | sort -k3 -rn | head -10


8、获取每分钟的请求数量

cat access.log  | awk {print substr($4,14,5)} | uniq -c | awk {print $2","$1} 

可以输出到csv格式文件中

cat access.log  | awk {print substr($4,14,5)} | uniq -c | awk {print $2","$1} > access.csv


9、查看某个时间段之间的ip访问个数

例如查看10点到19点的访问ip数


grep "2020:1[0-9]" access.log | awk {ips[$1]+=1} END{for(ip in ips) print ips[ip],ip} | sort -nr | wc -l


查看10点到19点之间的ip访问数>=200的ip


grep 2020:1[0-19] access.log | awk {ips[$1]+=1}END{for(ip in ips) if(ips[ip]>=200) print ips[ip],ip} | sort -nr


[
总结
]


上面介绍了关于Nginx日志统计分析的一些常用命令,包括IP相关统计、页面访问统计、性能分析等相关命令。Nginx的统计分析命令还有很多,这里只是抛砖引玉,希望对大家的学习或者工作能带来一定的帮助。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/130145.html

相关文章

  • shell在手分析服务器日志不愁?

    摘要:自己的小网站跑在阿里云的上面偶尔也去分析分析自己网站服务器日志看看网站的访问量。然后统计最终返回的数字就是当前所有端口的已建立连接的总数。 自己的小网站跑在阿里云的ECS上面,偶尔也去分析分析自己网站服务器日志,看看网站的访问量。看看有没有黑阔搞破坏!于是收集,整理一些服务器日志分析命令,大家可以试试! 1、查看有多少个IP访问: awk {print $1} log_file|sor...

    fyber 评论0 收藏0
  • 十分钟解决爬虫问题!超轻量级反爬虫方案

    摘要:爬虫和反爬虫日益成为每家公司的标配系统。本文将描述一种尽量简单的反爬虫方案,可以在十几分钟内解决部分简单的爬虫问题,缓解恶意攻击或者是系统超负荷运行的状况至于复杂的爬虫以及更精准的防御,需要另外讨论。 showImg(https://segmentfault.com/img/bVDYV4?w=800&h=568); 爬虫和反爬虫日益成为每家公司的标配系统。爬虫在情报获取、虚假流量、动态...

    LeanCloud 评论0 收藏0
  • BMPlatform:一个在mac上部署nginx,tornado,django,php以及mysq

    摘要:项目地址部署的方案都在脚本里头,说明如下使用方法版本简单介绍是一个利用转发操作系统中部署的基于框架和框架以及一个的服务。个服务是部署在环境中,通过和进行发送和接收消息。在前台以及整个主要利用去操作。 项目地址:https://github.com/yuyangit/BMProject 部署的方案都在脚本里头,说明如下: BMPlatform使用方法 版本 v0.2 1.简单介绍...

    ernest.wang 评论0 收藏0

发表评论

0条评论

IT那活儿

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<