Resumen
Section titled “Resumen”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.
Endpoints
Section titled “Endpoints”GET /runtime/sensors
Section titled “GET /runtime/sensors”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étricas
Section titled “Métricas”Sensor fusion metrics (4 nuevas)
Section titled “Sensor fusion metrics (4 nuevas)”| Métrica | Tipo | Labels | Descripción |
|---|---|---|---|
ailab_sensor_fusion_total | Counter | source, status | Colecciones de sensor fusion ejecutadas |
ailab_sensor_fusion_duration_ms | Histogram | source | Duración de la colección por source |
ailab_sensor_fusion_missing_source_total | Counter | source | Sources que fallaron en la colección |
ailab_observed_runtime_context_size_bytes | Gauge | - | Tamaño del snapshot OBSERVED_RUNTIME |
Labels disponibles
Section titled “Labels disponibles”| Label | Valores | Descripción |
|---|---|---|
| source | ”all” o nombre del dominio | Fuente de datos |
| status | ”ok”, “timeout”, “missing” | Estado de la colección |
Ejemplos PromQL
Section titled “Ejemplos PromQL”# Sensor fusion rate (últimos 5 min)rate(ailab_sensor_fusion_total{status="ok"}[5m])
# Duración promedio de sensor fusionrate(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_bytesDashboards
Section titled “Dashboards”Nuevos paneles recomendados para Grafana
Section titled “Nuevos paneles recomendados para Grafana”| Panel | Query | Tipo |
|---|---|---|
| Sensor Fusion Rate | rate(ailab_sensor_fusion_total[5m]) | Stat |
| Fusion Duration | histogram_quantile(0.95, rate(ailab_sensor_fusion_duration_ms_bucket[5m])) | Gauge |
| Missing Sources | ailab_sensor_fusion_missing_source_total | Stat (alarma si >0) |
| OBSERVED_RUNTIME Size | ailab_observed_runtime_context_size_bytes | Time series |
| Domain Confidence | count(ailab_sensor_fusion_total{status="ok"}) by (source) | Table |
Alertas recomendadas
Section titled “Alertas recomendadas”Sensor Fusion Degradation
Section titled “Sensor Fusion Degradation”alert: SensorFusionDegradationexpr: rate(ailab_sensor_fusion_total{status="timeout"}[5m]) > 0for: 2mlabels: severity: warningannotations: summary: "Sensor fusion está perdiendo sources"Missing Sources Persistentes
Section titled “Missing Sources Persistentes”alert: SensorFusionMissingSourcesexpr: ailab_sensor_fusion_missing_source_total > 0for: 5mlabels: severity: criticalannotations: summary: "Sources missing en sensor fusion"Troubleshooting
Section titled “Troubleshooting”El endpoint /runtime/sensors devuelve 200 pero faltan sources
Section titled “El endpoint /runtime/sensors devuelve 200 pero faltan sources”Posibles causas:
- Prometheus no responde (timeout 2s)
- Target específico está DOWN
- Cache TTL no renovado
Diagnóstico:
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")'GPU metrics no aparecen
Section titled “GPU metrics no aparecen”- Verificar que el target 9183 responde:
curl http://192.168.1.50:9183/metrics | grep gpu_load- Verificar que Prometheus scrapea el target:
curl http://192.168.1.40:9090/api/v1/query?query=up{job="ai-lab-gpu-metrics"}OBSERVED_RUNTIME excede 16KB
Section titled “OBSERVED_RUNTIME excede 16KB”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.
Relación con FASE 29 observability
Section titled “Relación con FASE 29 observability”| Aspecto | FASE 29 | FASE 30I |
|---|---|---|
| Enfoque | Rendimiento y SLO | Estado y topología |
| Métricas | Latencia, timeouts, GPU pressure | Sensor health, confidence, freshness |
| Endpoints | /slo/health | /runtime/sensors |
| Fuente | Código runtime + LM Studio | Prometheus + LM Studio |
| Consumidor | Operadores humanos | LLM (OBSERVED_RUNTIME) |