feat(infra): grupo fleet-metrics — collect_host_metrics, format_prom_exposition, push_prom_remote, push_loki_stream, collect_battery_metrics + tipo PromSample (gopsutil; Android-safe: sin exec/pidfd, procesos via /proc)

This commit is contained in:
Egutierrez
2026-06-07 14:25:45 +02:00
parent 8742cb25be
commit d996542f88
14 changed files with 1055 additions and 2 deletions
+39
View File
@@ -0,0 +1,39 @@
---
name: PromSample
lang: go
domain: infra
version: "1.0.0"
algebraic: product
definition: |
type PromSample struct {
Name string // nombre de metrica prometheus, ej "node_cpu_percent"
Labels map[string]string // labels de la serie, ej {"core":"0"} (sin la label "instance")
Value float64
}
description: "Una unica serie de metrica en formato Prometheus: nombre, labels y valor numerico. Es la unidad que producen los colectores (collect_host_metrics) y consume el formateador (format_prom_exposition). NO incluye la label instance: esa la añade el pusher remoto via extra_label."
tags: [prometheus, metrics, sample, fleet-metrics, infra, monitoring]
uses_types: []
file_path: "functions/infra/prom_sample.go"
---
## Campos
- `Name`: nombre de la metrica en formato Prometheus, ej `node_cpu_percent`, `node_disk_used_bytes`. Se sanitiza a `[a-zA-Z0-9_:]` en el formateador.
- `Labels`: mapa clave/valor de labels de la serie, ej `{"core":"0"}`, `{"mount":"/"}`. Puede ser `nil` o vacio (serie sin labels). NO debe incluir la label `instance` — esa se añade en el push remoto.
- `Value`: valor numerico de la metrica. Se formatea con `strconv.FormatFloat(v, 'g', -1, 64)`.
## Ejemplo
```go
samples := []PromSample{
{Name: "node_load1", Labels: nil, Value: 0.42},
{Name: "node_cpu_core_percent", Labels: map[string]string{"core": "0"}, Value: 12.5},
{Name: "node_disk_used_bytes", Labels: map[string]string{"mount": "/"}, Value: 1.2e10},
}
```
## Notas
- Es un tipo producto puro: solo datos, sin metodos.
- Vive en `functions/infra/prom_sample.go` (mismo paquete Go que los colectores y el formateador) para evitar imports cruzados entre paquetes del registry.
- Lo producen `collect_host_metrics_go_infra` y lo consume `format_prom_exposition_go_infra`.