51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

Nginx统计访问量、高频URL、IP等

前言 {#前言}

PV(Page View):即页面浏览量或者点击量,用户每一次对网站中每个页面访问均记录1个PV。用户对同一页面的多次访问,访问量累积。

UV(Unique Visitor):指通过互联网浏览这个网页的人,电脑称为一个访客、手机也称为一个访客,一天之内相同的客户端只能被计算一次。

IP(Internet Protocol):指独立IP访问站点的IP总数,一天内相同IP只能算一次。

VV(Visit View):指所有访客一天内访问网站的次数,当访客完成所有浏览并最终关闭网站的所有页面时变完成了一次访问,同一访客一天内可能有多次访问行为,访问次数累积。

Nginx的配置文件 {#Nginx的配置文件}

cat access.log

查看各个访问量 {#查看各个访问量}

  1. 根据访问IP统计UV

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

  2. 统计访问URL统计PV

    |-----------|----------------------------------------------------------| | 1 | awk '{print $7}' /var/log/nginx/access.log|wc -l |

  3. 查询访问最频繁的URL

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

  4. 查询访问最频繁的IP

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

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

    |-----------|----------------------------------------------------------------------------------------------| | 1 | cat /var/log/nginx/access.log| sed -n '/14\/Mar\/2017:21/,/14\/Mar\/2017:22/p'|more |

  6. 查看访问最频繁的前100个IP

    |-----------|--------------------------------------------------------------------------------------| | 1 | awk '{print $1}' access_temp.log | sort -n |uniq -c | sort -rn | head -n 100 |

  7. 统计访问最多的url 前20名

    |-----------|----------------------------------------------------------------------------------------| | 1 | cat access_temp.log |awk '{print $7}'| sort|uniq -c| sort -rn| head -20 | more |

awk介绍 {#awk介绍}

awk 是文本处理工具,默认按照空格切分,$N 是第切割后第N个,从1开始

sort命令用于将文本文件内容加以排序,-n 按照数值排,-r 按照倒序来排
sort -n 是按照第一列的数值大小进行排序,从小到大,倒序就是 sort -rn

uniq 去除重复出现的行列, -c 在每列旁边显示该行重复出现的次数。

实现脚本 {#实现脚本}

针对每天的访问信息写一个脚本,并将统计信息输出到/pv.html文件里面,只保留30天的信息。方便直接浏览此页面查看,但要限制特定IP才能访问此页面,其他IP的403

|---------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | 1 2 3 4 5 6 7 8 9 10 11 12 13 | year=`date +%Y` month=`date +%m` datedate=`date +%F` date=`date +%Y%m%d` pv=`awk '{print $7}' /xx/logs/nginx/xxx/"$year"/"$month"/"$datedate"-access.log | wc -l` ip=`awk '{print $1}' /xx/logs/nginx/xxx/"$year"/"$month"/"$datedate"-access.log | sort -n | uniq -c | wc -l` echo -e "\n$date Pv is $pv;; $date Ip is $ip.." >> /xx/xxx/pv.htm l sort -rn /xx/xxx/pv.html | sed -i '31d' /xx/xxx/pv.html | sort -r |

此外还要修改nginx配置文件

|---------------------|---------------------------------------------------------------------| | 1 2 3 4 5 6 | location = /pv.html { allow xxx.xxx.xxx.xxx; deny allow; } |

修改配置后重新加载Nginx配置文件。最后,将pv.sh加入定时任务

|-----------|--------------------| | 1 | crontab -e |

参考链接:https://blog.csdn.net/ichen820/article/details/123251403


赞(4)
未经允许不得转载:工具盒子 » Nginx统计访问量、高频URL、IP等