diagnostics-prometheus verfügbar machen. Es lauscht auf vertrauenswürdige interne Diagnosedaten und stellt einen Prometheus-Textendpunkt bereit unter:
text/plain; version=0.0.4; charset=utf-8, das Standardformat für die Prometheus-Exposition.
Für Traces, Logs, OTLP-Push und semantische OpenTelemetry-GenAI-Attribute siehe OpenTelemetry export.
Schnellstart
Das Gateway neu starten
Die HTTP-Route wird beim Start des Plugins registriert, daher nach dem Aktivieren neu laden.
Die geschützte Route erfassen
Senden Sie dieselbe Gateway-Authentifizierung, die Ihre Operator-Clients verwenden:
diagnostics.enabled: true ist erforderlich. Ohne diese Einstellung registriert das Plugin zwar weiterhin die HTTP-Route, aber es fließen keine Diagnoseereignisse in den Exporter, sodass die Antwort leer ist.Exportierte Metriken
| Metrik | Typ | Labels |
|---|---|---|
openclaw_run_completed_total | Counter | channel, model, outcome, provider, trigger |
openclaw_run_duration_seconds | Histogramm | channel, model, outcome, provider, trigger |
openclaw_model_call_total | Counter | api, error_category, model, outcome, provider, transport |
openclaw_model_call_duration_seconds | Histogramm | api, error_category, model, outcome, provider, transport |
openclaw_model_tokens_total | Counter | agent, channel, model, provider, token_type |
openclaw_gen_ai_client_token_usage | Histogramm | model, provider, token_type |
openclaw_model_cost_usd_total | Counter | agent, channel, model, provider |
openclaw_tool_execution_total | Counter | error_category, outcome, params_kind, tool |
openclaw_tool_execution_duration_seconds | Histogramm | error_category, outcome, params_kind, tool |
openclaw_harness_run_total | Counter | channel, error_category, harness, model, outcome, phase, plugin, provider |
openclaw_harness_run_duration_seconds | Histogramm | channel, error_category, harness, model, outcome, phase, plugin, provider |
openclaw_message_processed_total | Counter | channel, outcome, reason |
openclaw_message_processed_duration_seconds | Histogramm | channel, outcome, reason |
openclaw_message_delivery_total | Counter | channel, delivery_kind, error_category, outcome |
openclaw_message_delivery_duration_seconds | Histogramm | channel, delivery_kind, error_category, outcome |
openclaw_queue_lane_size | Gauge | lane |
openclaw_queue_lane_wait_seconds | Histogramm | lane |
openclaw_session_state_total | Counter | reason, state |
openclaw_session_queue_depth | Gauge | state |
openclaw_memory_bytes | Gauge | kind |
openclaw_memory_rss_bytes | Histogramm | none |
openclaw_memory_pressure_total | Counter | level, reason |
openclaw_telemetry_exporter_total | Counter | exporter, reason, signal, status |
openclaw_prometheus_series_dropped_total | Counter | none |
Label-Richtlinie
Begrenzte Labels mit niedriger Kardinalität
Begrenzte Labels mit niedriger Kardinalität
Prometheus-Labels bleiben begrenzt und von niedriger Kardinalität. Der Exporter gibt keine rohen Diagnosekennungen wie
runId, sessionKey, sessionId, callId, toolCallId, Nachrichten-IDs, Chat-IDs oder Provider-Request-IDs aus.Label-Werte werden redigiert und müssen der OpenClaw-Zeichenrichtlinie für niedrige Kardinalität entsprechen. Werte, die diese Richtlinie nicht erfüllen, werden je nach Metrik durch unknown, other oder none ersetzt.Obergrenze für Serien und Overflow-Zählung
Obergrenze für Serien und Overflow-Zählung
Der Exporter begrenzt die im Speicher gehaltenen Zeitreihen auf 2048 Serien über Counter, Gauges und Histogramme zusammen. Neue Serien oberhalb dieser Grenze werden verworfen, und
openclaw_prometheus_series_dropped_total wird jedes Mal um eins erhöht.Beobachten Sie diesen Counter als hartes Signal dafür, dass ein Attribut upstream hochkardinale Werte leakt. Der Exporter hebt die Grenze niemals automatisch an; wenn sie steigt, beheben Sie die Ursache statt die Grenze zu deaktivieren.Was niemals in der Prometheus-Ausgabe erscheint
Was niemals in der Prometheus-Ausgabe erscheint
- Prompt-Text, Antworttext, Tool-Eingaben, Tool-Ausgaben, System-Prompts
- rohe Provider-Request-IDs (nur begrenzte Hashes, wo anwendbar, auf Spans — niemals auf Metriken)
- Sitzungsschlüssel und Sitzungs-IDs
- Hostnamen, Dateipfade, geheime Werte
PromQL-Rezepte
Auswahl zwischen Prometheus- und OpenTelemetry-Export
OpenClaw unterstützt beide Oberflächen unabhängig voneinander. Sie können entweder eine, beide oder keine verwenden.- diagnostics-prometheus
- diagnostics-otel
- Pull-Modell: Prometheus erfasst
/api/diagnostics/prometheus. - Kein externer Collector erforderlich.
- Authentifiziert über die normale Gateway-Authentifizierung.
- Die Oberfläche umfasst nur Metriken (keine Traces oder Logs).
- Am besten geeignet für Stacks, die bereits auf Prometheus + Grafana standardisiert sind.
Fehlerbehebung
Leerer Antwort-Body
Leerer Antwort-Body
- Prüfen Sie
diagnostics.enabled: truein der Konfiguration. - Bestätigen Sie mit
openclaw plugins list --enabled, dass das Plugin aktiviert und geladen ist. - Erzeugen Sie etwas Traffic; Counter und Histogramme geben erst nach mindestens einem Ereignis Zeilen aus.
401 / unauthorized
401 / unauthorized
`openclaw_prometheus_series_dropped_total` steigt
`openclaw_prometheus_series_dropped_total` steigt
Ein neues Attribut überschreitet die Obergrenze von 2048 Serien. Prüfen Sie aktuelle Metriken auf ein unerwartet hochkardinales Label und beheben Sie es an der Quelle. Der Exporter verwirft neue Serien absichtlich, statt Labels stillschweigend umzuschreiben.
Prometheus zeigt nach einem Neustart veraltete Serien
Prometheus zeigt nach einem Neustart veraltete Serien
Das Plugin hält den Status nur im Speicher. Nach einem Gateway-Neustart werden Counter auf null zurückgesetzt und Gauges beginnen mit ihrem nächsten gemeldeten Wert neu. Verwenden Sie PromQL
rate() und increase(), um Resets sauber zu behandeln.Verwandt
- Diagnostics export — lokales Diagnostik-ZIP für Support-Bundles
- Health and readiness — Probes
/healthzund/readyz - Logging — dateibasierte Protokollierung
- OpenTelemetry export — OTLP-Push für Traces, Metriken und Logs