La sensor fusion runtime añade una nueva capa de observabilidad: el runtime ahora puede observarse a sí mismo a través de Prometheus y reportar su propio estado con precisión.

Always-on 200. Devuelve el snapshot completo del sensor fusion:

  • Topología derivada de targets Prometheus
  • 13 dominios con confidence scoring
  • GPU metrics en vivo
  • Freshness labels por source
  • Catálogo de evidencia

Ver FASE 30I — Runtime Sensor Fusion para schema detallado.

MétricaTipoLabelsDescripción
ailab_sensor_fusion_totalCountersource, statusColecciones de sensor fusion ejecutadas
ailab_sensor_fusion_duration_msHistogramsourceDuración de la colección por source
ailab_sensor_fusion_missing_source_totalCountersourceSources que fallaron en la colección
ailab_observed_runtime_context_size_bytesGauge-Tamaño del snapshot OBSERVED_RUNTIME
LabelValoresDescripción
source”all” o nombre del dominioFuente de datos
status”ok”, “timeout”, “missing”Estado de la colección
# Sensor fusion rate (últimos 5 min)
rate(ailab_sensor_fusion_total{status="ok"}[5m])
# Duración promedio de sensor fusion
rate(ailab_sensor_fusion_duration_ms_sum[5m]) / rate(ailab_sensor_fusion_duration_ms_count[5m])
# Sources missing (deben ser 0 en operación normal)
ailab_sensor_fusion_missing_source_total
# Tamaño del OBSERVED_RUNTIME (debe ser <16000)
ailab_observed_runtime_context_size_bytes
PanelQueryTipo
Sensor Fusion Raterate(ailab_sensor_fusion_total[5m])Stat
Fusion Durationhistogram_quantile(0.95, rate(ailab_sensor_fusion_duration_ms_bucket[5m]))Gauge
Missing Sourcesailab_sensor_fusion_missing_source_totalStat (alarma si >0)
OBSERVED_RUNTIME Sizeailab_observed_runtime_context_size_bytesTime series
Domain Confidencecount(ailab_sensor_fusion_total{status="ok"}) by (source)Table
alert: SensorFusionDegradation
expr: rate(ailab_sensor_fusion_total{status="timeout"}[5m]) > 0
for: 2m
labels:
severity: warning
annotations:
summary: "Sensor fusion está perdiendo sources"
alert: SensorFusionMissingSources
expr: ailab_sensor_fusion_missing_source_total > 0
for: 5m
labels:
severity: critical
annotations:
summary: "Sources missing en sensor fusion"

El endpoint /runtime/sensors devuelve 200 pero faltan sources

Section titled “El endpoint /runtime/sensors devuelve 200 pero faltan sources”

Posibles causas:

  1. Prometheus no responde (timeout 2s)
  2. Target específico está DOWN
  3. Cache TTL no renovado

Diagnóstico:

Terminal window
curl http://192.168.1.30:8008/runtime/sensors | jq '.missing_sources'
curl http://192.168.1.40:9090/api/v1/targets | jq '.data.activeTargets[] | select(.health != "up")'
  1. Verificar que el target 9183 responde:
Terminal window
curl http://192.168.1.50:9183/metrics | grep gpu_load
  1. Verificar que Prometheus scrapea el target:
Terminal window
curl http://192.168.1.40:9090/api/v1/query?query=up{job="ai-lab-gpu-metrics"}

Si ailab_observed_runtime_context_size_bytes supera 16000, el contexto se trunca. Posibles causas:

  • Demasiados targets GPU activos
  • Evidence catalog demasiado grande
  • Operational summary inflado

Solución: revisar REPORT_MAX_CHARS en runtime/context/report_runtime_context.py.

AspectoFASE 29FASE 30I
EnfoqueRendimiento y SLOEstado y topología
MétricasLatencia, timeouts, GPU pressureSensor health, confidence, freshness
Endpoints/slo/health/runtime/sensors
FuenteCódigo runtime + LM StudioPrometheus + LM Studio
ConsumidorOperadores humanosLLM (OBSERVED_RUNTIME)