用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以上(处理大型日志文件时)

安装步骤

  1. 下载最新版本的可执行文件
  2. (可选)下载 GeoLite2-City.mmdb 数据库文件并放在程序目录下
  3. 运行 NginxLogAnalyzer.exe

使用方法

  1. 打开日志文件:点击 文件 → 打开日志文件
  2. 选择读取方式:对于大文件,选择合适的读取选项
  3. 查看分析结果:在各个标签页中查看不同维度的分析结果
  4. 时间筛选:勾选"启用时间筛选"来分析特定时间段的数据
  5. 安全分析:切换到"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

⚙️ 高级功能

时间筛选 ⏰

  1. 勾选"启用时间筛选"
  2. 设置开始和结束时间
  3. 点击"应用筛选"查看结果
  4. 点击"清除筛选"恢复全部数据

大文件处理 📁

当文件超过5MB时,系统会提供选择:

  • 读取全部:处理完整文件(可能较慢)
  • 读取前10000行:分析文件开头部分
  • 读取后10000行:分析最新日志(推荐)

地理位置功能 🌍

为了使用地理位置功能,请:

  1. 下载 MaxMind GeoLite2-City 数据库
  2. GeoLite2-City.mmdb 文件放在程序根目录
  3. 重启程序

🔧 技术特性

性能优化

  • 多线程处理:异步文件读取和数据处理
  • 内存管理:智能内存使用和垃圾回收
  • 数据缓存:避免重复计算和解析

数据安全

  • 只读分析:仅读取日志文件,不修改原始数据
  • 本地处理:所有数据本地处理,无网络传输
  • 隐私保护:IP地址等敏感信息仅用于统计分析

📝 使用场景

网站运维 🔧

  • 监控网站访问情况
  • 分析用户行为模式
  • 优化服务器性能

安全分析 🛡️

  • 检测Web攻击尝试
  • 分析安全威胁趋势
  • 生成安全报告

业务分析 📊

  • 了解用户地理分布
  • 分析热门内容
  • 评估营销效果

故障排查 🔍

  • 分析错误状态码
  • 定位问题时间段
  • 追踪异常访问模式

🤝 技术支持

常见问题

Q: 为什么地理位置显示"未知"? A: 请确保已下载并正确放置 GeoLite2-City.mmdb 数据库文件。

Q: 大文件解析很慢怎么办? A: 建议选择"读取后10000行"选项,通常最新的日志更有分析价值。

Q: WAF检测准确率如何? A: 本工具基于常见攻击特征进行检测,可能存在误报或漏报,建议结合专业WAF设备使用。

🙏 致谢

  • MaxMind GeoLite2 数据库提供地理位置数据
  • .NET Framework 和 Windows Forms 框架支持
  • 开源社区的宝贵建议和反馈

 

 

 

 

posted @ 2025-07-21 23:20  sherlock-merlin  阅读(173)  评论(0)    收藏  举报