Skip to content

lorainver/log-analyzer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Xray & Nginx 日志分析工具

一个功能强大的Python项目,用于分析Xray和Nginx访问日志,提供命令行报告和Web仪表板。

🚀 功能特性

  • 智能日志解析: 自动解析Xray和Nginx日志格式
  • 流量统计: 连接数、客户端IP、目标域名统计
  • 安全分析: 异常IP检测、可疑目标识别
  • 时间分析: 每小时流量分布、活跃时段识别
  • Web仪表板: 实时数据可视化,自动刷新
  • 路由分析: 直连/代理策略使用统计

📦 安装方法

# 进入项目目录
cd /root/log-analyzer

# 运行安装脚本
chmod +x setup.sh
./setup.sh

🔧 使用方法

1. 命令行分析

# 基础分析
./analyze.sh

# 生成报告文件
./analyze.sh --output report.txt

# 指定自定义日志文件
./analyze.sh --xray-log /path/to/xray.log --nginx-log /path/to/nginx.log

2. Web仪表板

# 启动Web仪表板
./start_dashboard.sh

# 访问 http://your-server:8050

📊 分析报告内容

基础统计

  • 总连接数
  • 客户端IP数量
  • 目标域名数量
  • 时间跨度

流量分析

  • 热门目标域名 (Top 10)
  • 路由策略分布
  • 协议使用统计
  • 客户端IP分布

时间分析

  • 每小时流量分布
  • 最活跃时段识别
  • 流量趋势图

安全分析

  • 异常IP检测
  • 可疑目标识别
  • 多客户端告警

🌐 Web仪表板功能

  • 实时刷新: 每30秒自动更新数据
  • 交互式图表: 使用Plotly实现
  • 响应式设计: 支持移动设备访问
  • 多维度展示: 图表化展示各项统计

🏗️ 项目架构详解

📁 完整目录结构

log-analyzer/                     # 项目根目录
├── log_analyzer.py              # 🔧 核心分析引擎 (295行)
├── dashboard.py                 # 🌐 Web仪表板应用 (245行)
├── analyze.sh                   # 📜 命令行分析脚本
├── start_dashboard.sh           # 🚀 仪表板启动脚本
├── setup.sh                     # ⚙️ 自动安装脚本
├── requirements.txt             # 📦 Python依赖包列表
├── README.md                    # 📖 项目说明文档
├── USER_GUIDE.md               # 📚 详细使用指南
├── daily-report.txt            # 📄 每日报告样本
├── report.txt                  # 📄 分析报告样本
├── *.log                       # 📝 各种日志文件
├── venv/                       # 🐍 Python虚拟环境
│   ├── lib/python3.12/site-packages/
│   │   ├── dash-2.14.2/       # Web框架
│   │   │   ├── dash/          # 核心Dash模块
│   │   │   ├── dash_core_components/  # UI组件
│   │   │   ├── dash_html_components/  # HTML组件
│   │   │   └── dash_table/     # 表格组件
│   │   ├── dash_bootstrap_components-1.5.0/  # Bootstrap组件
│   │   ├── plotly-5.17.0/     # 可视化库
│   │   ├── pandas-2.1.4/      # 数据分析库
│   │   ├── requests-2.31.0/   # HTTP请求库
│   │   └── ...
└── __pycache__/               # Python字节码缓存

🛠️ 技术栈详解

后端技术

  • Python 3.12 - 核心开发语言
  • Pandas 2.1.4 - 数据处理和分析
  • Requests 2.31.0 - HTTP请求(IP地理位置查询)

前端技术

  • Dash 2.14.2 - Web应用框架(基于Flask + React)
  • Dash Bootstrap Components 1.5.0 - UI组件库
  • Plotly 5.17.0 - 交互式数据可视化

数据处理

  • pytz 2023.3 - 时区处理
  • python-dateutil 2.8.2 - 日期时间解析
  • Matplotlib 3.8.2 - 静态图表生成(备用)
  • Seaborn 0.13.0 - 统计图表(备用)

