python代码分析nginx访问日志
本人网站使用内网穿透分析结结果IP都是内网地址。 统计结果 总访问量641805独立IP数14最活跃IP192.168.1.29访问492948次访问高峰时段16时59997次图表已保存至C:/Users/czliu/Downloads/nginx_analysis.png代码importreimportpandasaspdimportmatplotlib.pyplotaspltfromcollectionsimportCounterfromdatetimeimportdatetime# 配置项你的日志路径 LOG_PATHrC:\Users\czliu\Downloads\access.log# # 辅助函数清理字符串中的无效字符defclean_string(s):ifisinstance(s,str):# 移除非打印字符和二进制数据return.join(cforcinsifc.isprintable())returns# 1. Nginx日志正则表达式通用格式# 匹配格式IP - - [时间] 请求 状态码 大小 来源 UAlog_patternre.compile(r(\d\.\d\.\d\.\d)\s-\s-\s\[(.*?)\]\s(.*?)\s(\d)\s(\d|-))# 2. 解析日志parsed_data[]withopen(LOG_PATH,r,encodingutf-8,errorsignore)asf:forlineinf:# 清理日志行中的无效字符clean_lineclean_string(line)matchlog_pattern.match(clean_line.strip())ifmatch:ip,time_str,request,status,sizematch.groups()# 清理各个字段ipclean_string(ip)time_strclean_string(time_str)requestclean_string(request)statusclean_string(status)sizeclean_string(size)# 处理时间dtNonetry:# 日志时间格式03/Jan/2025:12:34:56 0800dtdatetime.strptime(time_str,%d/%b/%Y:%H:%M:%S %z)hourdt.hour# 按小时统计except:hour-1# 提取请求方法和URLreq_partsrequest.split()methodreq_parts[0]iflen(req_parts)0elseUNKNOWNurlreq_parts[1]iflen(req_parts)1else/# 再次清理方法和URLmethodclean_string(method)urlclean_string(url)parsed_data.append({ip:ip,time:dt,hour:hour,method:method,url:url,status:int(status),size:int(size)ifsize!-else0})# 转为DataFrame方便分析dfpd.DataFrame(parsed_data)print(f日志解析完成总访问量{len(df)}条)# 清理数据iflen(df)0:df[ip]df[ip].apply(clean_string)df[method]df[method].apply(clean_string)df[url]df[url].apply(clean_string)# 3. 分析核心数据# 3.1 访问量TOP10 IPip_top10Counter(df[ip]).most_common(10)# 3.2 按小时访问趋势hour_countsdf[df[hour]!-1][hour].value_counts().sort_index()# 3.3 HTTP状态码分布status_countsdf[status].value_counts()# 3.4 请求方法分布method_countsdf[method].value_counts()# 4. 绘制综合图表2x2子图iflen(df)0:plt.rcParams[font.sans-serif][SimHei]# 解决中文乱码plt.rcParams[axes.unicode_minus]Falseplt.rcParams[text.usetex]False# 禁用LaTeXplt.rcParams[text.parse_math]False# 禁用mathtext解析防止反斜杠被误解析fig,((ax1,ax2),(ax3,ax4))plt.subplots(2,2,figsize(16,10))fig.suptitle(Nginx访问日志分析报告,fontsize18,fontweightbold)# 子图1TOP10访问IPifip_top10:# 清理IP地址中的特殊字符并限制长度clean_ips[]forip,_inip_top10:clean_ipclean_string(ip)# 限制IP显示长度避免过长iflen(clean_ip)15:clean_ipclean_ip[:15]...clean_ips.append(clean_ip)ax1.barh(clean_ips,[cntfor_,cntinip_top10],color#1f77b4)ax1.set_title(TOP10 访问IP,fontsize14)ax1.set_xlabel(访问次数)else:ax1.set_title(TOP10 访问IP,fontsize14)ax1.text(0.5,0.5,无数据,hacenter,vacenter)# 子图2小时访问趋势ifnothour_counts.empty:ax2.plot(hour_counts.index,hour_counts.values,markero,color#ff7f0e,linewidth2)ax2.set_title(24小时访问趋势,fontsize14)ax2.set_xlabel(小时)ax2.set_ylabel(访问量)ax2.grid(alpha0.3)else:ax2.set_title(24小时访问趋势,fontsize14)ax2.text(0.5,0.5,无数据,hacenter,vacenter)# 子图3HTTP状态码分布ifnotstatus_counts.empty:colors[#2ca02c,#d62728,#9467bd,#8c564b]# 确保标签是字符串且干净labels[str(label)forlabelinstatus_counts.index]ax3.pie(status_counts.values,labelslabels,autopct%1.1f%%,colorscolors[:len(status_counts)])ax3.set_title(HTTP状态码分布,fontsize14)else:ax3.set_title(HTTP状态码分布,fontsize14)ax3.text(0.5,0.5,无数据,hacenter,vacenter)# 子图4请求方法分布ifnotmethod_counts.empty:# 清理请求方法中的特殊字符并过滤掉无效方法clean_methods[]clean_values[]formethod,cntinmethod_counts.items():clean_methodclean_string(method)# 只保留有效的HTTP方法ifclean_methodin[GET,POST,PUT,DELETE,HEAD,OPTIONS]orcnt10:clean_methods.append(clean_method)clean_values.append(cnt)ifclean_methods:ax4.bar(clean_methods,clean_values,color#e377c2)ax4.set_title(请求方法分布,fontsize14)ax4.set_ylabel(次数)else:ax4.set_title(请求方法分布,fontsize14)ax4.text(0.5,0.5,无数据,hacenter,vacenter)else:ax4.set_title(请求方法分布,fontsize14)ax4.text(0.5,0.5,无数据,hacenter,vacenter)plt.tight_layout()plt.savefig(rC:\Users\czliu\Downloads\nginx_analysis.png,dpi300,bbox_inchestight)plt.close()# 关闭图表避免在非交互式环境中出现问题# 5. 打印关键统计print(\n 统计结果 )print(f总访问量{len(df)})print(f独立IP数{df[ip].nunique()})ifip_top10:print(f最活跃IP{ip_top10[0][0]}访问{ip_top10[0][1]}次)else:print(最活跃IP无数据)ifnothour_counts.empty:print(f访问高峰时段{hour_counts.idxmax()}时{hour_counts.max()}次)else:print(访问高峰时段无数据)iflen(df)0:print(f图表已保存至C:/Users/czliu/Downloads/nginx_analysis.png)else:print(图表无数据未生成)

