| Version | Datum | Autor | Beschreibung |
|---|---|---|---|
| 1.0 | 2026-02-10 | Marcus Pauli | Erstversion des Notfallhandbuchs |
Die folgenden Severity-Level definieren die Dringlichkeit und den Eskalationspfad bei Betriebsstoerungen der Cribl-Infrastruktur innerhalb des IceDataEmphasise-PoC.
| Severity | Bezeichnung | Definition | Reaktionszeit | Loesungszeit (Ziel) |
|---|---|---|---|---|
| Sev1 | Kritisch | Kompletter Ausfall der Log-Pipeline. Keine Events erreichen Splunk. Compliance-relevante Daten gehen verloren oder drohen verloren zu gehen. | ≤ 15 Minuten | ≤ 1 Stunde |
| Sev2 | Hoch | Teilausfall: Einzelne Quellen oder Destinations sind betroffen. Persistent Queue puffert, aber Kapazitaet ist begrenzt. Datenverlust droht mittelfristig. | ≤ 30 Minuten | ≤ 4 Stunden |
| Sev3 | Mittel | Leistungsdegradation: Erhoehte Latenz, einzelne Worker ueberlastet, vereinzelte Event-Drops. Pipeline funktioniert grundsaetzlich. | ≤ 2 Stunden | ≤ 1 Arbeitstag |
| Sev4 | Niedrig | Kosmetische oder nicht-kritische Probleme: Dashboard-Anomalien, einzelne Warnungen ohne Auswirkung auf den Datenfluss. | Naechster Arbeitstag | ≤ 5 Arbeitstage |
| Severity | Erstreaktion | Eskalation Level 1 | Eskalation Level 2 | Eskalation Level 3 |
|---|---|---|---|---|
| Sev1 | On-Call-Engineer (sofort) | Teamleitung IT-Betrieb (nach 15 Min.) | Abteilungsleitung IT / ISB (nach 30 Min.) | Geschaeftsleitung / BaFin-Meldepflicht pruefen (nach 1 Std.) |
| Sev2 | On-Call-Engineer (sofort) | Teamleitung IT-Betrieb (nach 30 Min.) | Abteilungsleitung IT (nach 2 Std.) | – |
| Sev3 | Zustaendiger Administrator | Teamleitung IT-Betrieb (nach 4 Std.) | – | – |
| Sev4 | Zustaendiger Administrator | Im naechsten Jour Fixe besprechen | – | – |
| Aktivitaet | On-Call-Engineer | Teamleitung | ISB | Geschaeftsleitung |
|---|---|---|---|---|
| Ersterkennung / Triage | R/A | I | I (bei Sev1) | – |
| Technische Fehleranalyse | R | A | C | – |
| Wiederherstellung | R | A | I | – |
| Kommunikation intern | C | R/A | I | I (bei Sev1) |
| Regulatorische Meldung | I | C | R/A | A |
| Post-Incident Review | R | A | C | I (bei Sev1) |
R = Responsible, A = Accountable, C = Consulted, I = Informed
Stufe 1 – Restart:
# Cribl Stream Service neustarten
sudo systemctl restart cribl
# Status pruefen
sudo systemctl status cribl
curl -s http://localhost:9000/api/v1/health | jq .
# Logs auf Fehler pruefen
sudo journalctl -u cribl --since "10 minutes ago" --no-pager | tail -50
Stufe 2 – Failover (falls Restart fehlschlaegt):
# Worker-Prozesse pruefen und ggf. beenden
ps aux | grep cribl
sudo kill -9 $(pgrep -f "cribl server")
# Cribl Home bereinigen und neustarten
sudo rm -f /opt/cribl/data/cribl.pid
sudo systemctl start cribl
# Port-Belegung pruefen
sudo ss -tlnp | grep 9000
Stufe 3 – Neuinstallation:
# Konfiguration sichern (falls noch moeglich)
sudo cp -r /opt/cribl/local /tmp/cribl-backup-local
sudo cp -r /opt/cribl/data /tmp/cribl-backup-data
# Neuinstallation ausfuehren
sudo ./scripts/02-install-cribl-stream.sh
# Konfiguration wiederherstellen
sudo cp -r /tmp/cribl-backup-local/* /opt/cribl/local/
sudo chown -R cribl:cribl /opt/cribl
# Service starten und verifizieren
sudo systemctl start cribl
sudo ./scripts/07-verify-deployment.sh
Sofortmassnahmen:
# Edge Service neustarten
sudo systemctl restart cribl-edge
# Status pruefen
sudo systemctl status cribl-edge
# Falls der Service nicht startet: Logs pruefen
sudo journalctl -u cribl-edge --since "10 minutes ago" --no-pager
Edge neu deployen:
# Edge neu installieren
sudo ./scripts/03-install-cribl-edge-linux.sh
# Registrierung bei Stream Leader pruefen
curl -s http://localhost:9000/api/v1/master/groups | jq '.items[] | .id'
# Verifizierung
sudo ./scripts/07-verify-deployment.sh
Diagnose:
# Splunk HEC erreichbar?
curl -sk https://10.10.0.66:8088/services/collector/health
# Splunk S2S Port erreichbar?
nc -zv 10.10.0.66 9997
# Netzwerk-Konnektivitaet pruefen
ping -c 3 10.10.0.66
traceroute 10.10.0.66
# Persistent Queue Status pruefen
ls -lh /opt/cribl/state/queues/
du -sh /opt/cribl/state/queues/*
Massnahmen bei voller Queue:
df -h /opt/criblWiederherstellungsschritte auf neuem Host:
git clone <repository-url> /opt/IceDataEmphasise
cd /opt/IceDataEmphasise
sudo ./scripts/00-preflight-check.sh
sudo ./scripts/01-install-tailscale.sh
sudo ./scripts/02-install-cribl-stream.sh
sudo ./scripts/03-install-cribl-edge-linux.sh
sudo ./scripts/04-configure-sources.sh
sudo ./scripts/07-verify-deployment.sh| Komponente | Pfad | Backup-Methode | Haeufigkeit | Aufbewahrung |
|---|---|---|---|---|
| Cribl Stream Konfiguration | /opt/cribl/local/ |
tar + rsync auf Backup-Server | Taeglich + nach jeder Aenderung | 90 Tage |
| Cribl Edge Konfiguration | /opt/cribl-edge/local/ |
tar + rsync auf Backup-Server | Taeglich | 90 Tage |
| Projekt-Repository | /opt/IceDataEmphasise/ |
Git (Remote-Repository) | Bei jedem Commit | Unbegrenzt |
| Persistent Queue Daten | /opt/cribl/state/queues/ |
Kein regulaeres Backup (transient) | – | – |
| Umgebungsvariablen | .env |
Verschluesselt auf Backup-Server | Nach jeder Aenderung | 90 Tage |
#!/usr/bin/env bash
# Backup-Skript fuer IceDataEmphasise Cribl-Konfiguration
BACKUP_DIR="/backup/cribl/$(date +%Y%m%d_%H%M%S)"
mkdir -p "${BACKUP_DIR}"
# 1. Cribl Stream Konfiguration sichern
echo "Sichere Cribl Stream Konfiguration..."
sudo tar czf "${BACKUP_DIR}/cribl-stream-local.tar.gz" -C /opt/cribl local/
# 2. Cribl Edge Konfiguration sichern
echo "Sichere Cribl Edge Konfiguration..."
sudo tar czf "${BACKUP_DIR}/cribl-edge-local.tar.gz" -C /opt/cribl-edge local/
# 3. Cribl Stream State (ohne Queue-Daten)
echo "Sichere Cribl Stream State..."
sudo tar czf "${BACKUP_DIR}/cribl-stream-state.tar.gz" \
--exclude='queues' -C /opt/cribl state/
# 4. Projekt-Konfigurationsdateien
echo "Sichere Projekt-Konfiguration..."
tar czf "${BACKUP_DIR}/project-configs.tar.gz" -C /opt/IceDataEmphasise \
configs/ .env scripts/
# 5. Pruefsumme erstellen
cd "${BACKUP_DIR}" && sha256sum *.tar.gz > checksums.sha256
echo "Backup abgeschlossen: ${BACKUP_DIR}"
ls -lh "${BACKUP_DIR}"
#!/usr/bin/env bash
# Restore-Skript fuer IceDataEmphasise Cribl-Konfiguration
BACKUP_DIR="$1" # Pfad zum Backup-Verzeichnis als Parameter
if [[ -z "${BACKUP_DIR}" || ! -d "${BACKUP_DIR}" ]]; then
echo "Verwendung: $0 /backup/cribl/20260210_120000"
exit 1
fi
# 1. Pruefsummen verifizieren
echo "Verifiziere Backup-Integritaet..."
cd "${BACKUP_DIR}" && sha256sum -c checksums.sha256 || {
echo "FEHLER: Pruefsummen stimmen nicht ueberein! Abbruch."
exit 1
}
# 2. Services stoppen
echo "Stoppe Cribl Services..."
sudo systemctl stop cribl
sudo systemctl stop cribl-edge
# 3. Aktuelle Konfiguration sichern (Rollback-Moeglichkeit)
echo "Sichere aktuelle Konfiguration als Rollback..."
sudo cp -r /opt/cribl/local /opt/cribl/local.pre-restore
sudo cp -r /opt/cribl-edge/local /opt/cribl-edge/local.pre-restore
# 4. Cribl Stream Konfiguration wiederherstellen
echo "Stelle Cribl Stream Konfiguration wieder her..."
sudo tar xzf "${BACKUP_DIR}/cribl-stream-local.tar.gz" -C /opt/cribl/
sudo chown -R cribl:cribl /opt/cribl/local
# 5. Cribl Edge Konfiguration wiederherstellen
echo "Stelle Cribl Edge Konfiguration wieder her..."
sudo tar xzf "${BACKUP_DIR}/cribl-edge-local.tar.gz" -C /opt/cribl-edge/
sudo chown -R cribl:cribl /opt/cribl-edge/local
# 6. Services starten
echo "Starte Cribl Services..."
sudo systemctl start cribl
sleep 5
sudo systemctl start cribl-edge
sleep 3
# 7. Verifizierung
echo "Verifiziere Wiederherstellung..."
sudo ./scripts/07-verify-deployment.sh
echo "Restore abgeschlossen."
Die folgende Prozedur beschreibt den geordneten Wiederanlauf nach einem Notfall:
sudo systemctl start cribl
sleep 10
curl -s http://localhost:9000/api/v1/health | jq .
sudo systemctl start cribl-edge
sleep 5
sudo systemctl status cribl-edge
curl -sk https://10.10.0.66:8088/services/collector/health)nc -zv 10.10.0.66 9997)sudo ./scripts/07-verify-deployment.sh
| Schritt | Komponente | Aktion | Erfolgskriterium |
|---|---|---|---|
| 1 | Netzwerk | Tailscale-Verbindung pruefen | tailscale status zeigt "Running" |
| 2 | Cribl Stream | Service starten | API Health Check HTTP 200 |
| 3 | Destinations | Splunk-Konnektivitaet pruefen | HEC + S2S Ports erreichbar |
| 4 | Cribl Edge | Service starten | Edge bei Stream registriert |
| 5 | Quellen | Log-Eingang pruefen | Events/sec > 0 im Dashboard |
| 6 | Pipeline | Gesamte Pipeline pruefen | 07-verify-deployment.sh alle Tests bestanden |
| Severity | Empfaenger | Kanal | Zeitrahmen | Inhalt |
|---|---|---|---|---|
| Sev1 | Teamleitung, ISB, Abteilungsleitung | Telefon + E-Mail | Sofort (innerhalb 15 Min.) | Art des Ausfalls, Auswirkung, geschaetzte Wiederherstellungszeit |
| Sev1 | Geschaeftsleitung | Innerhalb 30 Min. | Kurzuebersicht, Compliance-Relevanz, Massnahmen | |
| Sev2 | Teamleitung | E-Mail + Chat | Innerhalb 30 Min. | Art der Stoerung, betroffene Komponenten, Massnahmen |
| Sev3 | Teamleitung | Chat / Ticketsystem | Innerhalb 4 Std. | Problembeschreibung, geplante Massnahmen |
| Sev4 | Team | Ticketsystem | Naechster Arbeitstag | Problembeschreibung, Prioritaet |
Betreff: [SEV{X}] IceDataEmphasise - {Kurzbeschreibung}
Zeitpunkt der Erkennung: {YYYY-MM-DD HH:MM}
Betroffene Komponente(n): {Cribl Stream / Edge / Splunk / NUC}
Auswirkung: {Beschreibung der Auswirkung auf Log-Pipeline}
Aktuelle Massnahmen:
- {Massnahme 1}
- {Massnahme 2}
Geschaetzte Wiederherstellungszeit: {HH:MM oder "wird ermittelt"}
Compliance-Relevanz: {Ja/Nein - Begruendung}
Naechstes Update: {Zeitpunkt}
Verantwortlicher Engineer: {Name}
Telefon: {Nummer}
| Feld | Inhalt |
|---|---|
| Incident-ID | {INC-YYYY-NNN} |
| Severity | {Sev1 / Sev2 / Sev3} |
| Datum/Uhrzeit Erkennung | {YYYY-MM-DD HH:MM} |
| Datum/Uhrzeit Behebung | {YYYY-MM-DD HH:MM} |
| Dauer | {X Stunden Y Minuten} |
| Betroffene Komponenten | {Cribl Stream / Edge / Splunk / Netzwerk / Hardware} |
| Auswirkung | {Beschreibung: Datenverlust? Welche Quellen betroffen? Dauer?} |
| Ursache (Root Cause) | {Detaillierte Beschreibung der Grundursache} |
| Zeitleiste |
|
| Sofortmassnahmen | {Was wurde zur Behebung getan?} |
| Datenverlust | {Ja/Nein – Details: Welche Events, Zeitraum} |
| Compliance-Auswirkung | {Ja/Nein – Regulatorische Meldepflicht ausgeloest?} |
| # | Erkenntnis / Massnahme | Verantwortlich | Frist | Status |
|---|---|---|---|---|
| 1 | {Beschreibung} | {Name} | {Datum} | Offen |
| 2 | {Beschreibung} | {Name} | {Datum} | Offen |
| 3 | {Beschreibung} | {Name} | {Datum} | Offen |