diagnostics-prometheus 插件公开诊断指标。它会监听受信任的诊断以及
内部标记、由 dispatcher 拥有的诊断事件(队列、内存和
会话恢复信号),并在以下地址渲染 Prometheus 文本端点:
text/plain; version=0.0.4; charset=utf-8,即标准的
Prometheus 展现格式。
关于 traces、logs、OTLP push 以及 OpenTelemetry GenAI 语义属性,请参见 OpenTelemetry 导出。
快速开始
1
安装插件
2
启用插件
- 配置
- CLI
3
重启 Gateway
HTTP 路由会在插件启动时注册,因此启用后请重新加载。
4
抓取受保护的路由
发送与你的 operator 客户端相同的 gateway 认证:
5
接入 Prometheus
diagnostics.enabled 默认为 true;仅在受严格限制的环境中将其设置为 false。如果它为 false,插件仍会注册 HTTP 路由,但没有诊断事件流入导出器,因此响应为空。导出的指标
For model-call metrics,
observation_unit="request" measures one observable
provider request. observation_unit="turn" measures a synthetic Claude Code
or Codex CLI agent turn that can contain multiple hidden provider requests.
Keep those series separate when comparing latency.
Label policy
受限、低基数的标签
受限、低基数的标签
Prometheus 标签会保持受限且低基数。导出器不会输出原始诊断标识符,例如
runId、sessionKey、sessionId、callId、toolCallId、消息 ID、聊天 ID 或提供方请求 ID。标签值会被脱敏,并且必须符合 OpenClaw 的低基数字符策略。不符合该策略的值会根据指标不同被替换为 unknown、other 或 none。看起来像带作用域的 agent session key 的标签也会被替换为 unknown。系列上限与溢出计数
系列上限与溢出计数
导出器将内存中保留的时间序列总数上限设为 2048,该上限适用于计数器、仪表和直方图的总和。超过该上限的新系列会被丢弃,并且每发生一次,
openclaw_prometheus_series_dropped_total 就会加一。请将这个计数器视为上游属性泄露高基数值的硬性信号。导出器不会自动取消该上限;如果它持续上升,应修复数据源,而不是禁用上限。Prometheus 输出中绝不会出现的内容
Prometheus 输出中绝不会出现的内容
- prompt 文本、response 文本、工具输入、工具输出、系统 prompt
- Talk 转录、音频负载、call id、room id、handoff token、turn id 以及原始 session id
- 原始提供方请求 ID(仅在适用时,span 上使用有界哈希,指标中绝不会出现)
- session key 和 session ID
- 主机名、文件路径、密钥值
PromQL 示例
在 Prometheus 和 OpenTelemetry 导出之间进行选择
OpenClaw 独立支持这两种方式。你可以运行其中一种、两种都运行,或者都不运行。- diagnostics-prometheus
- diagnostics-otel
- 拉取 模式:Prometheus 抓取
/api/diagnostics/prometheus。 - 不需要外部 collector。
- 通过正常的 Gateway 认证进行认证。
- 该方式仅提供指标(不包含 traces 或 logs)。
- 适合已经标准化为 Prometheus + Grafana 的技术栈。
故障排查
空响应体
空响应体
- 检查配置中
diagnostics.enabled是否未设置为false(默认值为true)。 - 使用
openclaw plugins list --enabled确认插件已启用并加载。 - 生成一些流量;计数器和直方图只有在至少发生一次事件后才会输出行。
401 / 未授权
401 / 未授权
该端点要求 Gateway operator 范围(
auth: "gateway" 且 gatewayRuntimeScopeSurface: "trusted-operator")。请使用 Prometheus 访问任何其他 Gateway operator 路由时所用的同一 token 或密码。没有公开的、无需认证的模式。`openclaw_prometheus_series_dropped_total` 持续上升
`openclaw_prometheus_series_dropped_total` 持续上升
某个新属性正在超过 2048 个 series 的上限。请检查最近的指标中是否有意外的高基数标签,并在源头修复。导出器会有意丢弃新 series,而不是悄悄重写标签。
重启后 Prometheus 显示陈旧的 series
重启后 Prometheus 显示陈旧的 series
插件只在内存中保留状态。Gateway 重启后,计数器会重置为零,而 gauge 会从其下次报告的值重新开始。请使用 PromQL 的
rate() 和 increase() 以正确处理重置。相关
- 诊断导出 — 用于支持包的本地诊断 zip
- 健康和就绪 —
/healthz和/readyz探测 - 日志记录 — 基于文件的日志记录
- OpenTelemetry 导出 — 用于跟踪、指标和日志的 OTLP 推送