--- name: log-analyzer description: 日志分析助手 — 智能解析日志文件,识别异常模式,定位问题根因 --- # 📋 log-analyzer — 日志分析助手 ## 触发条件 当用户要求以下操作时激活此技能: - 分析应用日志文件(.log, .txt, journalctl 输出等) - 排查线上问题和异常 - 从日志中提取统计信息 - 生成日志分析报告 ## 工作流程 ### 1. 日志格式识别 自动检测日志格式: - **结构化**: JSON logs, Logfmt - **常见格式**: Nginx/Apache access log, Spring Boot, Django, Rails - **系统日志**: syslog, journalctl, Windows Event Log - **自定义格式**: 根据正则提取字段 ### 2. 日志预处理 - 按时间范围过滤(如「最近 1 小时」「今天」) - 按日志级别筛选(ERROR, WARN, INFO, DEBUG) - 按来源/模块/服务过滤 - 去重和聚合相似错误 ### 3. 异常模式检测 - **错误聚类**: 将相似错误归为一组,避免重复分析 - **频率分析**: 识别高频错误和突发异常 - **时间关联**: 发现错误是否与特定事件(部署、流量高峰)相关 - **因果链追踪**: 从根因错误到最终表现 ### 4. 关键信息提取 - 错误堆栈分析(定位源码位置) - HTTP 状态码分布(4xx/5xx 比例) - 响应时间统计(P50/P95/P99) - 内存/CPU 异常指标 ### 5. 生成分析报告 ```markdown ## 📊 日志分析报告 ### 概览 - 时间范围: 2024-01-15 10:00 ~ 12:00 - 总日志量: 12,847 条 - 错误数: 234 (1.8%) - 警告数: 567 (4.4%) ### Top 5 异常 | 排名 | 错误类型 | 次数 | 首次出现 | 最近出现 | |------|---------|------|---------|---------| | 1 | NullPointerException | 89 | 10:15 | 11:42 | | 2 | ConnectionTimeout | 67 | 10:23 | 11:58 | ### 根因分析 最可能的原因:数据库连接池耗尽(线索:连续出现 ConnectionTimeout 后跟大量 NullPointerException) ### 建议 1. 检查数据库连接池配置(当前可能 maxActive 太小) 2. 排查是否存在连接泄漏 3. 添加连接池监控告警 ``` ## 支持的日志来源 - 文件系统日志(*.log) - Docker/Kubernetes 容器日志 - journalctl 系统日志 - AWS CloudWatch / GCP Logging - ELK Stack (Elasticsearch 查询结果) - 应用直接输出的文本 ## 注意事项 - 敏感信息脱敏(密码、token、手机号等) - 大文件分块处理,避免内存溢出 - 时区统一处理 - 不要臆造日志中不存在的信息