| Version | Datum | Autor | Beschreibung |
|---|---|---|---|
| 1.0 | 2026-02-10 | Marcus Pauli | Erstversion des Troubleshooting-Handbuchs |
Cribl Stream und Edge bieten ein Kommandozeilen-Interface fuer Diagnose und Management:
# Cribl Stream CLI - Allgemeine Befehle
/opt/cribl/bin/cribl status # Service-Status anzeigen
/opt/cribl/bin/cribl version # Installierte Version pruefen
/opt/cribl/bin/cribl mode # Betriebsmodus (master/worker/single)
/opt/cribl/bin/cribl start # Service starten
/opt/cribl/bin/cribl stop # Service stoppen
/opt/cribl/bin/cribl restart # Service neustarten
/opt/cribl/bin/cribl reload # Konfiguration neu laden (ohne Restart)
# Cribl Edge CLI
/opt/cribl-edge/bin/cribl status
/opt/cribl-edge/bin/cribl version
/opt/cribl-edge/bin/cribl restart
# Authentifizierung - Token holen
TOKEN=$(curl -s -X POST http://localhost:9000/api/v1/auth/login \
-H "Content-Type: application/json" \
-d '{"username":"admin","password":"'"${CRIBL_ADMIN_PASSWORD}"'"}' | jq -r '.token')
# Health Check
curl -s http://localhost:9000/api/v1/health | jq .
# System-Informationen
curl -s -H "Authorization: Bearer ${TOKEN}" \
http://localhost:9000/api/v1/system/info | jq .
# Inputs (Sources) auflisten
curl -s -H "Authorization: Bearer ${TOKEN}" \
http://localhost:9000/api/v1/m/default/system/inputs | jq '.items[] | {id, type, disabled}'
# Outputs (Destinations) auflisten
curl -s -H "Authorization: Bearer ${TOKEN}" \
http://localhost:9000/api/v1/m/default/system/outputs | jq '.items[] | {id, type}'
# Pipelines auflisten
curl -s -H "Authorization: Bearer ${TOKEN}" \
http://localhost:9000/api/v1/m/default/pipelines | jq '.items[] | .id'
# Routes auflisten
curl -s -H "Authorization: Bearer ${TOKEN}" \
http://localhost:9000/api/v1/m/default/routes | jq '.items[] | {id, name, pipeline, output}'
# Fleet / Edge-Gruppen auflisten
curl -s -H "Authorization: Bearer ${TOKEN}" \
http://localhost:9000/api/v1/master/groups | jq '.items[] | .id'
# Worker-Status
curl -s -H "Authorization: Bearer ${TOKEN}" \
http://localhost:9000/api/v1/master/workers | jq .
# Service-Status (systemd)
sudo systemctl status cribl
sudo systemctl status cribl-edge
# Prozesse pruefen
ps aux | grep cribl
pgrep -af cribl
# Port-Belegung pruefen
sudo ss -tlnp | grep -E '9000|9997|8088|10080'
# Netzwerk-Konnektivitaet
ping -c 3 10.10.0.66 # Splunk-Host
nc -zv 10.10.0.66 8088 # Splunk HEC Port
nc -zv 10.10.0.66 9997 # Splunk S2S Port
curl -sk https://10.10.0.66:8088/services/collector/health # HEC Health
# Festplattenspeicher
df -h /opt
du -sh /opt/cribl/state/queues/ 2>/dev/null # Queue-Groesse
du -sh /opt/cribl/log/ 2>/dev/null # Log-Groesse
# Speicher und CPU
free -h
top -bn1 | grep cribl
# Tailscale-Verbindung
tailscale status
tailscale ip -4
# Diagnose-Informationen sammeln
/opt/cribl/bin/cribl diag
# Ausgabe: Erstellt ein tar.gz im aktuellen Verzeichnis mit:
# - Cribl-Logs
# - Konfiguration (bereinigt)
# - System-Informationen
# - Metriken-Snapshot
| Problem | Moegliche Ursachen | Loesung |
|---|---|---|
| Cribl Stream startet nicht |
|
|
| Cribl Edge verbindet nicht mit Stream |
|
|
| Keine Events in Splunk |
|
|
| Hohe CPU/RAM-Auslastung |
|
|
| Persistent Queue voll |
|
|
| TLS-Fehler |
|
|
| API-Fehler |
|
|
https:// in der URL,
aber der Splunk-HEC-Endpoint akzeptiert nur HTTP (kein TLS aktiviert).
Fehlermeldung im Cribl-Log:
{"channel":"output:splunk_hec","level":"warn","message":"protocol error",
"hint":"Check your configured Minimum and Maximum TLS versions",
"error":"write EPROTO...ssl3_get_record:wrong version number"}
Loesung:
curl -s "http://<splunk>:8088/services/collector/health" # HTTP
curl -sk "https://<splunk>:8088/services/collector/health" # HTTPS
# Via API
TOKEN=$(curl -s -X POST "http://localhost:9000/api/v1/auth/login" \
-H "Content-Type: application/json" \
-d '{"username":"admin","password":"admin"}' | jq -r '.token')
curl -s -X PATCH "http://localhost:9000/api/v1/system/outputs/splunk_hec" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"id":"splunk_hec","type":"splunk_hec","url":"http://<splunk>:8088/services/collector"}'
| Problem | Diagnose | Loesung |
|---|---|---|
| Daten werden doppelt an Splunk gesendet | Routes in Cribl UI pruefen: Mehrere Routes matchen auf gleiche Events | Route-Reihenfolge anpassen; final: true auf der gewuenschten Route setzen; Filterausdruecke verfeinern |
| Events kommen verzoegert an | Queue Depth pruefen; Destination-Latenz in Monitoring pruefen | Destination-Verbindung optimieren; Queue-Flush-Intervall verringern; Netzwerk pruefen |
| Felder fehlen nach Pipeline-Verarbeitung | Pipeline im Preview-Modus testen (Cribl UI → Pipeline → Preview) | Pipeline-Funktionen ueberpruefen; Remove-/Mask-Funktionen kontrollieren; Reihenfolge der Funktionen pruefen |
| Edge meldet "connection refused" | nc -zv <stream-host> 9000 |
Stream-Service pruefen; Firewall-Regeln anpassen; Tailscale-Verbindung pruefen |
| Systemd Journal Source liefert keine Daten | Edge-Logs pruefen; Berechtigungen auf Journal-Dateien pruefen | Edge-User zur systemd-journal-Gruppe hinzufuegen: sudo usermod -aG systemd-journal cribl |
| Cribl UI laed langsam / nicht erreichbar | Browser-Konsole pruefen; curl -s http://localhost:9000 |
Browser-Cache leeren; anderen Browser testen; Service-Status pruefen; RAM-Auslastung pruefen |
| Backup-Restore fehlgeschlagen | Pruefsummen validieren; Tar-Archiv-Integritaet pruefen | Backup-Integritaet mit sha256sum -c pruefen; Berechtigungen nach Restore korrigieren; siehe Notfallhandbuch |
Symptom: Shell-Skripte brechen mit kryptischen Fehlern ab:
/bin/bash^M: bad interpreter: No such file or directory
# oder
$'\r': command not found
Ursache: Windows-Zeilenenden (CRLF) in den Skript-Dateien.
Loesung:
# Alle Skripte und .env auf Unix-Zeilenenden konvertieren
sed -i 's/\r$//' scripts/*.sh scripts/lib/*.sh splunk/*.sh .env .env.example
Symptom: Cribl Edge startet, kann sich aber nicht mit dem Stream Leader auf Port 4200 verbinden. Im Edge-Log erscheint wiederholt "Unauthorized" oder "Other party ended the socket connection".
Bekanntes Problem: Die Managed-Edge-Authentifizierung ueber das authToken
in cribl.yml und cribl.secret funktioniert in bestimmten Konstellationen nicht zuverlaessig.
Workaround:
Symptom: API-Aufrufe mit -u admin:password geben HTTP 401 zurueck.
Moegliche Ursachen:
TOKEN=$(curl -s -X POST "http://localhost:9000/api/v1/auth/login" \
-H "Content-Type: application/json" \
-d '{"username":"admin","password":"admin"}' | jq -r '.token')
curl -s -H "Authorization: Bearer $TOKEN" "http://localhost:9000/api/v1/system/inputs"
admin.
Ein Bootstrap ueber users.json funktioniert in 4.16.x nicht zuverlaessig.| Datei | Pfad | Inhalt | Rotation |
|---|---|---|---|
| cribl.log | /opt/cribl/log/cribl.log |
Haupt-Log: Worker-Meldungen, Fehler, Warnungen, Event-Processing | Automatisch (10 MB, 5 Dateien) |
| audit.log | /opt/cribl/log/audit.log |
Audit-Trail: Konfigurationsaenderungen, Logins, API-Zugriffe | Automatisch |
| access.log | /opt/cribl/log/access.log |
HTTP-Zugriffsprotokolle auf die Cribl-Web-UI und API | Automatisch |
| notifications.log | /opt/cribl/log/notifications.log |
Benachrichtigungen und Alerts aus dem Cribl-System | Automatisch |
| clisrv.log | /opt/cribl/log/clisrv.log |
CLI-Server-Kommunikation, Start/Stop-Vorgaenge | Automatisch |
| Datei | Pfad | Inhalt |
|---|---|---|
| cribl.log | /opt/cribl-edge/log/cribl.log |
Edge-Worker-Logs: Datensammlung, Verbindung zum Leader, Fehler |
| audit.log | /opt/cribl-edge/log/audit.log |
Audit-Trail des Edge-Agenten |
# Cribl Stream systemd-Logs
sudo journalctl -u cribl --since "1 hour ago" --no-pager
sudo journalctl -u cribl --since "today" -p err --no-pager # Nur Fehler
# Cribl Edge systemd-Logs
sudo journalctl -u cribl-edge --since "1 hour ago" --no-pager
# Echtzeit-Logs verfolgen
sudo journalctl -u cribl -f
sudo journalctl -u cribl-edge -f
| Log-Muster | Bedeutung | Handlung |
|---|---|---|
Error: listen EADDRINUSE :::9000 |
Port 9000 ist bereits belegt | sudo ss -tlnp | grep 9000 und belegenden Prozess beenden |
Error: EACCES: permission denied |
Fehlende Dateiberechtigungen | sudo chown -R cribl:cribl /opt/cribl |
WARN - Backpressure detected |
Destination kann Events nicht schnell genug verarbeiten | Destination-Kapazitaet pruefen, Queue konfigurieren |
ERROR - Connection refused |
Ziel-Service nicht erreichbar | Netzwerk, Firewall, Ziel-Service pruefen |
WARN - Queue is filling up |
Persistent Queue waechst | Destination-Konnektivitaet pruefen, Kapazitaet erhoehen |
ERROR - TLS handshake failed |
TLS-Verbindung fehlgeschlagen | Zertifikate, Trust Chain, TLS-Version pruefen |
WARN - Worker process exited |
Ein Worker-Prozess ist unerwartet beendet | Logs auf Fehler pruefen, RAM-Verbrauch kontrollieren |
INFO - Successfully connected to leader |
Edge hat sich erfolgreich mit Stream verbunden | Keine (Normalbetrieb) |
ERROR - Authentication failed |
Login oder API-Authentifizierung fehlgeschlagen | Credentials pruefen, Token erneuern |
WARN - Dropping events |
Events werden verworfen (Queue voll oder Drop-Regel) | Sofort untersuchen: Queue-Status, Routes, Pipeline-Regeln |
# Cribl Stream Diagnose erstellen
sudo /opt/cribl/bin/cribl diag
# Das Bundle wird als .tar.gz im aktuellen Verzeichnis erstellt
# Inhalt:
# - /log/ - Cribl-Logs (cribl.log, audit.log, etc.)
# - /conf/ - Konfiguration (bereinigt, ohne Secrets)
# - /metrics/ - Aktuelle Metriken-Snapshots
# - /system/ - OS-Informationen, Ressourcenverbrauch
# - diag-info.json - Zusammenfassung der Diagnose
Falls cribl diag nicht funktioniert, kann ein manuelles Bundle erstellt werden:
#!/usr/bin/env bash
# Manuelles Diagnostic Bundle erstellen
DIAG_DIR="/tmp/cribl-diag-$(date +%Y%m%d_%H%M%S)"
mkdir -p "${DIAG_DIR}"
echo "Sammle Diagnose-Informationen..."
# 1. System-Informationen
echo "--- System Info ---" > "${DIAG_DIR}/system-info.txt"
uname -a >> "${DIAG_DIR}/system-info.txt"
cat /etc/os-release >> "${DIAG_DIR}/system-info.txt"
free -h >> "${DIAG_DIR}/system-info.txt"
df -h >> "${DIAG_DIR}/system-info.txt"
uptime >> "${DIAG_DIR}/system-info.txt"
# 2. Cribl-Version und Status
/opt/cribl/bin/cribl version > "${DIAG_DIR}/cribl-version.txt" 2>&1
/opt/cribl/bin/cribl status > "${DIAG_DIR}/cribl-status.txt" 2>&1
systemctl status cribl > "${DIAG_DIR}/systemd-status.txt" 2>&1
# 3. Logs (letzte 1000 Zeilen)
tail -1000 /opt/cribl/log/cribl.log > "${DIAG_DIR}/cribl.log" 2>/dev/null
tail -500 /opt/cribl/log/audit.log > "${DIAG_DIR}/audit.log" 2>/dev/null
journalctl -u cribl --since "1 hour ago" --no-pager > "${DIAG_DIR}/journalctl.log" 2>/dev/null
# 4. Netzwerk
ss -tlnp > "${DIAG_DIR}/ports.txt" 2>&1
ip addr > "${DIAG_DIR}/network.txt" 2>&1
# 5. Prozesse
ps aux | grep cribl > "${DIAG_DIR}/processes.txt" 2>&1
# 6. Konfiguration (ohne Secrets)
cp -r /opt/cribl/local/cribl/ "${DIAG_DIR}/config/" 2>/dev/null
# Secrets entfernen
find "${DIAG_DIR}/config/" -name "*.yml" -exec \
sed -i 's/password:.*/password: [REDACTED]/' {} \; 2>/dev/null
find "${DIAG_DIR}/config/" -name "*.yml" -exec \
sed -i 's/token:.*/token: [REDACTED]/' {} \; 2>/dev/null
# 7. Queue-Status
du -sh /opt/cribl/state/queues/* > "${DIAG_DIR}/queue-status.txt" 2>/dev/null
# 8. Health Check
curl -s http://localhost:9000/api/v1/health > "${DIAG_DIR}/health.json" 2>/dev/null
# Bundle erstellen
tar czf "${DIAG_DIR}.tar.gz" -C /tmp "$(basename "${DIAG_DIR}")"
rm -rf "${DIAG_DIR}"
echo "Diagnostic Bundle erstellt: ${DIAG_DIR}.tar.gz"
echo "Groesse: $(ls -lh "${DIAG_DIR}.tar.gz" | awk '{print $5}')"
| Rolle | Zustaendigkeit | Erreichbarkeit |
|---|---|---|
| Cribl-Administrator | Erster Ansprechpartner fuer alle Cribl-Themen | E-Mail, Chat, Telefon (Buerozeiten) |
| Teamleitung IT-Betrieb | Eskalation, Koordination | E-Mail, Telefon |
| ISB | Sicherheitsvorfaelle, Compliance-Fragen | E-Mail, Telefon |
| Splunk-Administrator | Splunk-seitige Probleme (Indizierung, Suche) | E-Mail, Telefon (Buerozeiten) |
| Netzwerk-Team | Firewall, Routing, Tailscale | Ticketsystem |
| Ressource | URL | Beschreibung |
|---|---|---|
| Cribl Dokumentation | https://docs.cribl.io/ | Offizielle Produktdokumentation |
| Cribl Support Portal | https://support.cribl.io/ | Ticket-basierter Support (Lizenz erforderlich) |
| Cribl Community | https://cribl.io/community/ | Community-Forum fuer Fragen und Austausch |
| Cribl Slack Community | https://cribl-community.slack.com/ | Echtzeit-Chat mit Community und Cribl-Mitarbeitern |
| Cribl University | https://cribl.io/university/ | Kostenlose Schulungen und Zertifizierungen |
| Cribl GitHub | https://github.com/criblio/ | Open-Source-Projekte, Beispiel-Pipelines |
| Ressource | URL | Beschreibung |
|---|---|---|
| Splunk Dokumentation | https://docs.splunk.com/ | Offizielle Splunk-Dokumentation |
| Splunk Community (Answers) | https://community.splunk.com/ | Community-Forum fuer Splunk-Fragen |
| Splunk Support | https://www.splunk.com/en_us/support.html | Splunk Enterprise Support |
F: Was ist der Unterschied zwischen Cribl Stream und Cribl Edge?
A: Cribl Stream ist die zentrale Verarbeitungskomponente. Sie empfaengt Daten, verarbeitet sie in Pipelines und leitet sie an Destinations weiter. Cribl Edge ist ein leichtgewichtiger Agent, der auf den Quell-Systemen installiert wird und Daten sammelt (z.B. aus Systemd Journal, Log-Dateien). Im IceDataEmphasise-PoC laeuft Stream als zentraler Server und Edge als Agent auf dem gleichen NUC-Host.
F: Welche Cribl-Version wird im PoC eingesetzt?
A: Cribl Stream Version 4.16.1. Die genaue Version kann mit /opt/cribl/bin/cribl version geprueft werden.
F: Wie viele Log-Quellen sind konfiguriert?
A: 12 Log-Quellen sind konfiguriert, darunter Systemd Journal, SSH Auth, Apache Access/Error, Samba, Docker und weitere. Die Verifikationssuite (07-verify-deployment.sh) prueft, ob alle 12 Quellen aktiv sind.
F: Wie starte ich Cribl Stream neu, ohne Daten zu verlieren?
A: Die Persistent Queue speichert Events waehrend eines Restarts. Ein sudo systemctl restart cribl fuehrt zu einem kurzen Unterbruch (typischerweise 5-10 Sekunden), aber Events gehen nicht verloren, da sie in der Queue gepuffert werden.
F: Wie pruefe ich, ob die gesamte Pipeline funktioniert?
A: Fuehren Sie die Verifikationssuite aus: sudo ./scripts/07-verify-deployment.sh. Sie fuehrt ca. 20 Tests durch und zeigt eine Zusammenfassung mit PASS/FAIL fuer jeden Test.
F: Wo finde ich die Cribl-Konfigurationsdateien?
A: Die Konfiguration liegt unter /opt/cribl/local/. Wichtige Unterverzeichnisse:
/opt/cribl/local/cribl/ – Systemkonfiguration (cribl.yml, auth)/opt/cribl/local/cribl/pipelines/ – Pipeline-Definitionen/opt/cribl/local/cribl/routes.yml – Route-Tabelle/opt/cribl/local/cribl/outputs/ – Destination-Konfigurationen/opt/cribl/local/cribl/inputs/ – Source-KonfigurationenF: Wie kann ich Aenderungen an der Konfiguration rueckgaengig machen?
A: Cribl verwaltet Konfigurationen intern ueber Git. Ueber die Cribl UI (Settings → Versioning) koennen vorherige Versionen angezeigt und wiederhergestellt werden. Alternativ kann ein Backup wiederhergestellt werden (siehe Notfallhandbuch).
F: Die Verifikationssuite meldet "FAIL" bei einem Test. Was tun?
A: Die Detail-Spalte in der Testausgabe zeigt die Fehlerbeschreibung. Pruefen Sie zunaechst den spezifischen Fehler und verwenden Sie die Diagnose-Kommandos aus Abschnitt 1 dieses Dokuments. Bei Service-Fehlern starten Sie mit sudo journalctl -u cribl --since "5 min ago".
F: Wie kann ich testen, ob ein einzelnes Event korrekt verarbeitet wird?
A: Nutzen Sie die Preview-Funktion in der Cribl UI: Pipeline oeffnen → "Preview" klicken → Testdaten eingeben oder aus einer Quelle laden → Verarbeitungsergebnis pruefen. Dies ist besonders hilfreich bei Pipeline-Problemen.
F: Cribl zeigt "Backpressure" an. Was bedeutet das?
A: Backpressure bedeutet, dass eine Destination Events nicht schnell genug annimmt. Cribl drosselt daraufhin die Aufnahme von Events, um einen Queue-Ueberlauf zu verhindern. Pruefen Sie die Destination-Konnektivitaet und -Kapazitaet. Im Fall von Splunk: HEC-/S2S-Verbindung und Splunk-Indizierungsleistung pruefen.
F: Warum sehe ich doppelte Events in Splunk?
A: Haeufige Ursachen: (1) Mehrere Routes in Cribl matchen auf das gleiche Event und senden es an die gleiche Destination. Loesung: Route-Reihenfolge und Filter pruefen, final: true auf der korrekten Route setzen. (2) Edge und Stream sammeln die gleiche Quelle. Loesung: Sicherstellen, dass jede Quelle nur an einer Stelle konfiguriert ist.
F: Wie aktualisiere ich Cribl Stream auf eine neue Version?
A: Vor einem Update unbedingt ein Backup erstellen (siehe Notfallhandbuch). Das Update erfordert einen Change Request (siehe Compliance-Dokument). Ablauf: Service stoppen, neues Paket installieren, Service starten, Verifikation ausfuehren.