用winform实现的nginx日志分析软件
Nginx日志分析工具 📊
一个功能强大的Nginx日志分析工具,基于C# WinForms开发,支持全面的访问日志分析、地理位置统计、Web攻击检测和时间筛选功能。
✨ 主要特性
📈 全面的数据分析
- 概览统计:总请求数、独立访客、带宽使用、响应时间统计
- 访客分析:Top IP访问排行、地理位置分布
- 请求分析:热门页面、来源网站、HTTP方法统计
- 状态码分析:HTTP响应状态码分布统计
- 地理位置分析:按国家和城市的访问量统计
🛡️ WAF安全分析
- 攻击检测:自动识别SQL注入、XSS、命令注入、路径遍历等攻击
- 攻击统计:各类攻击的数量和趋势分析
- 风险评估:5级风险等级评估系统
- 攻击筛选:按攻击类型筛选查看详细日志
- 日志导出:支持将攻击日志导出为CSV格式
⏰ 智能时间筛选
- 灵活时间范围:支持精确到秒的时间范围选择
- 实时筛选:实时更新所有统计数据和图表
- 数据对比:筛选前后的数据量对比显示
- 无损筛选:原始数据保持完整,可随时恢复
🎯 大文件优化
- 智能读取:超过5MB文件提供三种读取选项
- 性能优化:支持读取前10000行、后10000行或全部数据
- 进度显示:实时显示文件解析进度
📊 可视化图表
- 图表类型:柱状图支持
- 交互式展示:点击按钮即可生成相应图表
- 数据导出:支持图表数据导出
🚀 快速开始
系统要求
- Windows 10/11
- .NET Framework 4.7.2 或更高版本
- 内存:建议4GB以上(处理大型日志文件时)
安装步骤
- 下载最新版本的可执行文件
- (可选)下载 GeoLite2-City.mmdb 数据库文件并放在程序目录下
- 运行
NginxLogAnalyzer.exe
使用方法
- 打开日志文件:点击
文件 → 打开日志文件 - 选择读取方式:对于大文件,选择合适的读取选项
- 查看分析结果:在各个标签页中查看不同维度的分析结果
- 时间筛选:勾选"启用时间筛选"来分析特定时间段的数据
- 安全分析:切换到"WAF分析"标签页查看攻击检测结果
📋 支持的日志格式
工具支持标准的Nginx日志格式:
$remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent"
示例日志:
192.168.1.100 - - [01/Jan/2024:12:00:00 +0000] "GET /index.html HTTP/1.1" 200 1024 "https://example.com" "Mozilla/5.0..."
🛡️ WAF功能详解
支持的攻击类型检测
- SQL注入:检测union、select、drop等SQL关键字
- XSS攻击:检测script标签、javascript:等XSS特征
- 命令注入:检测系统命令和命令分隔符
- 路径遍历:检测../、/etc/passwd等路径遍历特征
- 扫描器识别:识别nmap、sqlmap等安全扫描工具
- 暴力破解:检测登录页面的异常访问模式
风险等级
- 🔴 等级5(极高):SQL注入、命令注入
- 🟠 等级4(高):XSS、路径遍历
- 🟡 等级3(中):暴力破解
- 🔵 等级2(低):扫描器探测
- ⚪ 等级1(很低):可疑请求
📊 标签页功能
1. 概览 📈
- 总请求数统计
- 独立访客数量
- 总带宽使用量
- 平均响应时间(如果日志包含)
2. 访客分析 👥
- Top 20 访问IP地址
- IP地理位置信息
- 访问频次和百分比统计
3. 请求分析 🌐
- 热门页面:最受欢迎的URL路径
- 来源分析:主要referrer统计
- HTTP方法:GET、POST等方法分布
4. 状态码 📊
- HTTP状态码分布统计
- 成功率、错误率分析
- 柱状图可视化展示
5. 地理位置分析 🌍
- 国家统计:按国家的访问量排行
- 城市统计:按城市的访问量排行
- 独立IP数量统计
6. WAF分析 🛡️
- 攻击日志:疑似攻击的详细记录
- 攻击统计:各类攻击的数量分析
- 攻击筛选:按类型筛选攻击日志
- 日志导出:导出攻击日志为CSV
⚙️ 高级功能
时间筛选 ⏰
- 勾选"启用时间筛选"
- 设置开始和结束时间
- 点击"应用筛选"查看结果
- 点击"清除筛选"恢复全部数据
大文件处理 📁
当文件超过5MB时,系统会提供选择:
- 读取全部:处理完整文件(可能较慢)
- 读取前10000行:分析文件开头部分
- 读取后10000行:分析最新日志(推荐)
地理位置功能 🌍
为了使用地理位置功能,请:
- 下载 MaxMind GeoLite2-City 数据库
- 将
GeoLite2-City.mmdb文件放在程序根目录 - 重启程序
🔧 技术特性
性能优化
- 多线程处理:异步文件读取和数据处理
- 内存管理:智能内存使用和垃圾回收
- 数据缓存:避免重复计算和解析
数据安全
- 只读分析:仅读取日志文件,不修改原始数据
- 本地处理:所有数据本地处理,无网络传输
- 隐私保护:IP地址等敏感信息仅用于统计分析
📝 使用场景
网站运维 🔧
- 监控网站访问情况
- 分析用户行为模式
- 优化服务器性能
安全分析 🛡️
- 检测Web攻击尝试
- 分析安全威胁趋势
- 生成安全报告
业务分析 📊
- 了解用户地理分布
- 分析热门内容
- 评估营销效果
故障排查 🔍
- 分析错误状态码
- 定位问题时间段
- 追踪异常访问模式
🤝 技术支持
常见问题
Q: 为什么地理位置显示"未知"? A: 请确保已下载并正确放置 GeoLite2-City.mmdb 数据库文件。
Q: 大文件解析很慢怎么办? A: 建议选择"读取后10000行"选项,通常最新的日志更有分析价值。
Q: WAF检测准确率如何? A: 本工具基于常见攻击特征进行检测,可能存在误报或漏报,建议结合专业WAF设备使用。
🙏 致谢
- MaxMind GeoLite2 数据库提供地理位置数据
- .NET Framework 和 Windows Forms 框架支持
- 开源社区的宝贵建议和反馈



浙公网安备 33010602011771号