Skip to content

docs: 本地 trace 文件路径改名 + 补充产生/上传 trace 排查文档#3263

Open
chenjw wants to merge 1 commit into
mainfrom
trace-log-cleanup
Open

docs: 本地 trace 文件路径改名 + 补充产生/上传 trace 排查文档#3263
chenjw wants to merge 1 commit into
mainfrom
trace-log-cleanup

Conversation

@chenjw

@chenjw chenjw commented Jul 15, 2026

Copy link
Copy Markdown
Collaborator

改动概述

本 PR 新增了本地 trace 产生与上传排查的完整能力,方便用户在离线环境复现问题后将 trace 提交给管理员排查。

1. 新增本地 trace JSONL 导出器

openviking/telemetry/tracer.py 中新增 LocalJsonlSpanExporter,当 server.observability.traces.protocol 设为 "local" 时,将 OTLP trace 以 JSONL 格式写到本地文件 ~/.openviking/logs/traces.jsonl,支持按大小轮转(local_rotation_mb / local_backup_count)。

openviking/server/config.pyOTelExporterConfig 中新增 local_pathlocal_rotation_mblocal_backup_count 配置字段。

2. 新增 tests/upload_offline_trace.py 上传脚本

完整的离线 trace JSONL 上传工具,支持:

  • 读取当前环境 ov.conf 作为上传目标配置(需 protocol=grpc/http)
  • 默认连同轮转文件一起上传(traces.jsonl.2traces.jsonl.1traces.jsonl
  • --no-include-rotated 只上传当前文件
  • --config 指定独立的上传配置
  • 上传成功后收集并打印 trace_id 列表,方便管理员定位

3. 补充「产生本地 Trace 并提交排查」文档

docs/zh/guides/05-observability.mddocs/en/guides/05-observability.md 中新增一节 "产生本地 Trace 并提交排查",完整描述了:

  1. 开启本地 trace 文件:配置 protocol=local,文件写到 ~/.openviking/logs/traces.jsonl,支持按大小轮转
  2. 复现问题并确认 trace 已产生:操作后检查文件是否写入,以及排查清单
  3. 提交 trace 文件给管理员
    • 用户只需把 JSONL 文件(和已知的有问题 trace_id)提交给管理员/支持人员
    • 用户不需要直接上传到排查环境
    • 管理员在有源码和 OTLP 连接的环境用 tests/upload_offline_trace.py 上传
    • 上传脚本会收集并打印上传的 trace_id 列表,方便管理员定位

使用说明

用户侧(产生 trace)

~/.openviking/ov.conf 中配置:

{
  "server": {
    "observability": {
      "traces": {
        "enabled": true,
        "protocol": "local"
      }
    }
  }
}

重启服务后复现问题,文件会写到 ~/.openviking/logs/traces.jsonl。用户把文件打包交给管理员即可。

管理员侧(上传 trace)

python tests/upload_offline_trace.py \
  --file /path/to/traces.jsonl \
  --config /path/to/upload-ov.conf

上传成功后会输出 trace_id 列表,管理员据此在 Jaeger 等排查工具中查看。

测试

  • python -m pytest tests/test_server_config_loader.py — 28 passed ✅

- 将默认本地 trace 路径从 ~/.openviking/data/traces/offline-traces.jsonl
  改为 ~/.openviking/logs/traces.jsonl,不再建 traces 子目录
- 新增 upload_offline_trace.py 脚本,支持上传 JSONL trace 到远端 OTLP
- 上传脚本上传成功后收集并打印 trace_id 列表
- 在中英文 observability guide 中新增「产生本地 Trace 并提交排查」一节,
  覆盖用户开启 local trace、复现问题、提交 JSONL 给管理员、管理员上传的完整流程
- 更新 test_server_config_loader.py 断言
@chenjw chenjw force-pushed the trace-log-cleanup branch from c8a8e68 to c66cfc4 Compare July 15, 2026 11:06
try:
for file_path in files:
file_path = file_path.expanduser()
if not file_path.exists():

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[Bug] (blocking) 当 --file 指向的主文件不存在时,这里只是把路径记到 missing_files 然后继续,最后 main() 仍然会打印 Uploaded: batches: 0return 0。我本地按这个脚本做了最小复现:传一个不存在的 traces.jsonl,脚本最终退出码仍是 0。对管理员来说,这会把“根本没有上传任何 trace”伪装成一次成功提交,容易误判排查结果。建议至少在以下任一场景返回非 0:显式传入的主文件不存在、loaded_files 为空,或 uploaded_batches == 0

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Backlog

Development

Successfully merging this pull request may close these issues.

2 participants