用途:telemetry-capture 用于捕获 dagger CLI 调用导出的原始 OTel 遥测数据,包括 span、日志记录和指标,并写入 JSONL 文件,再用 jq 检查。适用于调试遥测:当 TUI 或 Cloud 未显示预期内容时,可判断数据究竟是否被发出,从而区分发射端 bug 与渲染端 bug。
主要能力:hack/otlpdump 是一个小型 OTLP 接收器,将每次 dagger CLI 调用导出的全部 span、日志记录和指标转储到 JSONL 文件,每行带有 .kind(span、log 或 metric),可用 jq 做筛选与统计。
使用方式:先启动接收器,运行 go run ./hack/otlpdump -addr 127.0.0.1:43180 -out /tmp/telemetry.jsonl。然后让 dagger 指向该接收器,需同时设置 traces、logs、metrics 的端点变量,仅设置通用端点变量只会传递 traces:env OTEL_EXPORTER_OTLP_ENDPOINT=http://127.0.0.1:43180 OTEL_EXPORTER_OTLP_LOGS_ENDPOINT=http://127.0.0.1:43180/v1/logs OTEL_EXPORTER_OTLP_METRICS_ENDPOINT=http://127.0.0.1:43180/v1/metrics OTEL_EXPORTER_OTLP_TRACES_LIVE=1 ./hack/with-dev ./bin/dagger ...。其中 OTEL_EXPORTER_OTLP_TRACES_LIVE=1 使 span 在开始和结束时都导出,可看到进行中状态。检查时可按 .kind 过滤,例如列出所有 span 名称、按名称前缀筛选并显示 ID 前 8 位、查看流式进度记录、查看特定 span 的日志。进度记录按 (span, item) 为键且最新覆盖;发射端约 100ms 节流,但对已知总数必须发出最终收敛状态(current == total);body 必须为显式空字符串。
限制与注意:输出文件跨运行追加,捕获之间应删除或使用新的 -out 路径,且不要在接收器运行时删除文件。缓存操作不发出传输遥测,需冷状态设置。捕获中缺少 span 通常意味着运行中的引擎是旧的,应先确认开发引擎包含改动再调试发射端。