🏛️ 系统架构图

┌─────────────────┐    ┌──────────────────┐    ┌─────────────────┐
│  日志数据源     │───▶│   数据解析器     │───▶│   数据分析器     │
│                 │    │                  │    │                 │
│ • Xray日志     │    │ • 格式解析       │    │ • 统计分析       │
│ • Nginx日志    │    │ • IP地理位置查询  │    │ • 趋势分析       │
└─────────────────┘    └──────────────────┘    └─────────────────┘
                                                       │
                                                       ▼
┌─────────────────┐    ┌──────────────────┐    ┌─────────────────┐
│  Web界面展示    │◀───│   可视化引擎     │◀───│   数据存储       │
│                 │    │                  │    │                 │
│ • 实时仪表板    │    │ • Plotly图表     │    │ • Pandas DataFrame│
│ • 交互式操作    │    │ • Bootstrap样式  │    │ • 内存缓存       │
└─────────────────┘    └──────────────────┘    └─────────────────┘

🔧 核心模块详解

LogAnalyzer (log_analyzer.py)

class LogAnalyzer:
    """核心日志分析引擎"""
    
    主要功能:
    - parse_xray_log()     # 解析Xray日志格式
    - parse_nginx_log()    # 解析Nginx日志格式  
    - get_ip_geolocation()  # IP地理位置查询
    - load_xray_logs()     # 批量加载Xray日志
    - analyze_traffic()     # 流量统计分析

LogDashboard (dashboard.py)

class LogDashboard:
    """Web仪表板应用"""
    
    主要组件:
    - setup_layout()       # 布局设计 (Bootstrap)
    - setup_callbacks()     # 回调函数 (Dash)
    - update_dashboard()    # 数据更新逻辑
    - 实时刷新机制 (30秒间隔)

🌐 外部依赖

API服务

  • ip-api.com - IP地理位置查询服务
    • 提供国家、城市、ISP信息
    • 本地缓存减少API调用

日志数据源

  • Xray: /var/log/xray/access.log
  • Nginx: /var/log/nginx/access.log

📈 性能优化策略

数据处理优化

  • 分批加载: 限制处理10,000条最新记录
  • IP缓存: 避免重复地理位置查询
  • 异步处理: 后台数据更新不阻塞UI

Web优化

  • 数据缓冲: 32k缓冲区,5分钟刷新
  • 图表懒加载: 按需渲染可视化组件
  • 状态管理: 分离回调减少耦合

内存管理

  • 虚拟环境: 隔离依赖,避免版本冲突
  • 缓存机制: IP地理位置信息本地缓存
  • 批量处理: 大文件分批读取,控制内存使用

🔍 日志格式支持

Xray日志格式

2026/01/17 18:28:21.582771 from 116.168.13.148:0 accepted tcp:signaler-pa.clients6.google.com:443 [direct]

Nginx日志格式

116.168.13.148 - - [17/Jan/2026:18:28:08 +0800] "GET /ONy90 HTTP/1.1" 101 6680 "-" "Go-http-client/1.1" "-"

⚙️ 自定义配置

可以通过修改以下参数来自定义分析:

# log_analyzer.py 中的可配置项
TIMEZONE = 'Asia/Shanghai'  # 时区设置
TOP_DOMAINS_COUNT = 10      # 显示的顶级域名数量
HOUR_INTERVAL = 5           # 流量趋势图的时间间隔(分钟)

🚨 注意事项

  1. 确保有足够的磁盘空间存储日志
  2. Web仪表板默认监听所有网络接口
  3. 建议定期清理旧日志文件
  4. 生产环境建议添加认证机制
  5. 服务器日志优化:建议配置日志轮转和缓冲机制

🤝 贡献指南

欢迎提交Issue和Pull Request来改进这个工具!

📄 许可证

MIT License

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors