From 7d3ce17c5329f02e4ac270703e42db7e1c8302f1 Mon Sep 17 00:00:00 2001 From: mm Date: Mon, 14 Sep 2026 11:43:19 +0200 Subject: [PATCH] fix(archive): Anleitung zeigt auf das Archiv, nie auf die Produktions-TSDB; x22-Wrapper mit --file --- scripts/apache-log-archive.py | 26 +++++++++++++++++++++----- scripts/x22-log-archive.sh | 14 +++++++++----- 2 files changed, 30 insertions(+), 10 deletions(-) diff --git a/scripts/apache-log-archive.py b/scripts/apache-log-archive.py index 04d24ea..6d76767 100644 --- a/scripts/apache-log-archive.py +++ b/scripts/apache-log-archive.py @@ -33,7 +33,12 @@ AUFRUF (auf dem Quellhost, als root) python3 apache-log-archive.py --node x22.idx.wf-keyhelp python3 apache-log-archive.py --node x22 --out /root/apache-archive -Danach die .tar.gz auf den imac bringen und dort einspielen (siehe README). +Danach die .tar.gz auf den imac bringen und dort einspielen — AUSSCHLIESSLICH +ueber prom-archive-import.sh in die getrennte ARCHIV-Instanz (:9091). +NIEMALS die Bloecke von Hand in die Produktions-TSDB entpacken: ein Block mit +Zeitstempeln ausserhalb des Live-Fensters verschiebt dort die Zeitreferenz und +laesst jeden echten Sample als "too old" verwerfen (real passiert am 14.09.2026, +13 Nodes verloren ihre Metriken). """ import argparse import glob @@ -315,10 +320,21 @@ def main(): print() print(f" Uebergabe an den zentralen Server:") print(f" scp {tar_path} mm@192.168.188.177:/tmp/") - print(f" Dort einspielen:") - print(f" tar -xzf /tmp/{os.path.basename(tar_path)} -C /data/stacks/netbird-observability/stacks/central-imac/data/prometheus/") - print(f" # Bloecke nach / — Prometheus liest sie beim naechsten Start") - print(f" docker restart observability-prometheus") + print() + print(f" ============================================================") + print(f" EINSPIELEN — NUR in die ARCHIV-Instanz (:9091)") + print(f" ============================================================") + print(f" ssh mm@192.168.188.177 \\") + print(f" 'sudo /usr/local/bin/prom-archive-import.sh --file /tmp/{os.path.basename(tar_path)}'") + print() + print(f" Das Import-Skript prueft die Zeitstempel VOR dem Einspielen, legt ein") + print(f" Manifest an (Schutz gegen Doppel-Import) und schreibt ausschliesslich") + print(f" ins Archiv-Verzeichnis.") + print() + print(f" NIEMALS von Hand entpacken — insbesondere NICHT nach") + print(f" central-imac/data/prometheus/. Genau dieser Weg hat am 14.09.2026 die") + print(f" Zeitreferenz der Produktions-TSDB verschoben: 13 Nodes verloren ihre") + print(f" Metriken, jeder Live-Sample galt danach als 'too old'.") print() print(f" Hinweis: instance=\"{args.node}\", archived=\"1\" — im Dashboard von") print(f" Live-Daten unterscheidbar (Filter archived!=\"1\" blendet das Archiv aus).") diff --git a/scripts/x22-log-archive.sh b/scripts/x22-log-archive.sh index c9e8942..f53cfc7 100755 --- a/scripts/x22-log-archive.sh +++ b/scripts/x22-log-archive.sh @@ -110,12 +110,16 @@ Von hier aus die Ausgabe auf den imac holen und ins ARCHIV einspielen # 1) Uebertragen (von x22 aus, im NetBird) scp $OM mm@100.83.134.46:/tmp/apache-archive.openmetrics - # 2) Auf dem imac: Bloecke im ARCHIV-Verzeichnis erzeugen und einspielen - ssh mm@192.168.188.177 'sudo /usr/local/bin/prom-archive-import.sh' + # 2) Auf dem imac: in die ARCHIV-Instanz einspielen + # --file ist Pflicht. Ohne diese Option wuerde das Import-Skript den + # Produktions-Pfad anfassen — dagegen ist es inzwischen gesperrt. + ssh mm@192.168.188.177 'sudo /usr/local/bin/prom-archive-import.sh --file /tmp/apache-archive.openmetrics' -Wichtig: der Import prueft zuerst auf Zukunfts-Zeitstempel und legt einen -Snapshot an. Bricht er ab, ist das der Schutz, nicht ein Defekt — Ursache -in der Ausgabe pruefen. +Wichtig: der Import prueft zuerst auf Zukunfts-Zeitstempel, legt ein Manifest +an (Schutz gegen Doppel-Import) und schreibt ausschliesslich ins Archiv. Ein +zweiter Lauf mit derselben Datei wird uebersprungen und sagt das auch. +Bricht er ab, ist das der Schutz, nicht ein Defekt — Ursache in der Ausgabe +pruefen. Das Skript fuehrt den Import bewusst NICHT selbst aus: die Produktions-TSDB liegt auf einem anderen Host, und ein automatischer Import von einer Node aus