# fleet-prometheus — fleet liveness source of truth. # # Deliberately SEPARATE from the home `prom` on PIHA (LAN-only). The `fleet` # external label and the `fleet-` job naming make it unambiguous in every # scraped series that this instance monitors the distributed fleet, not the # home LAN. This file is SECRET-FREE by contract — never inline tokens here # (the home prom embedding a plaintext HAOS token is the anti-pattern we avoid). global: scrape_interval: 15s external_labels: fleet: "homelab-codex" # alerting: # # Alertmanager wiring is added in a separate step (fleet liveness alerting). # alertmanagers: [] # rule_files: # # Liveness rules (e.g. up == 0 for: 5m) are added in a separate step. # - "rules/*.yml" scrape_configs: # Self-monitoring — Prometheus scrapes its own /metrics. Bridged container # listens on 0.0.0.0:9090, so localhost resolves inside the container. - job_name: "prometheus" static_configs: - targets: ["localhost:9090"] # Fleet node_exporters. One job, one static_configs entry per node, each # carrying exactly one label: node:. No availability/schedule/tier # labels by design — "when to alert" (e.g. lustro/solaria are planned-off at # times) is decided LATER by the brain from metric history (anomaly # detection), never by static labels or time-based rules. Today's only goal # is collecting metrics. - job_name: "fleet-node" static_configs: # VPS-local node_exporter: network_mode: host on the host's :9100, # reached via the host-gateway alias declared in docker-compose.yml. - targets: ["host.docker.internal:9100"] labels: node: "vps" # Tailscale fleet targets — confirmed reachable from VPS (wget, 2026-06-26). - targets: ["100.108.208.3:9100"] labels: node: "piha" - targets: ["100.100.231.104:9100"] labels: node: "solaria" - targets: ["100.99.85.73:9100"] labels: node: "lustro" # Deliberately NOT scraped (visible decision, not an oversight): # - saturn (100.121.168.72): laptop/workstation, not infra; often powered # off → omitted. # - chelsty (100.122.201.22) + chelsty-infra (100.98.91.98): node_exporter # DOWN from VPS (LTE edge), 2026-06-26 — to be investigated separately # (exporter not deployed vs ACL block). Not listed as dead targets, which # would pollute future liveness signals.