可观测性
aiod 向 stdout 写 JSON 日志,在 GET /metrics 提供 Prometheus 指标,配置端点后上报 OpenTelemetry trace。默认不主动推送。
日志
stdout 上每个请求一行 JSON,标记为 HTTP_REQUEST,挂在 app.request 这一 target 上。内容包括:
凭证会在写入日志前脱敏。
名称包含以下标记的 query 参数或 body 字段会被替换:api_key、authorization、token、password、secret、cookie 和 ticket。
替换后的值包含长度和一段短 SHA-256,可以区分不同值,但不会暴露原始内容:
只有满足以下条件的 JSON body 才会被摘要:application/json、带明确的 Content-Length,且大小不超过 8 KiB。
上传、流式请求、WebSocket 握手和超出上限的 body 不会被摘要。日志条目会使用 captured: false,并通过 reason 说明原因;body 仍会逐字节交给 handler。
请求 id 按以下顺序获取:x-tt-logid、x-logid、x-log-id、x-request-id。
这些请求头都不存在时,系统会生成一个 id。响应通过 x-tt-logid 返回该 id,并将同一个 id 传给 computer-use,因此一个 id 可以关联两个进程:
指标
Prometheus 文本格式,按请求生成。设置了 API key 时,/metrics 需要携带 key。一共四组指标:
两个 histogram 用同一套分桶,从 1 毫秒到 30 秒。没有匹配到路由的请求统一归到 <unmatched> 标签,因此扫描端点不会让时间序列数量失控。
OpenTelemetry Trace
默认关闭。通过环境变量启用:
带 _TRACES_ 的专用变量优先于通用变量。
使用 http/protobuf 时,通用端点会被视为 base URL,并自动追加 /v1/traces;OTEL_EXPORTER_OTLP_TRACES_ENDPOINT 则按原值使用。
每个请求一个 span(otel.kind 为 server,带 http.method 和 http.route)。trace context 透传:调用方的 trace 会经 daemon 转发到 computer-use。

只支持明文 http:// 的 collector:构建里没有编入 TLS 后端。