diagnostics-prometheus. Ele escuta diagnósticos internos confiáveis e renderiza um endpoint de texto do Prometheus em:
text/plain; version=0.0.4; charset=utf-8, o formato padrão de exposição do Prometheus.
Para traces, logs, push OTLP e atributos semânticos GenAI do OpenTelemetry, consulte Exportação OpenTelemetry.
Início rápido
diagnostics.enabled: true é obrigatório. Sem isso, o Plugin ainda registra a rota HTTP, mas nenhum evento de diagnóstico flui para o exportador, então a resposta fica vazia.Métricas exportadas
| Métrica | Tipo | Labels |
|---|---|---|
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 |
Política de labels
Labels limitados e de baixa cardinalidade
Labels limitados e de baixa cardinalidade
Labels do Prometheus permanecem limitados e de baixa cardinalidade. O exportador não emite identificadores brutos de diagnóstico, como
runId, sessionKey, sessionId, callId, toolCallId, IDs de mensagem, IDs de chat ou IDs de requisição do provedor.Valores de label são redigidos e devem corresponder à política de caracteres de baixa cardinalidade do OpenClaw. Valores que não atendem à política são substituídos por unknown, other ou none, dependendo da métrica.Limite de séries e contabilização de overflow
Limite de séries e contabilização de overflow
O exportador limita as séries temporais retidas em memória a 2048 séries no total, somando counters, gauges e histograms. Novas séries além desse limite são descartadas, e
openclaw_prometheus_series_dropped_total é incrementada em um a cada vez.Monitore esse contador como um sinal forte de que um atributo upstream está vazando valores de alta cardinalidade. O exportador nunca aumenta o limite automaticamente; se ele crescer, corrija a origem em vez de desativar o limite.O que nunca aparece na saída do Prometheus
O que nunca aparece na saída do Prometheus
- texto de prompt, texto de resposta, entradas de ferramenta, saídas de ferramenta, prompts de sistema
- IDs brutos de requisição do provedor (apenas hashes limitados, quando aplicável, em spans — nunca em métricas)
- chaves de sessão e IDs de sessão
- hostnames, caminhos de arquivo, valores secretos
Receitas PromQL
Escolhendo entre exportação Prometheus e OpenTelemetry
O OpenClaw oferece suporte a ambas as superfícies de forma independente. Você pode executar uma, ambas ou nenhuma.- diagnostics-prometheus
- diagnostics-otel
- Modelo de pull: o Prometheus faz scrape de
/api/diagnostics/prometheus. - Nenhum coletor externo é necessário.
- Autenticado por meio da auth normal do Gateway.
- A superfície é somente de métricas (sem traces nem logs).
- Ideal para stacks já padronizadas em Prometheus + Grafana.
Solução de problemas
Corpo de resposta vazio
Corpo de resposta vazio
- Verifique
diagnostics.enabled: truena configuração. - Confirme se o Plugin está ativado e carregado com
openclaw plugins list --enabled. - Gere algum tráfego; counters e histograms só emitem linhas após pelo menos um evento.
401 / unauthorized
401 / unauthorized
`openclaw_prometheus_series_dropped_total` está aumentando
`openclaw_prometheus_series_dropped_total` está aumentando
Um novo atributo está excedendo o limite de 2048 séries. Inspecione as métricas recentes em busca de um label com cardinalidade inesperadamente alta e corrija isso na origem. O exportador descarta intencionalmente novas séries em vez de reescrever labels silenciosamente.
O Prometheus mostra séries obsoletas após um restart
O Prometheus mostra séries obsoletas após um restart
O Plugin mantém estado apenas em memória. Após um restart do Gateway, counters são redefinidos para zero e gauges reiniciam no próximo valor reportado. Use
rate() e increase() em PromQL para lidar com resets corretamente.Relacionado
- Exportação de diagnósticos — zip local de diagnósticos para pacotes de suporte
- Integridade e prontidão — probes
/healthze/readyz - Logging — logging baseado em arquivo
- Exportação OpenTelemetry — push OTLP para traces, métricas e logs