| name | log-diagnostic |
| description | 分析日志文件的错误模式,支持JSON、syslog、Nginx等常见格式,自动检测并输出错误聚类、频率统计和时间分布报告,用于排查问题、定位高发时段。当用户上传.log文件并要求排查错误、分析错误分布、定位高发时段,或提及错误统计、日志分析等关键词时触发。 |
| license | MIT |
| metadata | {"type":"tool","tags":["logs","analysis","devops","monitoring"]} |
Log Analyzer
对日志文件进行自动化分析,提供错误聚类、频率统计和时间分布报告。
功能
- 错误聚类:将相似的错误消息归类,消除噪声(IP、UUID、数字等动态部分),识别根本问题
- 频率统计:按错误类型统计出现次数,按严重程度排序
- 时间分布:展示错误在各小时和各日期的分布,帮助定位高发时段
支持的日志格式
| 格式 | 说明 | 自动检测 |
|---|
| JSON | 每行一个 JSON 对象,含 timestamp/level/message 等字段 | 以 { 开头 |
| syslog | RFC 3164 格式,如 Jan 1 12:00:00 host proc[pid]: msg | 月份名开头 |
| Nginx | access log 或 error log 格式 | IP 开头或日期路径格式 |
使用方式
python scripts/analyze_logs.py <日志文件路径> [选项]
参数
| 参数 | 说明 | 默认值 |
|---|
log_file | 日志文件路径(必填) | - |
--format | 指定日志格式:auto/json/syslog/nginx | auto |
--top | 显示 Top N 错误聚类 | 20 |
--output | 输出结果到 JSON 文件 | 仅终端输出 |
--level | 过滤日志级别(如 ERROR、WARN) | 所有级别 |
--since | 只分析此时间之后的日志(ISO 格式) | 不限 |
--until | 只分析此时间之前的日志(ISO 格式) | 不限 |
示例
python scripts/analyze_logs.py /var/log/app.log
python scripts/analyze_logs.py /var/log/nginx/error.log --format nginx --top 10
python scripts/analyze_logs.py app.log --level ERROR --output report.json
python scripts/analyze_logs.py app.log --since 2024-01-01T00:00:00 --until 2024-01-02T00:00:00
输出说明
终端输出
=======================================================
日志分析报告
=======================================================
📊 概览
检测格式: json
总行数: 15,234
已解析: 15,100 (解析失败: 134)
匹配条目: 12,800
错误数: 2,341
时间范围: 2024-01-01 00:03:12 ~ 2024-01-01 23:58:45
🔴 Top 错误聚类 (共 47 类)
#1 [×523 ] Connection refused to database at 10.0.1.5:5432
首次: 2024-01-01T00:15:30 末次: 2024-01-01T23:45:12
#2 [×312 ] Timeout waiting for response from user-service after 30000ms
首次: 2024-01-01T02:10:00 末次: 2024-01-01T22:30:45
#3 [×198 ] File not found: /data/uploads/img_99421.png
首次: 2024-01-01T08:00:00 末次: 2024-01-01T20:15:33
...
⏰ 时间分布 (按小时)
00:00 █████░░░░░░░░░░░░░░░ 42
01:00 ██░░░░░░░░░░░░░░░░░░ 18
...
14:00 ████████████████████ 523
...
📅 时间分布 (按日期)
2024-01-01 ████████████████████ 2,341
JSON 输出
使用 --output 参数可导出结构化 JSON 报告,方便后续处理或接入监控系统。