侧边栏壁纸
博主头像
★街角晚灯★博主等级

博观而约取 厚积而薄发

  • 累计撰写 450 篇文章
  • 累计创建 183 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

Nginx access.log日志解析

WinJay
2023-11-03 / 0 评论 / 0 点赞 / 32 阅读 / 5316 字 / 正在检测是否收录...
温馨提示:
文章发布较早,内容可能过时,阅读注意甄别。。。。

Nginx access.log日志解析

How to use Nginx as a reverse proxy for a Node.js server - LogRocket Blog

分析特定时间段的日志

使用awk和其他命令,您可以轻松地筛选出特定日期或时间段的日志。例如,以下命令将提取2023年10月1日的日志:

awk -F '[][]' '$2 >= "20/Oct/2023:00:00:00" && $2 <= "20/Oct/2023:23:59:59"' access.log

# - 此命令在方括号中正确分隔日期和时间,并且在日期和时间范围比较方面修复了问题。请尝试使用这个命令,它应该正确地提取指定日期(例如2023年10月20日)的日志条目。如果您的日志文件的日期格式略有不同,您可能需要稍微调整命令以匹配您的特定格式。如果仍然有问题,请提供日志文件的示例行以供更详细的帮助。

统计访问IP次数

awk '{print $1}' /usr/local/nginx/logs/access.log | sort | uniq -c | sort -nr

# 结果如下:
   6158 10.17.0.9
    627  172.16.0.53

image-20231020085551959

查找访问最频繁的页面

awk '{print $7}' access.log | sort | uniq -c | sort -nr

# 结果如下:
494 /authServer/project/selectAllProject?projectTenant=609073142526251008
    270 /authServer/tenant/treeSelectPermission?userId=6464574635325353
     62 /api/dataSource/type/list
     43 /authServer/tenant/treeSDXASelectPermission?userId=6464574635325353
     43 /authServer/project/selectAllProject?projectTenant=1352423
     38 /api/scheduleplan/selectSchedulePlans?planName=&planType=&pageNum=1&pageSize=20
     34 /authServer/tenant/judgeAccess?tenantId=1352423
     30 /api/group/list?pageNum=1&pageSize=10000
     ................

image-20231020085709659

查找特定HTTP状态码的请求

grep ' 404 ' access.log

# 结果如下:
10.17.0.9 - - [05/Sep/2023:15:04:45 +0800] "GET /api/fileDirectory/getDirectoryList HTTP/1.1" 404 149 "http://10.17.0.71:9001/exchange/file/file2data" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36"
10.17.0.9 - - [05/Sep/2023:18:03:22 +0800] "GET /api/fileDirectory/getDirectoryList HTTP/1.1" 404 149 "http://10.17.0.71:9001/exchange/file/file2data" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36"
10.17.0.9 - - [18/Oct/2023:17:30:30 +0800] "GET /api/fileDirectory/getDirectoryList HTTP/1.1" 404 149 "http://10.17.0.71:9001/exchange/file/file2data" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36"

image-20231020085825915

查找用户代理信息

如果您想了解访问者使用的用户代理信息(浏览器、操作系统等),可以提取用户代理字符串并分析它们:

awk -F'"' '{print $6}' access.log | sort | uniq -c | sort -nr

# 结果如下:
   5094 Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36
   1064 Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36
    627 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36 Edg/118.0.2088.57

image-20231020090425229

计算流量

如果您想知道访问日志中的总流量,您可以使用awk来提取响应大小并求和:

awk '{sum+=$10} END {print sum}' access.log

# 结果如下:
61800331

image-20231020090540515

查找特定URL的请求

:使用grep命令来查找特定URL的请求,例如查找所有访问 "/example" 的请求:

grep '/example' access.log

查找特定HTTP方法的请求

您可以使用awk和其他命令来查找特定HTTP方法(GET、POST等)的请求,例如查找所有POST请求:

awk '$6 == "POST"' access.log

分析响应时间

如果您想了解每个请求的响应时间,可以使用awk来提取响应时间信息:

awk '{print $10}' access.log

查找异常请求

使用grep和正则表达式来查找异常请求,例如查找包含特定关键字的请求:

grep -E '404|50[0-9]' access.log

计算访问频率

使用awk和其他命令来计算每小时或每分钟的访问频率,以了解高峰时段:

bashCopy code
awk '{print $4}' access.log | cut -d: -f2 | sort | uniq -c

查找特定HTTP头信息

如果您需要提取请求或响应中的特定HTTP头信息,可以使用awk和正则表达式:

awk '{if ($0 ~ /User-Agent/) print $0}' access.log

这些命令和技巧可以帮助您更深入地分析Nginx日志文件,根据您的需求选择适当的命令。请根据日志文件的具体格式和要解决的问题进行调整。

0
  1. 支付宝打赏

    qrcode alipay
  2. 微信打赏

    qrcode weixin

评论区