fix(installer): Konfig-Test ohne --input-filter — validierte nur gefilterte Plugins, Dienststart scheiterte danach
This commit is contained in:
1 parent
02af5b428f
commit
33eb5f2308
2 files changed
+47
-4
No files matched your search
@@ -5,6 +5,26 @@ Der Ausgang läuft über den **NetBird-Reverse-Proxy** (`imac-prometheus.x05.idx
|
|||||||
mit **Bearer-Token** — dadurch funktioniert der Installer auch auf Maschinen, die **kein NetBird-Peer** sind
|
mit **Bearer-Token** — dadurch funktioniert der Installer auch auf Maschinen, die **kein NetBird-Peer** sind
|
||||||
(Büro-LAN, Kundenlaptop, CGNAT, VM ohne Client).
|
(Büro-LAN, Kundenlaptop, CGNAT, VM ohne Client).
|
||||||
|
|
||||||
|
## Der Konfig-Test prüft ALLE Dateien
|
||||||
|
|
||||||
|
Ein Detail, das schon eine Node lahmgelegt hat: **Nie mit `--input-filter` prüfen.**
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# FALSCH — validiert nur die gefilterten Plugins:
|
||||||
|
telegraf --config … --config-directory … --test --input-filter cpu:mem
|
||||||
|
|
||||||
|
# RICHTIG — parst alle Dateien, genau wie der Dienststart:
|
||||||
|
telegraf --config … --config-directory … --test --test-wait 1
|
||||||
|
```
|
||||||
|
|
||||||
|
Mit `--input-filter cpu:mem` überspringt Telegraf alle übrigen Konfigdateien. Ein ungültiges Feld in `telegraf.d/apache.conf` lief damit durch, der Installer meldete **„OK — Node liefert"**, und erst der Dienststart scheiterte danach mit:
|
||||||
|
|
||||||
|
```
|
||||||
|
Job for telegraf.service failed because the control process exited with error code.
|
||||||
|
```
|
||||||
|
|
||||||
|
Der Installer prüft deshalb ohne Filter und wertet nur echte Parser-Fehler (`E! … loading config file`) als Abbruch — nicht jede Warnung, denn ein fehlendes Input-Binary (`nvidia-smi`) zeigt sich erst beim Start, nicht beim Parsen.
|
||||||
|
|
||||||
## Apache-Logs
|
## Apache-Logs
|
||||||
|
|
||||||
Mit `--role apache` (oder automatisch, wenn `apache2ctl`/`httpd` gefunden wird) bindet der Installer Apache ein — auf **zwei** Wegen aus derselben Datei:
|
Mit `--role apache` (oder automatisch, wenn `apache2ctl`/`httpd` gefunden wird) bindet der Installer Apache ein — auf **zwei** Wegen aus derselben Datei:
|
||||||
|
|||||||
+27
-4
@@ -475,19 +475,42 @@ if [ "$FORCE_UPDATE" -eq 1 ]; then
|
|||||||
log "Force-Update: Confs und Scripts werden neu geschrieben."
|
log "Force-Update: Confs und Scripts werden neu geschrieben."
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# --------------------------------------------------------------------------
|
||||||
# Konfig testen
|
# 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)"
|
TG="$(command -v telegraf || echo /usr/local/bin/telegraf)"
|
||||||
set -a; . /etc/default/telegraf; set +a
|
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.
|
# Bei Force-/Auto-Update zuerst zurueckrollen, dann erst aufgeben.
|
||||||
if [ "$FORCE_UPDATE" -eq 1 ] || [ "$UPDATE_ONLY" -eq 1 ]; then
|
if [ "$FORCE_UPDATE" -eq 1 ] || [ "$UPDATE_ONLY" -eq 1 ]; then
|
||||||
log "Konfiguration ungültig — Rollback auf die letzte Sicherung."
|
log "Konfiguration ungültig — Rollback auf die letzte Sicherung."
|
||||||
rollback_conf || true
|
rollback_conf || true
|
||||||
"$TG" --config /etc/telegraf/telegraf.conf --config-directory /etc/telegraf/telegraf.d --test --input-filter cpu:mem >/dev/null 2>&1 \
|
conf_test || die "Konfiguration auch nach Rollback ungültig — telegraf --test prüfen."
|
||||||
|| die "Konfiguration auch nach Rollback ungültig — telegraf --test prüfen."
|
|
||||||
log "Rollback erfolgreich, alte Konfiguration aktiv."
|
log "Rollback erfolgreich, alte Konfiguration aktiv."
|
||||||
else
|
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
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user