Skip to main content
OpenClaw 可透過官方 diagnostics-prometheus 外掛公開診斷指標。它會接收受信任的診斷事件,以及 內部加上標記、由分派器管理的診斷事件(佇列、記憶體和 工作階段復原訊號),並於以下位置呈現 Prometheus 文字端點:
內容類型為 text/plain; version=0.0.4; charset=utf-8,即標準的 Prometheus 公開格式。
此路由使用閘道驗證(操作員範圍、受信任操作員介面)。請勿將其公開為未經驗證的 /metrics 端點。請透過其他操作員 API 所使用的相同驗證路徑擷取資料。
關於追蹤、日誌、OTLP 推送和 OpenTelemetry GenAI 語意屬性,請參閱 OpenTelemetry 匯出

快速開始

1

安裝外掛

2

啟用外掛

3

重新啟動閘道

HTTP 路由會在外掛啟動時註冊,因此啟用後請重新載入。
4

擷取受保護的路由

傳送操作員用戶端所使用的相同閘道驗證資訊:
5

連接 Prometheus

diagnostics.enabled 預設為 true;只有在嚴格受限的環境中,才將其設為 false。若其為 false,外掛仍會註冊 HTTP 路由,但不會有任何診斷事件流入匯出器,因此回應為空。

匯出的指標

對於模型呼叫指標,observation_unit="request" 會測量一次可觀察的 供應商請求。observation_unit="turn" 會測量一個合成的 Claude Code 或 Codex 命令列介面代理程式回合,其中可能包含多個隱藏的供應商請求。 比較延遲時,請將這些時間序列分開。

標籤政策

Prometheus 標籤會維持有界且低基數。匯出器不會發出原始診斷識別碼,例如 runIdsessionKeysessionIdcallIdtoolCallId、訊息 ID、聊天 ID 或供應商請求 ID。標籤值會經過遮蔽,且必須符合 OpenClaw 的低基數字元政策。不符合政策的值會依指標替換為 unknownothernone。看似具範圍限定的代理程式工作階段金鑰之標籤,也會替換為 unknown
匯出器在記憶體中保留的時間序列上限為 2048 個,合併計算計數器、儀表與直方圖。超出此上限的新時間序列會遭捨棄,且每次都會讓 openclaw_prometheus_series_dropped_total 增加一。請監看此計數器,將它視為上游某個屬性正在洩漏高基數值的明確訊號。匯出器絕不會自動提高上限;如果計數持續上升,請修正來源,而不是停用上限。
  • 提示文字、回應文字、工具輸入、工具輸出、系統提示
  • Talk 逐字稿、音訊承載資料、通話 ID、房間 ID、移交權杖、回合 ID,以及原始工作階段 ID
  • 原始供應商請求 ID(僅在適用時於跨度中使用有界雜湊值,絕不會用於指標)
  • 工作階段金鑰與工作階段 ID
  • 主機名稱、檔案路徑、秘密值

PromQL 配方

跨供應商儀表板建議使用 gen_ai_client_token_usage:它遵循 OpenTelemetry GenAI 語意慣例,並與非 OpenClaw GenAI 服務的指標一致。

在 Prometheus 與 OpenTelemetry 匯出之間選擇

OpenClaw 獨立支援這兩種介面。你可以執行其中任一種、兩種都執行,或兩種都不執行。
  • 拉取模型:Prometheus 會抓取 /api/diagnostics/prometheus
  • 不需要外部收集器。
  • 透過一般的閘道驗證進行身分驗證。
  • 此介面僅提供指標(不含追蹤或日誌)。
  • 最適合已標準化採用 Prometheus + Grafana 的技術堆疊。

疑難排解

  • 檢查設定中的 diagnostics.enabled 是否未設為 false(預設為 true)。
  • 使用 openclaw plugins list --enabled 確認外掛已啟用並載入。
  • 產生一些流量;計數器與直方圖只有在至少發生一次事件後才會輸出資料列。
此端點需要閘道操作員範圍(auth: "gateway" 搭配 gatewayRuntimeScopeSurface: "trusted-operator")。請使用 Prometheus 存取任何其他閘道操作員路由時所用的相同權杖或密碼。不提供公開且無須驗證的模式。
有新的屬性超出 2048 個時間序列的上限。檢查近期指標中是否有基數異常偏高的標籤,並從來源修正。匯出器會刻意捨棄新的時間序列,而不是在未告知的情況下改寫標籤。
外掛只會將狀態保存在記憶體中。閘道重新啟動後,計數器會重設為零,儀表則會從下一個回報值重新開始。使用 PromQL 的 rate()increase(),即可妥善處理重設。

相關內容