首页 > 系统相关 >shell脚本-Nginx访问日志分析

shell脚本-Nginx访问日志分析

时间:2023-07-17 21:23:21浏览次数:32  
标签:shell 17 70.1 nginx 访问 Nginx 537.36 日志 114.0

shell脚本-Nginx访问日志分析

1.原理

可以通过/usr/local/nginx/logs/access.log 文件-查看nginx的日志

[root@localhost scripts]# tail -f /usr/local/nginx/logs/access.log  
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" "-"
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命令来取出所需要的数据

[root@localhost scripts]# awk '{print $0}' /usr/local/nginx/logs/access.log
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" "-"
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" "-"

[root@localhost scripts]# awk '{print $1}' /usr/local/nginx/logs/access.log
192.168.70.1
192.168.70.1

2.shell脚本

Nginx访问日志分析脚本

#!/bin/bash
# 1.访问最多的IP
# 2.根据时间段来访问最多的IP
# 3.访问量超过2次的页面
# 4.访问页面状态码数量

LOG_FILE=$1
echo "统计访问最多的10个IP"
awk '{a[$1]++}END{print "UV:",length(a);for(v in a)print a[v] v}' $LOG_FILE |  sort -k1 -nr | head -10
echo "----------------------------------------"

echo "统计一个时间段访问最多的10个IP"
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
echo "----------------------------------------"

echo "统计访问量超过2次的页面"
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
echo "----------------------------------------"

echo "统计访问页面状态码数量"
awk '{a[$7" "$8]++}END{for(v in a)print a[v],v}' $LOG_FILE | sort -k1 -nr
[root@localhost scripts]# bash 13.sh /usr/local/nginx/logs/access.log 
统计访问最多的10个IP
2192.168.70.1
UV: 1
----------------------------------------
统计一个时间段访问最多的10个IP
1192.168.70.1
UV: 1
----------------------------------------
统计访问量超过2次的页面
PV: 1
----------------------------------------
统计访问页面状态码数量
2 HTTP/1.1" 200

标签:shell,17,70.1,nginx,访问,Nginx,537.36,日志,114.0
From: https://www.cnblogs.com/xuxuxuxuxu/p/17561246.html

相关文章

  • 安装finalshell
    finalshell的本质其实就是远程连接linux的服务器安装地址:http://www.hostbuf.com/t/988.html下载好安装包后一路点击下一步即可 ......
  • 比赛日志(模拟赛)
    2023.7.15ABC310主要是翻译的问题,读题读了很久。A了C题就结束了。2023.7.15CF885Div.2还是翻译的问题,读题读了很久。C题有点难,这场比赛不好。题面废话贼几把多。赛后解决了翻译问题。......
  • Python 运行 shell 命令的一些方法
    哈喽大家好,我是咸鱼我们知道,python在自动化领域中被广泛应用,可以很好地自动化处理一些任务就比如编写Python脚本自动化执行重复性的任务,如文件处理、数据处理、系统管理等需要运行其他程序或者与操作系统交互的任务那么今天我们来看一下在python中如何运行shell命令来与......
  • python日志调试
    1.日志logging.debug():最低级别,用于小细节,通常用于在诊断问题时,才会关心谢谢消息logging.info():用于记录程序中一般事件的信息,或确认一切工作正常logging.warning():用于表示可能的问题,它不会阻止程序的工作,但将来可能会logging.error():用于记录错误,它导致程序做某事失败logg......
  • shell壳牌机油 摩托车使用感受
    就是这款5w-30(港版),a3/b4,粘度略微有点高了,11.8保护性强了,1500公里左右换下,机油并没有太脏的感觉,觉得可以2000+以上随便用。a3/b4认证的油踏板车是肯定能用的。事实证明确实很丝滑。......
  • Oracle重做、归档日志
    日志文件oracle日志文件分为两种:重做日志文件(redo),或者称为“在线重做日志”归档日志文件(arch),或者称为“归档重做日志”在线重做日志文件全称:OnlineRedoLogFile。用来记录数据发生事务transaction的信息以及Oracle内部行为引起的数据库变化信息。在数据库恢复时,可以从......
  • Oracle密码文件、警告日志文件、跟踪文件
    密码文件oracle用于验证sysdba权限的二进制文件。警告日志文件警告日志文件是用来记录oracle数据库系统在运行期间的各种信息:oracle实例打开和关闭、建立表空间、增加数据文件等记录。警告日志文件名一般为:alert_<ORACLE_SID>.log。[oracle@swq~]$find/data-name"alert......
  • mysql 查询存储过程调用日志
    如何实现MySQL查询存储过程调用日志作为一名经验丰富的开发者,我将在下面的文章中向你介绍如何实现MySQL查询存储过程调用日志。首先,让我们来了解一下整个流程,然后逐步介绍每一步需要做的事情和相应的代码。流程概述下面是实现MySQL查询存储过程调用日志的整体流程:步骤......
  • spdlog日志库源码:CMake构建项目
    目录spdlog项目构成CMake构建根目录CMakeLists.txtcmake版本要求include专用cmake文件设置默认build类型编译器配置判断当前项目是否为spdlog选项开关spdlog项目构成Github源码:https://github.com/gabime/spdlogspdlog项目采用CMake构建,其一级目录结构如下$tree-L1.├─......
  • shell 按列切割文件
    #!/usr/bin/envbashdes_path=/home/zcy/tempsrc_path=/mnt/cnic_data/SRA_AI_DATA/tools_files/myselfmouse_csv='GSM5594530_count.csvGSM5594497_count.csv'step=30000forfnamein$mouse_csvdoecho$fnamecol_num=`awk-F','......