Ir al contenido

Métricas de Prometheus

OpenClaw puede exponer métricas de diagnóstico a través del complemento oficial diagnostics-prometheus. Escucha los diagnósticos internos de confianza y representa un punto final de texto de Prometheus en:

GET /api/diagnostics/prometheus

El tipo de contenido es text/plain; version=0.0.4; charset=utf-8, el formato de exposición estándar de Prometheus.

Para trazas, registros, envío OTLP y atributos semánticos de OpenTelemetry GenAI, consulte Exportación de OpenTelemetry.

  1. Instalar el complemento

    Ventana de terminal
    openclaw plugins install clawhub:@openclaw/diagnostics-prometheus
  2. Habilitar el complemento

    {
    plugins: {
    allow: ["diagnostics-prometheus"],
    entries: {
    "diagnostics-prometheus": { enabled: true },
    },
    },
    diagnostics: {
    enabled: true,
    },
    }
  3. Reiniciar el Gateway

    La ruta HTTP se registra al inicio del complemento, por lo que debe recargar después de habilitarlo.

  4. Extraer la ruta protegida

    Envíe la misma autenticación de puerta de enlace que utilizan sus clientes de operador:

    Ventana de terminal
    curl -H "Authorization: Bearer $OPENCLAW_GATEWAY_TOKEN" \
    http://127.0.0.1:18789/api/diagnostics/prometheus
  5. Conectar Prometheus

    prometheus.yml
    scrape_configs:
    - job_name: openclaw
    scrape_interval: 30s
    metrics_path: /api/diagnostics/prometheus
    authorization:
    credentials_file: /etc/prometheus/openclaw-gateway-token
    static_configs:
    - targets: ["openclaw-gateway:18789"]

MétricaTipoEtiquetas
openclaw_run_completed_totalcontadorchannel, model, outcome, provider, trigger
openclaw_run_duration_secondshistogramachannel, model, outcome, provider, trigger
openclaw_model_call_totalcontadorapi, error_category, model, outcome, provider, transport
openclaw_model_call_duration_secondshistogramaapi, error_category, model, outcome, provider, transport
openclaw_model_tokens_totalcontadoragent, channel, model, provider, token_type
openclaw_gen_ai_client_token_usagehistogramamodel, provider, token_type
openclaw_model_cost_usd_totalcontadoragent, channel, model, provider
openclaw_tool_execution_totalcontadorerror_category, outcome, params_kind, tool
openclaw_tool_execution_duration_secondshistogramaerror_category, outcome, params_kind, tool
openclaw_harness_run_totalcontadorchannel, error_category, harness, model, outcome, phase, plugin, provider
openclaw_harness_run_duration_secondshistogramachannel, error_category, harness, model, outcome, phase, plugin, provider
openclaw_message_processed_totalcontadorchannel, outcome, reason
openclaw_message_processed_duration_secondshistogramchannel, outcome, reason
openclaw_message_delivery_started_totalcounterchannel, delivery_kind
openclaw_message_delivery_totalcontadorchannel, delivery_kind, error_category, outcome
openclaw_message_delivery_duration_secondshistogramachannel, delivery_kind, error_category, outcome
openclaw_talk_event_totalcontadorbrain, event_type, mode, provider, transport
openclaw_talk_event_duration_secondshistogramabrain, event_type, mode, provider, transport
openclaw_talk_audio_byteshistogramabrain, event_type, mode, provider, transport
openclaw_queue_lane_sizegaugelane
openclaw_queue_lane_wait_secondshistogramlane
openclaw_session_state_totalcounterreason, state
openclaw_session_queue_depthindicadorstate
openclaw_session_recovery_totalcounteraction, active_work_kind, state, status
openclaw_session_recovery_age_secondshistogramaaction, active_work_kind, state, status
openclaw_memory_bytesindicadorkind
openclaw_memory_rss_byteshistogramninguno
openclaw_memory_pressure_totalcontadorlevel, reason
openclaw_telemetry_exporter_totalcontadorexporter, reason, signal, status
openclaw_prometheus_series_dropped_totalcontadorninguno
Etiquetas delimitadas y de baja cardinalidad