相关新闻

智能驾驶(L2)相关法规以及标准

智能驾驶(L2)相关法规以及标准

类型名称说明实施日期法规中国智能网联汽车技术规程(C-ICAP)旨在建立高标准、公平和客观的车辆智能网联性能评价方法,以促进车辆智能网联技术的发展,追求更高的智能化、网联化发展理念。给消费者提供新车上市车辆的智能网联性能信…

2026/7/24 7:40:47阅读更多 →
《如何搭建:“数字人宣讲视频 + Flask 展示页”的演示系统》

《如何搭建:“数字人宣讲视频 + Flask 展示页”的演示系统》

本文记录一次“数字人宣讲视频 Flask 展示页”的搭建过程。项目主题是面向青年大学习场景做一个名为“红厅智播”的演示系统:先在魔珐星云控制台配置数字人形象、音色和场景,再整理 SSML 宣讲脚本生成视频,最后用一个简单的 Flask 页面把视频…

2026/7/24 7:42:01阅读更多 →
2026年语音识别准确率低推荐3个专业挑选标准帮你选对工具

2026年语音识别准确率低推荐3个专业挑选标准帮你选对工具

2026年不少效率工具爱好者反馈,用过很多语音识别工具,还是经常遇到准确率低、错漏多的问题,转写完还要花几小时校对,没法直接用稿。这里给你3个专业挑选标准,还整理了符合标准的工具清单,帮你快速选到适配需…

2026/7/24 7:40:06阅读更多 →
RAG技术优化实战:提升检索增强生成效率与准确性

RAG技术优化实战:提升检索增强生成效率与准确性

1. RAG技术概述与优化价值检索增强生成(Retrieval-Augmented Generation)作为当前大模型应用落地的关键技术路径,正在重塑知识密集型任务的解决方案。我在实际项目中发现,一个未经优化的基础RAG系统往往只能达到预期效果的30%-40%…

