| name | parse-proxylog |
| description | 用户要求分析 forward.log 日志或排查性能/连接问题时触发。 |
Skill: forward.log 日志分析
解析 forward.log 文件,支持性能分析和错误诊断两种模式。
触发条件
- 用户要求分析
forward.log 日志
- 用户提到"性能报告"、"耗时分析"、"延迟统计"、"连接池效率"、"多路复用健康度"
- 排查代理性能问题或连接失败时需要量化数据
模式一:性能分析
统计 DNS 解析、连接建立、数据传输等各阶段的耗时,生成带时间窗口划分的性能报告。
解析规则
- DNS 解析耗时:匹配
[Resolve] query to .* completed: code=success, ips=\d+, rtt=(\d+)ms
- 隧道传输耗时:匹配
[Tunnel] \[\d+\] Transfer: Upload \d+ B, Download \d+ B, duration: (\d+) ms
- 连接池耗时:从
[Pool] new connection 到多路复用 stream connected 的时间戳差
- 会话准备耗时:从
Session started 到 Dispatching to handler 的时间戳差
统计计算
- 全局统计:每个阶段的 Max/Min/Avg/Count
- 时间窗统计:每 10 秒(或每分钟自适应)一个窗口
- 极端值排查:Top 5 慢 DNS、Top 5 长时隧道
输出格式
### 性能报告
**日志时间跨度**: [Start] ~ [End]
#### 全局耗时统计
| 阶段 | Avg | Min | Max | Count | 极端值 |
|------|-----|-----|-----|-------|--------|
#### 时间区间波动分析
| 窗口 | DNS Avg/Max | Tunnel Avg/Max | 请求数 | 状态 |
|------|-------------|----------------|--------|------|
#### Top 5 慢请求
- 慢 DNS: ...
- 长时隧道: ...
模式二:错误诊断
专注于错误追踪、连接池效率、多路复用状态以及流量走向。
解析规则
- 错误提取:所有
[warning] 或 [error] 行,特别关注超时、TLS 失败、多路复用连接失败
- 流量分析:
[Tunnel] [*] Transfer: Upload (\d+) B, Download (\d+) B
- 连接池状态:
[Pool] total acquires/hits/creates/evictions/recycles/idle
- 多路复用流:多路复用 stream pending/connected/fin while pending
诊断计算
- 错误率与分类(按类型降序)
- 目标域名频次 Top 10
- 连接池命中率 = hits / acquires
- 流量汇总(Upload + Download 转 KB/MB)
- 多路复用流泄漏检测
输出格式
### 诊断报告
**分析时段**: [Start] ~ [End]
#### 错误雷达
- 总异常条数: [N]
- 分类: 连接超时(x), TLS失败(x), 多路复用异常(x)
#### 连接池效率
- 复用率: [X]%
- 诊断建议: ...
#### 流量 Top 10
| 排名 | 目标 | 频次 | 成功率 |
|------|------|------|--------|
#### 多路复用健康度
- Stream 总数/正常 Closed/异常: ...
- 状态评价: ...
审计流程
- 确认日志格式:验证日志文件是否为标准 forward.log 格式(检查首行是否包含时间戳和模块标签)
- 时间范围确认:提取首尾时间戳,确认分析时段覆盖用户关注的窗口
- 模式选择:根据用户意图选择性能分析或错误诊断模式。如未指定,先运行错误诊断(排查异常),再运行性能分析(量化正常)
- 数据提取:按模式匹配规则提取关键指标
- 异常值检测:自动标记超出 3-sigma 的极端值
- 关联分析:将错误事件与性能指标时间窗口对齐,识别因果关联
- 生成报告:按对应模式的输出格式生成报告,附带建议
常见反模式(避免)
分析反模式
- 不要仅分析单个指标(如只看 DNS 延迟),必须结合上下游阶段的时间线
- 不要将偶发超时与系统性退化混淆,应先区分"单次异常"vs"趋势性退化"
- 不要忽略连接池命中率(hits/acquires),低命中率意味着连接复用不足
- 不要将多路复用 stream pending 等同于泄漏,需区分"等待建立"和"建立后未关闭"
日志解读反模式
- 日志中
[warning] 级别的 "TLS handshake failed" 不一定代表代理故障,可能是正常回落
- 连接池 eviction 数量高不等于问题,可能是正常的空闲清理
- DNS 查询 rtt 在 100-300ms 范围属正常(公网 DNS 解析),超过 1s 才需关注
错误处理
- 日志文件不存在:报告路径错误,提示可能的日志目录位置
- 日志格式不匹配:报告首行内容,提示是否为正确的 forward.log 文件
- 时间范围为空:提示日志文件可能为空或已被轮转
- 部分行解析失败:统计解析失败行数,如超过 10% 则警告日志格式可能已变更
- 数据量过大(>100MB):建议指定时间范围过滤,避免内存溢出
安全审计关联
日志分析可辅助以下安全审计:
- 认证失败频率异常高 → 检查
replay-audit 中的重放攻击检测
- TLS 握手失败率异常 → 检查
dpi-audit 中的 TLS 指纹合规性
- 连接池利用率异常低 → 检查
traffic-audit 中的连接模式分析
- 特定目标域名频繁超时 → 检查
probe-audit 中的回落机制