Skip to content

PFinal-tool/pf_nlog

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

nglog - Nginx日志分析工具

一个功能强大的Nginx日志分析工具,采用插件化架构设计,支持多种日志分析功能。

🚀 功能特性

  • 插件化架构:支持热插拔,易于扩展新功能
  • 多种分析维度:IP统计、状态码分析、URL访问、用户代理分析等
  • 安全检测:内置安全威胁检测功能
  • 流量监控:带宽使用情况和流量分布分析
  • 配置灵活:支持配置文件自定义
  • 轻量级:纯Shell脚本实现,依赖少

📦 安装

# 克隆项目
git clone https://github.com/PFinal-tool/pf_nlog.git
cd pf_nlog

# 添加执行权限
chmod +x nglog.sh

🛠️ 使用方法

基本用法

# 显示帮助信息
./nglog.sh --help

# 显示版本信息
./nglog.sh --version

# 显示可用插件列表
./nglog.sh --list

# 运行指定插件分析日志
./nglog.sh -p top_ip /var/log/nginx/access.log

HTML报告功能

# 生成单个插件的HTML报告
./nglog.sh -p security -o security_report.html /var/log/nginx/access.log

# 生成完整分析报告(所有插件)
./nglog.sh -a -o full_report.html /var/log/nginx/access.log

# 运行所有插件(控制台输出)
./nglog.sh -a /var/log/nginx/access.log

HTML报告特点:

  • 响应式设计,适配各种设备
  • 专业美观的CSS样式
  • 导航菜单,快速跳转不同分析模块
  • 时间戳和文件信息显示
  • 完整的分析结果格式化展示

插件使用示例

# 统计访问量最高的IP
./nglog.sh -p top_ip /var/log/nginx/access.log

# 分析HTTP状态码分布
./nglog.sh -p status_code /var/log/nginx/access.log

# 统计最常访问的URL
./nglog.sh -p request_url /var/log/nginx/access.log

# 分析用户代理信息
./nglog.sh -p user_agent /var/log/nginx/access.log

# 分析流量和带宽使用
./nglog.sh -p traffic /var/log/nginx/access.log

# 安全分析和异常检测
./nglog.sh -p security /var/log/nginx/access.log

# 增强版IP分析(国家分布+爬虫判定)
./nglog.sh -p top_ip_enhanced /var/log/nginx/access.log

# 用户行为评分分析
./nglog.sh -p behavior_score /var/log/nginx/access.log

# 运行所有插件生成完整报告
./nglog.sh -a /var/log/nginx/access.log

🔌 可用插件

插件名称 功能描述 版本
top_ip 统计访问量最高的IP地址 0.1
top_ip_enhanced 增强版IP分析:国家分布和爬虫判定 0.2
status_code 分析HTTP状态码分布情况 0.1
request_url 统计最常访问的URL 0.1
user_agent 分析用户代理和浏览器信息 0.1
traffic 流量和带宽使用情况分析 0.1
security 安全威胁和异常访问检测 0.1
behavior_score 用户行为评分分析 - 识别可疑和恶意行为 0.2

⚙️ 配置说明

配置文件位于 conf/nglog.conf,支持以下配置项:

# 输出配置
OUTPUT_TOP_N=10          # 默认显示前N条结果
OUTPUT_TIMESTAMP=true    # 是否显示时间戳
OUTPUT_COLOR=true        # 是否使用彩色输出

# 插件配置
PLUGIN_AUTO_LOAD=true    # 是否自动加载所有插件
PLUGIN_VERBOSE=true      # 是否显示插件详细信息

# 日志文件配置
DEFAULT_LOG_DIR="/var/log/nginx"
DEFAULT_LOG_FILE="access.log"

# 安全配置
IGNORE_LOCAL_IPS=true    # 是否忽略本地IP地址
IGNORE_BOTS=true         # 是否忽略常见爬虫

🔧 插件开发

插件结构

每个插件需要包含以下文件:

plugins/
└── plugin_name/
    ├── plugin.sh        # 插件主文件
    └── README.md        # 插件说明文档

插件模板

PLUGIN_NAME="your_plugin"
PLUGIN_DESC="插件功能描述"
PLUGIN_VERSION="0.1"
PLUGIN_AUTHOR="作者名"

plugin_init() {
    # 插件初始化代码
    return 0
}

plugin_run() {
    local log="$1"
    # 插件分析逻辑
    # 使用awk、grep等工具处理日志文件
}

📊 输出示例

top_ip插件输出

=== 运行插件: top_ip ===
描述: 统计访问量最高的 IP
版本: 0.1
作者: pfinal

   1234 192.168.1.100
    567 10.0.0.1
    234 203.0.113.5

status_code插件输出

HTTP状态码统计:
================
  1000 200
   234 404
    45 500
    23 301

状态码分类统计:
----------------
总请求数: 1302
成功请求(2xx): 1000 (76.80%)
重定向(3xx): 23 (1.77%)
客户端错误(4xx): 234 (17.97%)
服务器错误(5xx): 45 (3.46%)

🐛 故障排除

常见问题

  1. 权限不足:确保对日志文件有读取权限
  2. 日志格式不匹配:确认Nginx日志格式与工具兼容
  3. 插件加载失败:检查插件文件权限和语法

调试模式

# 启用调试输出
bash -x ./nglog.sh -p top_ip /var/log/nginx/access.log

🤝 贡献

欢迎提交Issue和Pull Request来改进这个项目!

📄 许可证

MIT License

👥 作者

  • pfinal

注意:本工具仅用于日志分析和运维监控,请遵守相关法律法规。

About

nginx 日志分析

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages