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
|
||||
(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
|
||||
|
||||
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."
|
||||
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
|
||||
|
||||
|
||||
Reference in new issue
Block a user