翼度科技»论坛 云主机 LINUX 查看内容

shell脚本-Nginx访问日志分析

6

主题

6

帖子

18

积分

新手上路

Rank: 1

积分
18
shell脚本-Nginx访问日志分析

1.原理

可以通过/usr/local/nginx/logs/access.log 文件-查看nginx的日志
  1. [root@localhost scripts]# tail -f /usr/local/nginx/logs/access.log  
  2. 192.168.70.1 - [17/Jul/2023:17:35:21 +0800] "GET / HTTP/1.1" 200 173833 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36 Edg/114.0.1823.82" "-"
  3. 192.168.70.1 - [17/Jul/2023:20:53:37 +0800] "GET / HTTP/1.1" 200 173833 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36 Edg/114.0.1823.82" "-"
复制代码
/usr/local/nginx/conf/nginx.conf 文件-定义了日志输出的格式

可以通过awk命令来取出所需要的数据
  1. [root@localhost scripts]# awk '{print $0}' /usr/local/nginx/logs/access.log
  2. 192.168.70.1 - [17/Jul/2023:17:35:21 +0800] "GET / HTTP/1.1" 200 173833 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36 Edg/114.0.1823.82" "-"
  3. 192.168.70.1 - [17/Jul/2023:20:53:37 +0800] "GET / HTTP/1.1" 200 173833 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36 Edg/114.0.1823.82" "-"
  4. [root@localhost scripts]# awk '{print $1}' /usr/local/nginx/logs/access.log
  5. 192.168.70.1
  6. 192.168.70.1
复制代码
2.shell脚本

Nginx访问日志分析脚本
  1. #!/bin/bash
  2. # 1.访问最多的IP
  3. # 2.根据时间段来访问最多的IP
  4. # 3.访问量超过2次的页面
  5. # 4.访问页面状态码数量
  6. LOG_FILE=$1
  7. echo "统计访问最多的10个IP"
  8. awk '{a[$1]++}END{print "UV:",length(a);for(v in a)print a[v] v}' $LOG_FILE |  sort -k1 -nr | head -10
  9. echo "----------------------------------------"
  10. echo "统计一个时间段访问最多的10个IP"
  11. awk '$3>="[16/Jul/2023:17:35:21" && $3<="[17/Jul/2023:18:00:00"{a[$1]++}END{print "UV:",length(a);for(v in a)print a[v] v}' $LOG_FILE |  sort -k1 -nr | head -10
  12. echo "----------------------------------------"
  13. echo "统计访问量超过2次的页面"
  14. awk '{a[$7]++}END{print "PV:",length(a);for(v in a){if(a[v]>2)print a[v],v}}' $LOG_FILE | sort -k1 -nr
  15. echo "----------------------------------------"
  16. echo "统计访问页面状态码数量"
  17. awk '{a[$7" "$8]++}END{for(v in a)print a[v],v}' $LOG_FILE | sort -k1 -nr
复制代码
  1. [root@localhost scripts]# bash 13.sh /usr/local/nginx/logs/access.log
  2. 统计访问最多的10个IP
  3. 2192.168.70.1
  4. UV: 1
  5. ----------------------------------------
  6. 统计一个时间段访问最多的10个IP
  7. 1192.168.70.1
  8. UV: 1
  9. ----------------------------------------
  10. 统计访问量超过2次的页面
  11. PV: 1
  12. ----------------------------------------
  13. 统计访问页面状态码数量
  14. 2 HTTP/1.1" 200
复制代码

来源:https://www.cnblogs.com/xuxuxuxuxu/p/17561246.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
来自手机

举报 回复 使用道具