Funk-lab/ansible/roles/node_exporter/templates/rocm_scraper.sh.j2
alkatrazz 91e648f55e 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>
2026-06-02 22:54:51 +02:00

43 lines
2 KiB
Django/Jinja

#!/bin/bash
# Collecte les métriques GPU AMD via sysfs (pas de rocm-smi requis)
OUTPUT="{{ node_exporter_textfile_dir }}/rocm.prom"
TMPFILE="${OUTPUT}.tmp"
{
echo "# HELP rocm_gpu_temperature_celsius GPU temperature in Celsius"
echo "# TYPE rocm_gpu_temperature_celsius gauge"
echo "# HELP rocm_gpu_utilization_percent GPU utilization percentage"
echo "# TYPE rocm_gpu_utilization_percent gauge"
echo "# HELP rocm_vram_used_bytes VRAM used in bytes"
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
idx=$(basename "$card" | tr -d 'card')
labels="gpu=\"${idx}\",model=\"gfx1031\""
temp_raw=$(cat "$card/device/hwmon/hwmon"*/temp1_input 2>/dev/null | head -1)
[ -n "$temp_raw" ] && echo "rocm_gpu_temperature_celsius{${labels}} $(echo "scale=1; ${temp_raw}/1000" | bc)"
util=$(cat "$card/device/gpu_busy_percent" 2>/dev/null)
[ -n "$util" ] && echo "rocm_gpu_utilization_percent{${labels}} ${util}"
vram_used=$(cat "$card/device/mem_info_vram_used" 2>/dev/null)
[ -n "$vram_used" ] && echo "rocm_vram_used_bytes{${labels}} ${vram_used}"
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"