当前位置:首页 > 技术文章 > 正文内容

nginx系列:常用利用shell统计日志

arlanguage3个月前 (01-23)技术文章26

0x01:根据访问IP统计UV

  • UV(Unique Visitor)独立访客,统计访问某站点的用户数;
  • IP(Internet Protocol)独立IP数,是指独立的浏览了页面的不同IP,即统计不同的IP浏览用户数量。同一IP不管访问了几个页面,独立IP数均为1;不同的IP浏览页面,计数会加1。IP是基于用户广域网IP地址来区分不同的访问者的,所以多个用户(多个局域网IP)在同一个路由器(同一个广域网IP)内上网,可能被记录为一个独立IP访问者。另外如果用户不断更换IP,则有可能被多次统计。
awk '{print $1}' access.log | sort | uniq -c | wc -l


0x02: 根据访问URL统计PV

  • PV(Page View)访问量, 即页面浏览量或点击量,衡量网站用户访问的网页数量;在一定统计周期内用户每打开或刷新一个页面就记录1次,多次打开或刷新同一页面则浏览量累计。
awk '{print $7}' access.log | wc -l


0x03: 统计访问最多的URL

根据访问最多的URL来判断哪些业务比较繁忙;也跟根据情况判断是否该业务是否有黑客攻击。

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

加一个more命令主要防止URL一屏幕显示不下的情况。


0x04:统计访问最频繁的IP

根据访问IP来判断哪些IP操作最多;也可以根据情况判断该IP是不是疑似攻击IP。

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

加一个more命令主要防止IP一屏幕显示不下的情况。


0x05:根据时间段统计查看日志

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

sed:

cat  access.log | sed -n '/29\/Aug\/2020:[01-23]/p' | more

grep:

 grep '29\/Aug\/2020:[01-23]' access.log | more


0x06:统计当日的的pv和uv

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

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

pv:

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

uv:

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

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


使用以下命令配置成英文

export LANG="en_US.UTF-8"

这时在执行pv和uv命令应该就可以统计出来了,如下图


0x07:获取最耗时的请求时间、url、耗时

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

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


0x08:获取每分钟的请求数量

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


0x09: 查看某个时间段之间的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

扫描二维码推送至手机访问。

版权声明:本文由AR编程网发布,如需转载请注明出处。

本文链接:http://www.arlanguage.com/post/1081.html

分享给朋友:

“nginx系列:常用利用shell统计日志” 的相关文章

16《Nginx 入门教程》Nginx防盗链配置

百度百科的解释如下:盗链是指服务提供商自己不提供服务的内容,通过技术手段绕过其它有利益的最终用户界面(如广告),直接在自己的网站上向最终用户提供其它服务提供商的服务内容,骗取最终用户的浏览和点击率。受益者不提供资源或提供很少的资源,而真正的服务提供商却得不到任何的收益。盗链在如今的互联网世界无处不在...

2022年从零开始,用一篇博客掌握 nginx 的初级配置

当 nginx 安装之后,默认的配置如下所示(数据来源为宝塔自动生成),本篇博客重点介绍的是配置虚拟机相关内容,即 server 块配置项。 server 块的指令主要用于设置主机和端口, location 块用于匹配网页路径,一个 http 块可以包含多个 server 。基础配置server {...

彻底搞懂 Nginx 的五大应用场景 彻底搞懂 nginx 的五大应用场景是什么

— 1 —HPPTNginx本身也是一个静态资源的服务器,当只有静态资源的时候,就可以使用Nginx来做服务器,如果一个网站只是静态页面的话,那么就可以通过这种方式来实现部署。1、首先在文档根目录Docroot(/usr/local/var/www)下创建html目录,然后在html中放一个test...

NGINX配置跨域CORS支持 nginx配置跨域请求

NGINX配置跨域CORS支持这两天在搞酷瓜云网课的 app,采用 uni-app 做全端支持,现学现卖,目前算是入门了。在做 H5 的时候难免会跨域请求后端 API,虽然用 HBuilder 内置的浏览器不会有跨域问题(这个应该是做了内部处理),但是那个内置浏览器真尼妈坑爹,过一会就会卡死,导致...

只想简单操作 Kubernetes 资源?用 Go 一招搞定,快试试 kom!

当你在使用代码操作k8s时,有没有觉得总要写很多代码,才能获取到一个资源,并且要处理底层的集群连接、client等一系列的东西。那么有没有一种简单的办法,毕竟我只是想读取一下集群内的Pod或者什么其他资源而已啊。为了解决这个问题,我们使用 kom https://github.com/weibaoh...

推荐一款 Nginx 可视化配置神器

Nginx 是前后端开发工程师必须掌握的神器。该神器有很多使用场景,比如反向代理、负载均衡、动静分离、跨域等等。把 Nginx 下载下来,打开 conf 文件夹的 nginx.conf 文件,Nginx 服务器的基础配置和默认的配置都存放于此。配置是让程序员非常头疼的事,比如 Java 后端框架...