fix(monitoring): scrape pve via Service VIP + node FQDNs, no hardcoded IPs #296

Merged
k.renner merged 2 commits from claude-bot/pve-cluster-vip-target into master 2026-07-17 18:29:45 +00:00
@@ -81,12 +81,17 @@ spec:
# (the pre-2026-07 config) ingested every node/guest series 3x —
# identical `id`, differing `instance` — a real TSDB cardinality
# cost that dashboards had to paper over with max by (id).
# Trade-off: cluster metrics pause if .201 is down; node-local
# metrics below keep flowing from the surviving nodes.
#
# Target the pve Service (apps ns) rather than a hardcoded node IP:
# its EndpointSlice load-balances the PVE API across all three nodes,
# so cluster metrics keep flowing as long as ANY node is up, instead
# of pausing whenever .201 (jupiter) specifically is down. The
# exporter reaches the API on 8006 (verify_ssl:false, so the LB'd
# cert hostname mismatch is a non-issue).
- job_name: pve
static_configs:
- targets:
- "10.2.40.201"
- "pve.apps.svc.cluster.local"
metrics_path: /pve
params:
cluster: ["1"]
@@ -103,12 +108,15 @@ spec:
# node-local and genuinely distinct per target, so every node is
# scraped — this is the split recommended by prometheus-pve-exporter
# upstream to avoid the cluster-collector duplication above.
# Targets are the node FQDNs, not raw IPs: the instance label then
# reads jupiter/neptune/saturn.renner.uno, and a renumbered node is
# picked up from DNS without editing this file.
- job_name: pve-node
static_configs:
- targets:
- "10.2.40.201"
- "10.2.40.202"
- "10.2.40.203"
- "jupiter.renner.uno"
- "neptune.renner.uno"
- "saturn.renner.uno"
metrics_path: /pve
params:
cluster: ["0"]