1. 本际云推荐 - 专业推荐VPS、服务器,IDC点评首页
  2. 云主机运维
  3. VPS运维

基于shell统计nginx访问日志

使用Shell和awk命令统计Nginx访问日志

作为一名Web开发者,在日常应用中,我们需要对访问信息进行收集和记录,并进行统计分析以提高、改进应用建设。通常,我们都是使用JavaScript进行数据收集,但在小型的日志情况下,使用Shell命令进行简单的分析也是一种不错的选择。接下来,以Nginx AccessLog为例,介绍如何使用Shell和awk命令来统计应用的访问信息。

基于shell统计nginx访问日志

常用Shell命令

awk是一个强大的文本分析工具,在数据分析方面比grep和sed更为强大。下面是一些常用的Shell命令:

  • 根据访问IP统计UV:UV代表独立访客(IP),是指访问收集,不同IP浏览同一页面计数仅为1,反之不同IP访问则计数加1。使用命令:awk {print $1} access.log | sort | uniq -c | wc -l
  • 根据访问URL统计PV:PV代表关键字频率衡量使用者访问网页数量。使用命令:awk {print $7} access.log | wc -l
  • 统计访问最多的URL:用于判断哪些业务比较繁忙。使用命令:awk {print $7} access.log | sort | uniq -c | sort -n -k 1 -r | more
  • 统计访问最频繁的IP:用于判断哪些IP操作最多。使用命令:awk {print $1} access.log | sort | uniq -c | sort -n -k 1 -r | more
  • 根据时间段统计查看日志:具体使用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
  • 统计当日的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
  • 获取最耗时的请求时间、URL:获取最耗时的前十个请求,如果想获取全部,则去掉“head-10”。使用命令:cat access.log | awk {print $4,$7,$NF} | awk -F " {print $1,$2,$3} | sort -k3 -rn | head -10
  • 获取每分钟的请求数量:输出到CSV格式文件中。使用命令:cat access.log  | awk {print substr($4,14,5)} | uniq -c | awk {print $2","$1} | > access.csv
  • 查看某个时间段之间的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

总结

本文主要介绍了如何使用Shell和awk命令对Nginx的访问日志进行统计分析。在使用这些命令之前,需要了解Nginx日志的格式。除了介绍了基本的IP和PV统计,本文还介绍了其他一些命令将访问信息转换成有用的数据。希望这些命令能够为大家的学习和工作带来帮助。

原创文章,作者:小编小本本,如若转载,请注明出处:https://www.benjiyun.com/yunzhujiyunwei/vps-yunwei/5854.html