Las etiquetas de Prometheus se mantienen delimitadas y de baja cardinalidad. El exportador no emite identificadores de diagnóstico sin procesar, como runId, sessionKey, sessionId, callId, toolCallId, IDs de mensaje, IDs de chat o IDs de solicitud del proveedor.

Los valores de las etiquetas se redactan y deben coincidir con la política de caracteres de baja cardinalidad de OpenClaw. Los valores que no cumplen con la política se reemplazan con unknown, other o none, según la métrica.

Límite de series y contabilidad de desbordamiento

El exportador limita las series temporales retenidas en memoria a 2048 series en total entre contadores, indicadores e histogramas. Las series nuevas que superen ese límite se descartan y openclaw_prometheus_series_dropped_total se incrementa en una cada vez.

Vigile este contador como una señal fuerte de que un atributo aguas arriba está filtrando valores de alta cardinalidad. El exportador nunca elimina el límite automáticamente; si aumenta, solucione el origen en lugar de deshabilitar el límite.

Lo que nunca aparece en la salida de Prometheus
  • texto del prompt, texto de respuesta, entradas de herramientas, salidas de herramientas, prompts del sistema
  • transcripciones de Talk, cargas de audio, IDs de llamada, IDs de sala, tokens de transferencia, IDs de turno e IDs de sesión sin procesar
  • IDs de solicitud de proveedor sin procesar (solo hash delimitados, cuando corresponda, en spans: nunca en métricas)
  • claves de sesión e IDs de sesión
  • nombres de host, rutas de archivo, valores secretos
# Tokens per minute, split by provider
sum by (provider) (rate(openclaw_model_tokens_total[1m]))
# Spend (USD) over the last hour, by model
sum by (model) (increase(openclaw_model_cost_usd_total[1h]))
# 95th percentile model run duration
histogram_quantile(
0.95,
sum by (le, provider, model)
(rate(openclaw_run_duration_seconds_bucket[5m]))
)
# Queue wait time SLO (95p under 2s)
histogram_quantile(
0.95,
sum by (le, lane) (rate(openclaw_queue_lane_wait_seconds_bucket[5m]))
) < 2
# Dropped Prometheus series (cardinality alarm)
increase(openclaw_prometheus_series_dropped_total[15m]) > 0

Elección entre la exportación de Prometheus y OpenTelemetry

Sección titulada «Elección entre la exportación de Prometheus y OpenTelemetry»

OpenClaw admite ambas superficies de forma independiente. Puede ejecutar una, ambas o ninguna.

  • Modelo de extracción (Pull): Prometheus extrae /api/diagnostics/prometheus.
  • No se requiere un recopilador externo.
  • Autenticado a través de la autenticación normal de Gateway.
  • La superficie es solo métricas (sin trazas ni registros).
  • Lo mejor para pilas ya estandarizadas en Prometheus + Grafana.
Cuerpo de respuesta vacío
  • Compruebe diagnostics.enabled: true en la configuración.
  • Confirme que el complemento esté habilitado y cargado con openclaw plugins list --enabled.
  • Genere algo de tráfico; los contadores e histogramas solo emiten líneas después de al menos un evento.
401 / no autorizado

El punto final requiere el ámbito de operador de Gateway (auth: "gateway" con gatewayRuntimeScopeSurface: "trusted-operator"). Use el mismo token o contraseña que Prometheus usa para cualquier otra ruta de operador de Gateway. No existe un modo público no autenticado.

`openclaw_prometheus_series_dropped_total` está aumentando

Un nuevo atributo está superando el límite de 2048 series. Inspeccione las métricas recientes para encontrar una etiqueta de cardinalidad inesperadamente alta y corríjala en la fuente. El exportador descarta intencionalmente las nuevas series en lugar de reescribir las etiquetas silenciosamente.

Prometheus muestra series obsoletas después de un reinicio

El complemento mantiene el estado solo en la memoria. Después de reiniciar el Gateway, los contadores se restablecen a cero y los medidores se reinician en su siguiente valor informado. Use PromQL rate() y increase() para manejar los reinicios de manera limpia.