diff --git a/install.sh b/install.sh index aa57a5c..202f70e 100755 --- a/install.sh +++ b/install.sh @@ -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 diff --git a/telegraf/gpu.conf b/telegraf/gpu.conf index f43ba32..866c596 100644 --- a/telegraf/gpu.conf +++ b/telegraf/gpu.conf @@ -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 -# erkannt wurde. Fehlt der Treiber, laeuft der Rest unveraendert weiter. - -# --- NVIDIA (nvidia-smi) --- -[[inputs.nvidia_smi]] - timeout = "10s" - # Liefert u.a.: utilization_gpu, utilization_memory, memory_total, memory_used, - # memory_free, temperature_gpu, power_draw, power_limit, fan_speed, - # clocks_current_graphics, clocks_current_memory, pstate, name (Tag) - [inputs.nvidia_smi.tagdrop] - compute_mode = ["*"] - -# --- AMD (rocm-smi) --- -# 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]] -# interval = "30s" -# timeout = "20s" -# data_format = "prometheus" -# commands = ["/etc/telegraf/gpu-rocm.sh"] +# WICHTIG: Diese Datei wird vom Installer NICHT einfach aktiviert, sondern +# generiert (siehe install.sh). Ein aktiver [[inputs.nvidia_smi]]-Block ohne +# installiertes nvidia-smi laesst Telegraf beim Start HART scheitern +# ("executable file not found in $PATH") — dann laufen auch alle anderen +# Inputs nicht mehr. +# +# NVIDIA (nur wenn nvidia-smi vorhanden): +# [[inputs.nvidia_smi]] +# timeout = "10s" +# [inputs.nvidia_smi.tagdrop] +# compute_mode = ["*"] +# +# AMD (nur wenn rocm-smi vorhanden) — Script liefert Prometheus-Format: +# [[inputs.exec]] +# interval = "30s" +# timeout = "20s" +# data_format = "prometheus" +# 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.