2026/7/24 7:41:50阅读更多 →
AI辅助学术专著写作:提升效率与质量的关键技术

AI辅助学术专著写作:提升效率与质量的关键技术

1. 学术专著创作的痛点与AI解决方案作为一名在学术出版领域深耕多年的研究者,我深刻理解专著创作过程中的种种挑战。传统专著写作往往需要耗费研究者数月甚至数年的时间,从资料收集、文献综述到内容撰写,每个环节都充满艰辛。特别是在当今快节…

2026/7/24 7:41:50阅读更多 →
电商智能客服提示词优化实战:从架构设计到效果提升

电商智能客服提示词优化实战:从架构设计到效果提升

1. 案例背景与核心价值这个案例来自某电商平台的智能客服系统升级项目。去年双十一大促期间,他们的传统关键词匹配式客服系统崩溃率高达37%,平均响应时间超过8分钟。技术团队引入基于大语言模型的智能客服后,通过优化提示词设计,将…

2026/7/24 7:41:50阅读更多 →
Phasor Attention与MRSNorm:解决视觉任务中相位信息丢失的注意力机制

Phasor Attention与MRSNorm:解决视觉任务中相位信息丢失的注意力机制

1. 先搞清楚 Phasor Attention 到底解决了什么实际问题如果你在图像处理或计算机视觉领域做过模型优化,大概率遇到过这种情况:模型层数加深后,特征表示的空间结构信息容易丢失,导致细节恢复能力下降。特别是做超分辨率、图像修复或…

2026/7/24 7:41:50阅读更多 →
基于Win32线程池的C++高性能封装:设计、实现与优化实践

基于Win32线程池的C++高性能封装:设计、实现与优化实践

1. 项目概述:为什么我们需要改进Win32线程池?如果你在Windows平台上用C写过稍微复杂点的程序,尤其是涉及到后台任务处理、I/O密集型操作或者需要快速响应用户界面的应用,那你大概率已经和线程池打过交道了。Win32 API自Windows 20…

2026/7/24 7:41:50阅读更多 →
你被 AI 绘画拿捏了吗?好玩背后,版权、就业两大坑一定要清楚

你被 AI 绘画拿捏了吗?好玩背后,版权、就业两大坑一定要清楚

AI 绘画真的征服你了吗?有人随手出大片,画师却彻夜焦虑 刷短视频、朋友圈总能刷到惊艳图片:古风美人、治愈风景、科幻大片、动漫人设,一问才知道,全部是 AI 几分钟生成的。 不用买手绘板,不用学几年素描上色,只需要输入一段文字,30 秒自动出多张成品,免费工具遍地都是…

2026/7/24 7:39:50阅读更多 →
Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/24 0:58:53阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/24 0:58:53阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/24 0:58:53阅读更多 →
我的编程之路:第一篇博客

我的编程之路:第一篇博客

大家好,我是一名编程初学者,同时这也是我编程学习之路上的第一篇博客。在这里,我想要向大家介绍我的一些想法和规划。a.自我介绍我是一个刚刚接触编程的新手,目前在学习c语言,我对编程世界充满了强烈的好奇。当然&…

2026/7/24 0:00:06阅读更多 →
【LeetCode 54】螺旋矩阵

【LeetCode 54】螺旋矩阵

问题描述: 解法: 1、模拟(参考自【LeetCode 54】螺旋矩阵-CSDN博客) int *spiralOrder(int **matrix, int matrixSize, int *matrixColSize, int *returnSize) {static const int dirs[4][2] {{0, 1}, {1, 0}, {0, -1}, {-1, …

2026/7/24 0:00:06阅读更多 →
2026 WAIC:模型隐身、智能体疯野,厂商竞赛聚焦办公场景与商业闭环

2026 WAIC:模型隐身、智能体疯野,厂商竞赛聚焦办公场景与商业闭环

知春路不相信模型领先今年WAIC大会,昔日AI六小龙来了五家,分别是Kimi、阶跃星辰、Minimax、百川智能、零一万物。连放弃基模的百川和零一万物都来了,唯一缺席的竟是近几个月来风光无限的智谱。(DeepSeek一直不参加)WAI…

2026/7/24 0:00:06阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/23 22:58:43阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/23 18:58:18阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/23 18:58:18阅读更多 →