21 lines
1.0 KiB
Bash
Executable File
21 lines
1.0 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# gpu-rocm.sh — AMD-GPU-Metriken via rocm-smi im Influx-Format.
|
|
# Wird vom Telegraf-exec-Input gpu.conf aufgerufen (nur wenn rocm-smi existiert).
|
|
set -eu
|
|
command -v rocm-smi >/dev/null 2>&1 || exit 0
|
|
|
|
# rocm-smi --showuse --showtemp --showpower --showmeminfo vram --csv
|
|
rocm-smi --showuse --showtemp --showpower --showmeminfo vram --csv 2>/dev/null \
|
|
| awk -F, '
|
|
NR == 1 { next }
|
|
{
|
|
gsub(/^ +| +$/, "", $1); gsub(/^ +| +$/, "", $2); gsub(/^ +| +$/, "", $3); gsub(/^ +| +$/, "", $4);
|
|
card = $1
|
|
for (i = 2; i <= NF; i++) {
|
|
if ($i ~ /%/) { g = $i; gsub(/%/, "", g); printf "gpu,gpu=%s,metric=utilization_gpu value=%s\n", card, g }
|
|
if ($i ~ /c$/) { t = $i; gsub(/c/, "", t); printf "gpu,gpu=%s,metric=temperature_gpu value=%s\n", card, t }
|
|
if ($i ~ /W$/) { p = $i; gsub(/W/, "", p); printf "gpu,gpu=%s,metric=power_draw value=%s\n", card, p }
|
|
if ($i ~ /^[0-9]+$/) { printf "gpu,gpu=%s,metric=memory_used value=%s\n", card, $i }
|
|
}
|
|
}' 2>/dev/null || true
|