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
+48
-27
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; }
|
||||
|
||||
# --- 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
|
||||
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."
|
||||
;;
|
||||
amd)
|
||||
@@ -266,6 +273,7 @@ case "$GPU" in
|
||||
# KEIN name_override: das Script liefert die Metriknamen selbst
|
||||
# (gpu_utilization_gpu, gpu_temperature_edge, ...). name_override wuerde
|
||||
# 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'
|
||||
[[inputs.exec]]
|
||||
interval = "30s"
|
||||
@@ -276,8 +284,9 @@ EOF
|
||||
log "AMD-GPU erkannt: rocm-smi-exec-Input aktiv."
|
||||
;;
|
||||
intel)
|
||||
fetch telegraf/gpu.conf /etc/telegraf/telegraf.d/gpu.conf
|
||||
log "Intel-GPU (/dev/dri) erkannt: Hinweis — intel_gpu_top wird nicht automatisch erfasst."
|
||||
# Bewusst KEIN GPU-Input: intel_gpu_top liefert kein Prometheus/Influx-Format
|
||||
# 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
|
||||
@@ -296,7 +305,20 @@ if command -v systemctl >/dev/null && [ -d /run/systemd/system ]; then
|
||||
systemctl enable --now telegraf >/dev/null
|
||||
systemctl restart telegraf
|
||||
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
|
||||
log "HINWEIS: systemd nicht aktiv (Container/Chroot) — Dienst wird beim nächsten Boot gestartet (enabled)."
|
||||
systemctl enable telegraf >/dev/null 2>&1 || true
|
||||
|
||||
Reference in new issue
Block a user