feat(monitoring): métriques conso électrique CPU+GPU (RAPL + ROCm power)

- node_exporter : activer --collector.rapl (CPU power package, storage-01 + gpu-01 + nœuds k8s)
- rocm_scraper : ajouter rocm_gpu_power_watts + rocm_gpu_power_cap_watts via sysfs hwmon
- gpu-01 : activer rocm_exporter_enabled
- kube-prometheus-stack : propager --collector.rapl aux DaemonSet Talos via prometheus-node-exporter.extraArgs

Déployé sur storage-01 et gpu-01. ArgoCD prend en charge les nœuds Talos.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
alkatrazz 2026-06-02 22:54:51 +02:00
parent 8236448859
commit 91e648f55e
4 changed files with 19 additions and 1 deletions

View file

@ -6,6 +6,9 @@ llama_model_path: "/mnt/models/bartowski/Qwen3-8B-GGUF/Qwen3-8B-Q4_K_M.gguf"
llama_model_alias: "qwen3-8b"
llama_ctx_size: 32768
# ROCm scraper — métriques GPU dans Prometheus
rocm_exporter_enabled: true
# Montages NFS (surcharge les defaults du rôle nfs_client)
nfs_client_mounts:
- local_path: /mnt/nfs

View file

@ -9,7 +9,8 @@ ExecStart=/usr/local/bin/node_exporter \
--web.listen-address=":{{ node_exporter_port }}" \
--collector.textfile.directory={{ node_exporter_textfile_dir }} \
--collector.systemd \
--collector.processes
--collector.processes \
--collector.rapl
Restart=on-failure
RestartSec=5s

View file

@ -12,6 +12,10 @@ TMPFILE="${OUTPUT}.tmp"
echo "# TYPE rocm_vram_used_bytes gauge"
echo "# HELP rocm_vram_total_bytes VRAM total in bytes"
echo "# TYPE rocm_vram_total_bytes gauge"
echo "# HELP rocm_gpu_power_watts GPU power draw in watts"
echo "# TYPE rocm_gpu_power_watts gauge"
echo "# HELP rocm_gpu_power_cap_watts GPU power cap in watts"
echo "# TYPE rocm_gpu_power_cap_watts gauge"
for card in /sys/class/drm/card[0-9]; do
[ -d "$card/device" ] || continue
@ -29,5 +33,11 @@ TMPFILE="${OUTPUT}.tmp"
vram_total=$(cat "$card/device/mem_info_vram_total" 2>/dev/null)
[ -n "$vram_total" ] && echo "rocm_vram_total_bytes{${labels}} ${vram_total}"
power_raw=$(cat "$card/device/hwmon/hwmon"*/power1_average 2>/dev/null | head -1)
[ -n "$power_raw" ] && echo "rocm_gpu_power_watts{${labels}} $(echo "scale=2; ${power_raw}/1000000" | bc)"
power_cap_raw=$(cat "$card/device/hwmon/hwmon"*/power1_cap 2>/dev/null | head -1)
[ -n "$power_cap_raw" ] && echo "rocm_gpu_power_cap_watts{${labels}} $(echo "scale=2; ${power_cap_raw}/1000000" | bc)"
done
} > "$TMPFILE" && mv "$TMPFILE" "$OUTPUT"

View file

@ -162,6 +162,10 @@ nodeExporter:
limits:
memory: 64Mi
prometheus-node-exporter:
extraArgs:
- --collector.rapl
# Désactiver etcd/scheduler monitoring (Talos — non accessible)
kubeEtcd:
enabled: false