fix(gpu): fauler Input killte telegraf — nvidia_smi nur bei echtem nvidia-smi, Intel ohne GPU-Input, Selbstheilung bei Startfehler
This commit is contained in:
1 parent
c7a08f2489
commit
090984e7f9
2 files changed
+43
-22
No files matched your search
+26
-4
@@ -255,9 +255,16 @@ esac
|
|||||||
[ "$HAS_APACHE" -eq 1 ] && [ "$ROLE" != "apache" ] && { fetch_conf telegraf/apache.conf /etc/telegraf/telegraf.d/apache.conf; usermod -aG adm telegraf 2>/dev/null || true; }
|
[ "$HAS_APACHE" -eq 1 ] && [ "$ROLE" != "apache" ] && { fetch_conf telegraf/apache.conf /etc/telegraf/telegraf.d/apache.conf; usermod -aG adm telegraf 2>/dev/null || true; }
|
||||||
|
|
||||||
# --- GPU (nur wenn erkannt) ---
|
# --- GPU (nur wenn erkannt) ---
|
||||||
|
# Jeder Block wird NUR geschrieben, wenn das jeweilige Werkzeug wirklich da ist.
|
||||||
|
# Ein Input ohne Binary laesst Telegraf beim Start hart scheitern -> alle Metriken aus.
|
||||||
case "$GPU" in
|
case "$GPU" in
|
||||||
nvidia)
|
nvidia)
|
||||||
fetch telegraf/gpu.conf /etc/telegraf/telegraf.d/gpu.conf
|
cat > /etc/telegraf/telegraf.d/gpu.conf <<'EOF'
|
||||||
|
[[inputs.nvidia_smi]]
|
||||||
|
timeout = "10s"
|
||||||
|
[inputs.nvidia_smi.tagdrop]
|
||||||
|
compute_mode = ["*"]
|
||||||
|
EOF
|
||||||
log "NVIDIA-GPU erkannt: inputs.nvidia_smi aktiv."
|
log "NVIDIA-GPU erkannt: inputs.nvidia_smi aktiv."
|
||||||
;;
|
;;
|
||||||
amd)
|
amd)
|
||||||
@@ -266,6 +273,7 @@ case "$GPU" in
|
|||||||
# KEIN name_override: das Script liefert die Metriknamen selbst
|
# KEIN name_override: das Script liefert die Metriknamen selbst
|
||||||
# (gpu_utilization_gpu, gpu_temperature_edge, ...). name_override wuerde
|
# (gpu_utilization_gpu, gpu_temperature_edge, ...). name_override wuerde
|
||||||
# alle Werte zu "gpu" kollabieren -> in Prometheus nur noch gpu_value.
|
# alle Werte zu "gpu" kollabieren -> in Prometheus nur noch gpu_value.
|
||||||
|
# data_format = prometheus: mit "influx" haengt Telegraf "_value" an den Namen.
|
||||||
cat > /etc/telegraf/telegraf.d/gpu.conf <<'EOF'
|
cat > /etc/telegraf/telegraf.d/gpu.conf <<'EOF'
|
||||||
[[inputs.exec]]
|
[[inputs.exec]]
|
||||||
interval = "30s"
|
interval = "30s"
|
||||||
@@ -276,8 +284,9 @@ EOF
|
|||||||
log "AMD-GPU erkannt: rocm-smi-exec-Input aktiv."
|
log "AMD-GPU erkannt: rocm-smi-exec-Input aktiv."
|
||||||
;;
|
;;
|
||||||
intel)
|
intel)
|
||||||
fetch telegraf/gpu.conf /etc/telegraf/telegraf.d/gpu.conf
|
# Bewusst KEIN GPU-Input: intel_gpu_top liefert kein Prometheus/Influx-Format
|
||||||
log "Intel-GPU (/dev/dri) erkannt: Hinweis — intel_gpu_top wird nicht automatisch erfasst."
|
# und ein nvidia_smi-Block ohne nvidia-smi wuerde Telegraf killen.
|
||||||
|
log "Intel-GPU (/dev/dri) erkannt: kein GPU-Input aktiviert (intel_gpu_top wird nicht erfasst)."
|
||||||
;;
|
;;
|
||||||
*) : ;;
|
*) : ;;
|
||||||
esac
|
esac
|
||||||
@@ -296,7 +305,20 @@ if command -v systemctl >/dev/null && [ -d /run/systemd/system ]; then
|
|||||||
systemctl enable --now telegraf >/dev/null
|
systemctl enable --now telegraf >/dev/null
|
||||||
systemctl restart telegraf
|
systemctl restart telegraf
|
||||||
sleep 3
|
sleep 3
|
||||||
systemctl is-active --quiet telegraf || { journalctl -u telegraf -n 20 --no-pager; die "telegraf läuft nicht."; }
|
if ! systemctl is-active --quiet telegraf; then
|
||||||
|
journalctl -u telegraf -n 20 --no-pager
|
||||||
|
# Haeufigste Ursache: ein aktivierter Input, dessen Binary fehlt
|
||||||
|
# (z.B. nvidia_smi ohne nvidia-smi). GPU-Conf verwerfen und erneut versuchen.
|
||||||
|
if [ -f /etc/telegraf/telegraf.d/gpu.conf ]; then
|
||||||
|
log "Start fehlgeschlagen — entferne GPU-Conf und versuche erneut."
|
||||||
|
rm -f /etc/telegraf/telegraf.d/gpu.conf
|
||||||
|
systemctl reset-failed telegraf 2>/dev/null || true
|
||||||
|
systemctl restart telegraf
|
||||||
|
sleep 3
|
||||||
|
fi
|
||||||
|
systemctl is-active --quiet telegraf || die "telegraf läuft nicht. journalctl -u telegraf -n 30 prüfen."
|
||||||
|
log "WARNUNG: Telegraf läuft, aber ohne GPU-Metriken (Input-Binary fehlte)."
|
||||||
|
fi
|
||||||
elif command -v systemctl >/dev/null; then
|
elif command -v systemctl >/dev/null; then
|
||||||
log "HINWEIS: systemd nicht aktiv (Container/Chroot) — Dienst wird beim nächsten Boot gestartet (enabled)."
|
log "HINWEIS: systemd nicht aktiv (Container/Chroot) — Dienst wird beim nächsten Boot gestartet (enabled)."
|
||||||
systemctl enable telegraf >/dev/null 2>&1 || true
|
systemctl enable telegraf >/dev/null 2>&1 || true
|
||||||
|
|||||||
+17
-18
@@ -1,24 +1,23 @@
|
|||||||
# GPU-Metriken (Auto-Erkennung: NVIDIA / AMD / Intel)
|
# GPU-Metriken — Vorlage.
|
||||||
#
|
#
|
||||||
# Der Installer bindet diese Datei nur ein, wenn auf dem Host eine GPU
|
# WICHTIG: Diese Datei wird vom Installer NICHT einfach aktiviert, sondern
|
||||||
# erkannt wurde. Fehlt der Treiber, laeuft der Rest unveraendert weiter.
|
# generiert (siehe install.sh). Ein aktiver [[inputs.nvidia_smi]]-Block ohne
|
||||||
|
# installiertes nvidia-smi laesst Telegraf beim Start HART scheitern
|
||||||
# --- NVIDIA (nvidia-smi) ---
|
# ("executable file not found in $PATH") — dann laufen auch alle anderen
|
||||||
[[inputs.nvidia_smi]]
|
# Inputs nicht mehr.
|
||||||
timeout = "10s"
|
#
|
||||||
# Liefert u.a.: utilization_gpu, utilization_memory, memory_total, memory_used,
|
# NVIDIA (nur wenn nvidia-smi vorhanden):
|
||||||
# memory_free, temperature_gpu, power_draw, power_limit, fan_speed,
|
# [[inputs.nvidia_smi]]
|
||||||
# clocks_current_graphics, clocks_current_memory, pstate, name (Tag)
|
# timeout = "10s"
|
||||||
[inputs.nvidia_smi.tagdrop]
|
# [inputs.nvidia_smi.tagdrop]
|
||||||
compute_mode = ["*"]
|
# compute_mode = ["*"]
|
||||||
|
#
|
||||||
# --- AMD (rocm-smi) ---
|
# AMD (nur wenn rocm-smi vorhanden) — Script liefert Prometheus-Format:
|
||||||
# Aktivieren, wenn `rocm-smi` vorhanden ist. Der Installer prueft das.
|
|
||||||
# WICHTIG: kein name_override — das Script liefert die Metriknamen selbst
|
|
||||||
# (gpu_utilization_gpu, gpu_temperature_edge, gpu_power_draw, gpu_memory_*).
|
|
||||||
# name_override = "gpu" wuerde alle Werte zu einer Serie kollabieren.
|
|
||||||
# [[inputs.exec]]
|
# [[inputs.exec]]
|
||||||
# interval = "30s"
|
# interval = "30s"
|
||||||
# timeout = "20s"
|
# timeout = "20s"
|
||||||
# data_format = "prometheus"
|
# data_format = "prometheus"
|
||||||
# commands = ["/etc/telegraf/gpu-rocm.sh"]
|
# commands = ["/etc/telegraf/gpu-rocm.sh"]
|
||||||
|
#
|
||||||
|
# Intel (/dev/dri): nvidia_smi nicht verwenden! intel_gpu_top wird nicht
|
||||||
|
# automatisch erfasst — es wird bewusst KEIN GPU-Input aktiviert.
|
||||||
Reference in new issue
Block a user