fix(installer): Konfig-Test ohne --input-filter — validierte nur gefilterte Plugins, Dienststart scheiterte danach

This commit is contained in:
mm committed 2026-09-14 00:21:05 +02:00
1 parent 02af5b428f
commit 33eb5f2308
2 files changed
+47 -4

No files matched your search

+27 -4
View File
@@ -475,19 +475,42 @@ if [ "$FORCE_UPDATE" -eq 1 ]; then
log "Force-Update: Confs und Scripts werden neu geschrieben."
fi
# --------------------------------------------------------------------------
# Konfig testen
# --------------------------------------------------------------------------
# WICHTIG: NICHT mit --input-filter pruefen! Telegraf validiert dann nur die
# gefilterten Plugins und ueberspringt die uebrigen Konfigdateien. Ein Fehler in
# telegraf.d/apache.conf (z.B. ein ungueltiges Feld) lief damit durch, der
# Installer meldete "OK", und erst der Dienststart scheiterte:
# Job for telegraf.service failed
# Ohne Filter werden ALLE Dateien geparst — genau wie beim Dienststart. Das ist
# der einzige Test, der den Startfehler wirklich verhindert.
TG="$(command -v telegraf || echo /usr/local/bin/telegraf)"
set -a; . /etc/default/telegraf; set +a
if ! "$TG" --config /etc/telegraf/telegraf.conf --config-directory /etc/telegraf/telegraf.d --test --input-filter cpu:mem >/dev/null 2>&1; then
conf_test() {
_out="$("$TG" --config /etc/telegraf/telegraf.conf \
--config-directory /etc/telegraf/telegraf.d --test --test-wait 1 2>&1)"
_rc=$?
# Nur echte Konfigurationsfehler zaehlen. Ein fehlendes Input-Binary
# (nvidia-smi) erscheint erst beim Start als E!, nicht beim Parsen — und
# Sammel-Warnungen wie die DeprecationNotice sind harmlos.
if [ "$_rc" -ne 0 ] || printf '%s' "$_out" | grep -q '^.*E!.*loading config file'; then
printf '%s\n' "$_out" | grep -E 'E!' | head -5 >&2
return 1
fi
return 0
}
if ! conf_test; then
# Bei Force-/Auto-Update zuerst zurueckrollen, dann erst aufgeben.
if [ "$FORCE_UPDATE" -eq 1 ] || [ "$UPDATE_ONLY" -eq 1 ]; then
log "Konfiguration ungültig — Rollback auf die letzte Sicherung."
rollback_conf || true
"$TG" --config /etc/telegraf/telegraf.conf --config-directory /etc/telegraf/telegraf.d --test --input-filter cpu:mem >/dev/null 2>&1 \
|| die "Konfiguration auch nach Rollback ungültig — telegraf --test prüfen."
conf_test || die "Konfiguration auch nach Rollback ungültig — telegraf --test prüfen."
log "Rollback erfolgreich, alte Konfiguration aktiv."
else
die "Konfiguration ungültig — telegraf --test prüfen."
die "Konfiguration ungültig — siehe Meldung oben. Einzelne Datei pruefen mit: telegraf --config /etc/telegraf/telegraf.conf --config-directory /etc/telegraf/telegraf.d --test"
fi
fi