name: obproxy-log-analysis
description: 标准 SOP:OBProxy 日志采集(gather_obproxy_log)、包内解读(file_list/file_read/run_shell 解压)、可选巡检。用户提到 OBProxy/代理/obproxy_diagnosis 等时使用;与 observer 侧 observer-log-analysis 互斥 analyze_log。
OBProxy 日志:采集与分析
与 observer 日志的区别
- Observer 侧(observer / election / rootservice):收集用
gather_log,统计类分析用 analyze_log(obdiag analyze log)。
- OBProxy:收集用
gather_obproxy_log。不要用 analyze_log 分析 OBProxy 日志——analyze_log 在实现上固定拉取 target=observer 的日志,解析逻辑也面向 observer 日志格式,不支持 OBProxy。
使用场景
- 用户要采集、查看、分析、解读 OBProxy / 代理 / obproxy_* 日志
- 用户提到 obproxy_diagnosis、obproxy_error、obproxy_slow 等 scope
- 用户已在某次采集中得到
obdiag_gather_pack_* 目录,想分析其中 OBProxy 内容
同一轮对话内链式完成(重要)
模型常在 gather_obproxy_log 成功后就说「采集完成」并结束本轮,不会自动再调 file_list / file_read。若用户一句里包含 采集 + 分析/解读,或明确要 分析 OBProxy 日志,必须在 同一轮 agent 运行里 连续调用工具:gather_obproxy_log → file_list(采集输出目录)→ file_read(相关文件)→ 最后再用自然语言总结。仅当用户只要采集、不要解读时,才可以 gather 后直接回复。
推荐流程
1. 采集(需要从新从机器拉日志时)
- 调用
gather_obproxy_log(不要调用 gather_log)。
- 常用参数:
since / from_time + to_time:时间范围
scope:obproxy、obproxy_diagnosis、obproxy_error、obproxy_slow、obproxy_digest、obproxy_stat、obproxy_limit、all 等
grep:关键词过滤
store_dir:输出目录(可选)
- 执行完成后,记下返回结果中的采集输出目录(例如
obdiag_gather_pack_...)。
2. 解读已采集的包(用户说「分析 / 解读 / 看看」且已有采集目录时)
- 不要为了「分析」再次
gather_obproxy_log,除非用户明确要求重新拉取(换时间窗、换 scope、或确认包里缺文件)。
- 在已有采集目录下:
- 使用
file_list 列出子目录与文件;必要时用 pattern(如 *.tar.gz、*.zip、*diagnosis*)缩小范围。
- 若为压缩包(常见:
*.tar.gz、*.tgz、*.zip):日志往往在包内,先解压再读。
- 使用
run_shell(需用户审批)在采集目录或子目录执行解压,例如:
tar -tzf xxx.tar.gz | head(先看包内结构)
mkdir -p ./extracted && tar -xzf xxx.tar.gz -C ./extracted
unzip -l xxx.zip / unzip -q xxx.zip -d ./extracted
- 解压成功后对
./extracted(或实际解压目录) 再 file_list → file_read。
- 若环境未提供
run_shell,则明确告诉用户在本机终端执行上述命令,解压后再用 file_list/file_read 指向解压后的路径。
- 对明文日志文件使用
file_read(注意单文件大小上限;过大时用 run_shell 执行 head/tail/grep 抽样,或让用户缩小范围)。
- 根据内容归纳错误、时间线、建议下一步(例如是否需扩大
since、换 scope、或结合 check_cluster)。
3. 结构化巡检(可选)
阶段完成标准(SOP)
| 阶段 |
完成标准 |
| 1 采集 |
已调用 gather_obproxy_log 且掌握 输出 pack 路径(或明确失败原因)。 |
| 2 解读 |
已对目标目录 file_list,对明文日志 file_read 或 run_shell 解压/抽样;不得对 .tar.gz/.zip 直接当文本读。 |
| 3 巡检(若做) |
已执行对应 check 工具或已给出 CLI 替代说明。 |
自检清单
工具速查
| 目的 |
工具 |
| 拉 OBProxy 日志 |
gather_obproxy_log |
| 在采集结果目录里找文件 |
file_list |
解压 .tar.gz / .zip、查看包内列表、head/grep 抽样 |
run_shell(需用户确认,勿执行破坏性/无关命令) |
| 读取日志内容 |
file_read |
| Observer 日志统计/分析 |
analyze_log(仅 observer 侧,勿用于 OBProxy) |
常见错误
- 用
gather_log 采 OBProxy → 错误,应改为 gather_obproxy_log。
- 用
analyze_log「分析 OBProxy」→ 错误,应对采集目录 file_list / file_read(或由模型基于内容解读)。
- 用户已有全量
gather_obproxy_log(..., scope=all) 的包,又只说「分析 obproxy_diagnosis」→ 优先在包内 定位 diagnosis 文件 再读,避免无意义重复采集。
- 看见
.tar.gz / .zip 仍直接用 file_read → 错误;应先 run_shell 解压 或让用户解压,再读解压出的文本日志。