commit 527742b7c531e9ccd19b1d899c85485029042fa4 Author: Egutierrez Date: Sun Jun 7 12:45:40 2026 +0200 feat: project fleet_monitoring (monitorización de flota: agente + hub VM/Grafana) diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e01adfa --- /dev/null +++ b/.gitignore @@ -0,0 +1,11 @@ +# Sub-repos hijos: cada app y analysis es su propio repo Gitea (ver .claude/rules/projects.md) +apps/*/ +analysis/*/ + +# Vaults (datos fuera del repo) +vaults/* +!vaults/.gitkeep + +# Reports: artefacto local, no se versiona (ver .claude/rules/reports.md) +reports/* +!reports/.gitkeep diff --git a/project.md b/project.md new file mode 100644 index 0000000..ee955c9 --- /dev/null +++ b/project.md @@ -0,0 +1,58 @@ +--- +name: fleet_monitoring +description: "Monitorización de toda la flota de equipos (PCs locales, VPS y móviles Termux): un agente Go ligero por nodo empuja métricas de sistema a VictoriaMetrics y se visualizan en Grafana." +tags: [monitoring, fleet-metrics, grafana, victoriametrics, infra] +repo_url: "https://gitea-dgg044oo04woo4ggcsws4gk0.organic-machine.com/dataforge/fleet_monitoring" +--- + +# fleet_monitoring + +Sistema de monitorización tipo conky pero centralizado para todos los equipos del ecosistema. + +## Arquitectura + +``` + nodo (lucas, magnus, datardos, layla, homer, …) + └─ metrics_agent (binario Go) + recolecta CPU/RAM/swap/disco/red/temp/procesos cada N s + └─ push HTTPS (basic auth) + ▼ + magnus (hub central, sin docker, todo systemd detrás de Caddy) + ├─ VictoriaMetrics 127.0.0.1:8428 (TSDB, retención 12 meses) + │ ingesta pública: https://metrics-.organic-machine.com/api/v1/import/prometheus + └─ Grafana 127.0.0.1:3001 (dashboards) + https://grafana-.organic-machine.com +``` + +El agente es **push** (no pull): cada nodo empuja sus métricas al hub. Esto atraviesa NAT +(móvil Termux, LAN doméstica) sin necesidad de abrir puertos en cada nodo y escala a N equipos +sin tocar la config central — basta desplegar el agente con su `node` y el endpoint. + +## Nodos + +| node | qué es | acceso | estado | +|---|---|---|---| +| lucas | PC local (Linux nativo) | local | objetivo fase 1 | +| magnus | VPS organic-machine (hub) | `ssh om` | objetivo fase 1 | +| datardos | VPS | `ssh dd` | objetivo fase 1 | +| layla | móvil Android (Termux) | vía WireGuard/bastión | fase posterior (cross-build arm64) | +| homer | servidor (registrado en el VPS) | pendiente | fase posterior | + +## Componentes + +- **apps/metrics_agent/** — el agente Go que corre en cada nodo. Compone las funciones del + registry del grupo `fleet-metrics` (`collect_host_metrics`, `format_prom_exposition`, + `push_prom_remote`). +- **hub/** — infraestructura como código del hub central en magnus: units systemd + (VictoriaMetrics, Grafana), snippet de Caddy, provisioning de Grafana (datasource) y + dashboards JSON. Documenta cómo se montó el hub para poder reproducirlo. + +## Secretos (en `pass`, nunca en el repo) + +- `grafana/fleet-admin` — usuario `admin` de Grafana. +- `fleet/ingest-pass` — password del usuario `fleet` para el endpoint de ingesta (basic auth). + +## Alertas + +Se enviarán por **unibus** (NATS), el bus de mensajería del ecosistema, cuando esté listo. +Grafana alerting emitirá a unibus vía webhook. Fase posterior.