Lab Notes
Operations

Telemetry

Qué observa el lab. Las métricas, los logs, los traces y los dashboards.

Propósito

Esta página documenta la telemetry del lab: las métricas que recolecta el lab, los logs que escribe, los traces que produce y los dashboards que el operator puede construir a partir de ellos.

La telemetry es la base del modelo de auditoría (Modelo de auditoría) y de los health checks (Health Checks).

Métricas

El lab recolecta las siguientes métricas:

Métricas del Coordinator

MétricaTipoDescripción
coordinator.sessions.activegaugeEl número de sesiones activas.
coordinator.requests.totalcounterEl número total de requests recibidas.
coordinator.requests.failedcounterEl número total de requests fallidas.
coordinator.duration_ms.p50gaugeLa duración p50 de las requests.
coordinator.duration_ms.p95gaugeLa duración p95 de las requests.
coordinator.duration_ms.p99gaugeLa duración p99 de las requests.
coordinator.tokens.usedcounterEl total de tokens usados por el Coordinator.
coordinator.tokens.remaininggaugeLos tokens restantes en la quota.

Métricas del Research Worker

MétricaTipoDescripción
research.missions.activegaugeEl número de misiones activas.
research.missions.totalcounterEl número total de misiones iniciadas.
research.missions.succeededcounterEl número total de misiones que succeed.
research.missions.failedcounterEl número total de misiones que fallaron.
research.missions.partialcounterEl número total de misiones parciales.
research.phases.duration_mshistogramLa duración de cada fase, por phase ID.
research.adapters.requestscounterEl número de requests por adaptador.
research.adapters.errorscounterEl número de errores por adaptador.
research.tokens.usedcounterEl total de tokens usados por el adaptador Perplexity.

Métricas del Media Agent

MétricaTipoDescripción
media.requests.totalcounterEl número total de media requests.
media.playbacks.startedcounterEl número total de playbacks iniciadas.
media.playbacks.failedcounterEl número total de playbacks que fallaron.
media.backends.usedcounterEl número de veces que se usó cada backend.
media.devices.discoveredgaugeEl número de devices actualmente descubiertos.

Métricas del Web Agent

MétricaTipoDescripción
web.actions.totalcounterEl número total de acciones del browser.
web.actions.failedcounterEl número total de acciones fallidas.
web.snapshots.totalcounterEl número total de snapshots tomados.
web.duration_ms.p50gaugeLa duración p50 de las acciones.
web.duration_ms.p95gaugeLa duración p95 de las acciones.

Métricas del Coding Assistant

MétricaTipoDescripción
coding.invocations.totalcounterEl número total de invocaciones del sub-agent.
coding.invocations.failedcounterEl número total de invocaciones que fallaron.
coding.duration_ms.p50gaugeLa duración p50 de las invocaciones.
coding.iterations.p50gaugeLas iteraciones p50 por invocación.
coding.tokens.usedcounterEl total de tokens usados por el sub-agent.

Logs

El lab escribe los siguientes logs:

Log del Coordinator

El log del Coordinator está en {workspace-root}/logs/coordinator.log. Registra:

  • Cada request recibida (con session ID y request ID).
  • Cada response enviada (con status, duración y resumen del resultado).
  • Cada cambio de estado (inicio/fin de sesión, memory write, etc.).
  • Cada error (con stack trace).

El formato del log es JSON Lines (un objeto JSON por línea). El log se rota diario.

Log de Scout

El log de Scout está en ~/.openclaw-scout/logs/gateway.log. Registra el mismo tipo de eventos para el Research Worker y el Media Agent.

Log del Coding sub-agent

El log del Coding sub-agent está en ~/Documents/Codex/YYYY-MM-DD/<session>/log.jsonl. El sub-agent escribe su propio formato de log.

Log de misión

Cada misión tiene un log en {research-root}/runs/<mission_id>/logs/mission.log. El log registra cada transición de fase y cada escritura de artefacto.

Request journal

El request journal está en {framework-root}/runtime/request_journal.jsonl. Registra cada llamada externa. El journal es el log más detallado; está documentado en External Providers → Request journal.

Traces

El lab produce traces para misiones de research. Un trace es un directed acyclic graph de ejecuciones de fase. El trace se reconstruye a partir de phase.json y el mission log.

El formato del trace es OpenTelemetry-compatible. El Coordinator puede exportar el trace a un backend de tracing si hay uno configurado.

Dashboards

El lab tiene un pequeño conjunto de dashboards construidos a partir de la telemetry. Los dashboards son:

Dashboard del Coordinator

  • Sesiones activas (gauge).
  • Request rate (counter rate).
  • Error rate (counter rate).
  • Percentiles de duración de requests (gauges).
  • Token usage (counter rate).

Dashboard del Research Worker

  • Misiones activas (gauge).
  • Mission rate (counter rate).
  • Tasa de éxito de misiones (gauge).
  • Percentiles de duración de fase (gauges, por fase).
  • Error rate de adaptadores (counter rate, por adaptador).

Dashboard del Media Agent

  • Playback rate (counter rate).
  • Playback failure rate (counter rate).
  • Backend usage (counter rate, por backend).
  • Device count (gauge).

Los dashboards los construye el operator a partir de las métricas. El lab no tiene un servidor de dashboards built-in; el operator exporta las métricas a un backend de su elección (p. ej., Prometheus + Grafana, o un dashboard simple basado en texto).

Retención

DataRetenciónUbicación
Coordinator log30 días{workspace-root}/logs/
Scout log30 días~/.openclaw-scout/logs/
Mission logMission lifetime + 30 días{research-root}/runs/<id>/logs/
Request journalIndefinida (rotada){framework-root}/runtime/
Metrics90 días(exportadas)

La retención la aplica la tarea de cleanup diaria.

Sampling

Algunas métricas se muestrean para reducir overhead:

  • *_duration_ms.p50/p95/p99 se calcula a partir de un sample del 10% de las requests.
  • El request journal registra cada request, pero el body de las requests grandes se trunca.

El sampling rate es configurable. El default es 10% para percentiles, 0% de truncación para bodies del journal.

Ver también