diagnostics-prometheus. Il Plugin ascolta la diagnostica interna attendibile e rende disponibile un endpoint testuale Prometheus su:
text/plain; version=0.0.4; charset=utf-8, il formato di esposizione standard di Prometheus.
Per trace, log, push OTLP e attributi semantici GenAI di OpenTelemetry, consulta OpenTelemetry export.
Avvio rapido
Riavvia il Gateway
La route HTTP viene registrata all’avvio del Plugin, quindi ricarica dopo l’abilitazione.
Esegui lo scraping della route protetta
Invia la stessa auth del gateway usata dai tuoi client operatore:
diagnostics.enabled: true è obbligatorio. Senza di esso, il Plugin registra comunque la route HTTP ma nessun evento diagnostico fluisce verso l’exporter, quindi la risposta è vuota.Metriche esportate
| Metrica | Tipo | Label |
|---|---|---|
openclaw_run_completed_total | counter | channel, model, outcome, provider, trigger |
openclaw_run_duration_seconds | histogram | channel, model, outcome, provider, trigger |
openclaw_model_call_total | counter | api, error_category, model, outcome, provider, transport |
openclaw_model_call_duration_seconds | histogram | api, error_category, model, outcome, provider, transport |
openclaw_model_tokens_total | counter | agent, channel, model, provider, token_type |
openclaw_gen_ai_client_token_usage | histogram | 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 | histogram | 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 | histogram | channel, error_category, harness, model, outcome, phase, plugin, provider |
openclaw_message_processed_total | counter | channel, outcome, reason |
openclaw_message_processed_duration_seconds | histogram | channel, outcome, reason |
openclaw_message_delivery_total | counter | channel, delivery_kind, error_category, outcome |
openclaw_message_delivery_duration_seconds | histogram | channel, delivery_kind, error_category, outcome |
openclaw_queue_lane_size | gauge | lane |
openclaw_queue_lane_wait_seconds | histogram | lane |
openclaw_session_state_total | counter | reason, state |
openclaw_session_queue_depth | gauge | state |
openclaw_memory_bytes | gauge | kind |
openclaw_memory_rss_bytes | histogram | none |
openclaw_memory_pressure_total | counter | level, reason |
openclaw_telemetry_exporter_total | counter | exporter, reason, signal, status |
openclaw_prometheus_series_dropped_total | counter | none |
Policy delle label
Label limitate e a bassa cardinalità
Label limitate e a bassa cardinalità
Le label Prometheus restano limitate e a bassa cardinalità. L’exporter non emette identificatori diagnostici grezzi come
runId, sessionKey, sessionId, callId, toolCallId, ID messaggio, ID chat o ID richiesta del provider.I valori delle label vengono redatti e devono rispettare la policy dei caratteri a bassa cardinalità di OpenClaw. I valori che non la rispettano vengono sostituiti con unknown, other o none, a seconda della metrica.Limite delle serie e contabilizzazione dell’overflow
Limite delle serie e contabilizzazione dell’overflow
L’exporter limita le serie temporali mantenute in memoria a 2048 serie complessive tra counter, gauge e histogram. Le nuove serie oltre questo limite vengono scartate e
openclaw_prometheus_series_dropped_total aumenta di uno ogni volta.Monitora questo counter come segnale forte che un attributo upstream sta lasciando passare valori ad alta cardinalità. L’exporter non alza mai automaticamente il limite; se cresce, correggi la sorgente invece di disabilitare il limite.Cosa non compare mai nell’output Prometheus
Cosa non compare mai nell’output Prometheus
- testo del prompt, testo della risposta, input degli strumenti, output degli strumenti, system prompt
- ID richiesta grezzi del provider (solo hash limitati, dove applicabile, negli span — mai nelle metriche)
- chiavi di sessione e ID sessione
- hostname, percorsi file, valori segreti
Ricette PromQL
Scegliere tra esportazione Prometheus e OpenTelemetry
OpenClaw supporta entrambe le superfici in modo indipendente. Puoi usare una sola, entrambe o nessuna.- diagnostics-prometheus
- diagnostics-otel
- Modello pull: Prometheus esegue lo scraping di
/api/diagnostics/prometheus. - Non richiede un collector esterno.
- Autenticato tramite la normale auth del Gateway.
- La superficie include solo metriche (nessuna trace o log).
- Ideale per stack già standardizzati su Prometheus + Grafana.
Risoluzione dei problemi
Corpo della risposta vuoto
Corpo della risposta vuoto
- Controlla
diagnostics.enabled: truenella config. - Conferma che il Plugin sia abilitato e caricato con
openclaw plugins list --enabled. - Genera un po’ di traffico; counter e histogram emettono righe solo dopo almeno un evento.
401 / unauthorized
401 / unauthorized
`openclaw_prometheus_series_dropped_total` sta aumentando
`openclaw_prometheus_series_dropped_total` sta aumentando
Un nuovo attributo sta superando il limite di 2048 serie. Ispeziona le metriche recenti per trovare una label con cardinalità inaspettatamente alta e correggila alla sorgente. L’exporter scarta intenzionalmente le nuove serie invece di riscrivere silenziosamente le label.
Prometheus mostra serie obsolete dopo un riavvio
Prometheus mostra serie obsolete dopo un riavvio
Il Plugin mantiene lo stato solo in memoria. Dopo un riavvio del Gateway, i counter vengono azzerati e i gauge ripartono dal loro successivo valore riportato. Usa PromQL
rate() e increase() per gestire i reset in modo pulito.Correlati
- Esportazione della diagnostica — zip diagnostico locale per pacchetti di supporto
- Salute e readiness — probe
/healthze/readyz - Logging — logging basato su file
- OpenTelemetry export — push OTLP per trace, metriche e log