Cribl Stream Konfiguration

Version: 1.0 Datum: 2026-02-10 Autor: IceDataEmphasise Team Klassifikation: INTERN

Revisionshistorie

Version Datum Autor Beschreibung
1.0 2026-02-10 IceDataEmphasise Team Initiale Erstellung der Stream-Konfigurationsdokumentation

Inhaltsverzeichnis

  1. Initiale Konfiguration nach Installation
  2. Worker Processes und Threading
  3. Authentication und Benutzer-Management
  4. Systemeinstellungen
  5. API-Zugang und Token-Management
  6. TLS-Konfiguration
  7. Fleet Management Konzept

1. Initiale Konfiguration nach Installation

1.1 Erster Zugriff auf die Web-UI

Nach der Installation von Cribl Stream ist die Web-UI unter http://<host>:9000 erreichbar. Beim ersten Zugriff muss das Admin-Passwort gesetzt werden.

# Stream-UI aufrufen (ueber Tailscale-IP)
http://<tailscale-ip>:9000

# Alternativ lokal:
http://localhost:9000

1.2 Initiale Login-Daten

Parameter Standardwert Empfehlung
Benutzername admin Beibehalten; zusaetzliche Benutzer anlegen
Passwort admin (erster Start) Sofort aendern auf sicheres Passwort
Sicherheitshinweis: Das Standard-Admin-Passwort muss sofort nach dem ersten Login geaendert werden. Fuer den PoC wird das Passwort in der .env-Datei als CRIBL_ADMIN_PASSWORD hinterlegt, um automatisierte Konfiguration ueber die API zu ermoeglichen.

1.3 Konfigurationsverzeichnis-Struktur

/opt/cribl/
  bin/                     # Cribl-Binaries
  default/                 # Standard-Konfiguration (nicht editieren)
  local/                   # Lokale Anpassungen (ueberschreibt default)
    cribl/
      cribl.yml            # Hauptkonfiguration
      auth/                # Authentifizierung
      inputs/              # Quellen-Definitionen
      outputs/             # Destinations
      pipelines/           # Verarbeitungs-Pipelines
      routes/              # Route-Tabellen
  log/                     # Log-Dateien
  pid/                     # PID-Dateien
  state/                   # Laufzeitstatus
Konfigurationsprinzip: Cribl verwendet ein Schichtensystem. Dateien unter default/ werden nie direkt editiert. Alle Anpassungen erfolgen unter local/, das die Standardwerte ueberschreibt. Dies ermoeglicht saubere Upgrades.

2. Worker Processes und Threading

2.1 Worker-Konfiguration

Cribl Stream nutzt Node.js und kann mehrere Worker-Prozesse starten, um CPU-Kerne effizient zu nutzen. Im Free Tier ist nur ein einzelner Worker-Prozess erlaubt.

Einstellung Beschreibung PoC-Wert
Worker Processes Anzahl der parallel arbeitenden Prozesse 1 (Free Tier Limit)
Memory Limit Max. Speicher pro Worker 2048 MB (Standard)
CPU Affinity Bindung an bestimmte CPU-Kerne Nicht konfiguriert

2.2 Konfiguration via cribl.yml

# /opt/cribl/local/cribl/cribl.yml (Auszug)
api:
  host: 0.0.0.0
  port: 9000
  disabled: false
  ssl:
    disabled: true    # TLS fuer API -- siehe Abschnitt 6

distributed:
  mode: master        # Stream Leader-Modus
  port: 4200          # Edge Management Port

2.3 Performance-Tuning

PoC-Hinweis: Im PoC-Betrieb mit geringem Datenvolumen ist kein spezielles Performance-Tuning erforderlich. Bei hoeherem Durchsatz koennen folgende Parameter angepasst werden:

3. Authentication und Benutzer-Management

3.1 Lokale Benutzer

Cribl Stream verwaltet Benutzer in einer lokalen Datenbank. Fuer den PoC wird ausschliesslich der admin-Benutzer verwendet.

Benutzername Rolle Berechtigungen
admin Admin Vollzugriff auf alle Funktionen

3.2 Rollen und Berechtigungen

Cribl Stream unterstuetzt folgende vordefinierte Rollen:

Rolle Beschreibung Typischer Einsatz
Admin Vollzugriff, inkl. Benutzerverwaltung und Systemkonfiguration Plattform-Administratoren
Editor Kann Pipelines, Routes und Quellen bearbeiten Data Engineers
Read-Only Kann Konfiguration und Monitoring einsehen, aber nicht aendern Auditoren, Monitoring-Teams

3.3 Benutzer anlegen (API)

# Neuen Benutzer ueber die REST API anlegen
curl -s -X POST http://localhost:9000/api/v1/auth/users \
  -H "Authorization: Bearer <TOKEN>" \
  -H "Content-Type: application/json" \
  -d '{
    "username": "auditor",
    "password": "<sicheres_passwort>",
    "first": "Audit",
    "last": "User",
    "roles": ["read_only"]
  }'

3.4 Empfehlungen fuer den Produktivbetrieb

Produktions-Empfehlung: Im Produktivbetrieb sollte die lokale Authentifizierung durch SSO/SAML-Integration ersetzt werden:

4. Systemeinstellungen

4.1 Logging

Einstellung Pfad / Wert Beschreibung
Log-Verzeichnis /opt/cribl/log/ Alle Cribl Stream Logdateien
cribl.log /opt/cribl/log/cribl.log Haupt-Logdatei des Stream-Prozesses
Log-Level info (Standard) Optionen: error, warn, info, debug, silly
Rotation Automatisch Cribl rotiert Logs intern
# Log-Level temporaer auf debug aendern (ueber API)
curl -s -X PATCH http://localhost:9000/api/v1/system/settings \
  -H "Authorization: Bearer <TOKEN>" \
  -H "Content-Type: application/json" \
  -d '{"logLevel": "debug"}'
Achtung: Das Log-Level debug erzeugt erheblich mehr Log-Volumen und sollte nur temporaer fuer die Fehleranalyse aktiviert werden.

4.2 Metriken (Internal Metrics)

Cribl Stream stellt interne Metriken ueber den Endpunkt /api/v1/system/metrics bereit. Diese koennen fuer Monitoring und Alerting genutzt werden.

Metrik Beschreibung Einheit
total.in_events Eingehende Events gesamt Anzahl
total.out_events Ausgehende Events gesamt Anzahl
total.in_bytes Eingehendes Datenvolumen Bytes
total.out_bytes Ausgehendes Datenvolumen Bytes
health.inputs Zustand der Quellen Status
health.outputs Zustand der Destinations Status
system.cpu_perc CPU-Auslastung des Workers Prozent
system.mem_rss Speicherverbrauch (RSS) Bytes

4.3 Diagnostics

# Diagnostics-Bundle erstellen (ueber CLI)
/opt/cribl/bin/cribl diag

# Diagnostics-Bundle ueber die API erstellen
curl -s -X POST http://localhost:9000/api/v1/system/diag \
  -H "Authorization: Bearer <TOKEN>" \
  --output diag-bundle.tar.gz

Das Diagnostics-Bundle enthaelt Konfiguration, Logs, Metriken und Systeminformationen und kann fuer den Support oder die Fehleranalyse verwendet werden.

5. API-Zugang und Token-Management

5.1 REST API Uebersicht

Die Cribl Stream REST API ist unter http://<host>:9000/api/v1/ erreichbar und bietet programmgesteuerten Zugriff auf alle Konfigurationsbereiche.

Endpunkt Methode Beschreibung
/api/v1/auth/login POST Authentifizierung, liefert Bearer Token
/api/v1/health GET Health-Check
/api/v1/m/default/system/inputs GET/POST Quellen auflisten/erstellen
/api/v1/m/default/system/outputs GET/POST Destinations auflisten/erstellen
/api/v1/m/default/pipelines GET/POST Pipelines auflisten/erstellen
/api/v1/m/default/routes GET/PUT Routes auflisten/konfigurieren
/api/v1/edge/nodes GET Edge Nodes auflisten
/api/v1/master/groups GET/POST Fleet-Gruppen verwalten
/api/v1/version/commit POST Konfiguration committen
/api/v1/master/groups/default/deploy POST Konfiguration deployen
Single-Mode vs. Leader-Mode API-Pfade: Die oben gezeigten API-Pfade mit /m/default/ gelten fuer den Leader-Mode (verteilte Konfiguration). Im Single-Mode (Standard bei Einzelinstallation) muessen die Pfade ohne dieses Praefix verwendet werden: Der aktuelle Modus kann ueber /api/v1/system/info abgefragt werden.

5.2 Authentifizierung (Bearer Token)

Die API verwendet Bearer-Token-Authentifizierung. Das Token wird ueber den Login-Endpunkt bezogen. Die Hilfsbibliothek scripts/lib/api-helpers.sh kapselt diesen Vorgang in der Funktion cribl_auth().

# Token beziehen
TOKEN=$(curl -s -X POST http://localhost:9000/api/v1/auth/login \
  -H "Content-Type: application/json" \
  -d '{"username":"admin","password":"<passwort>"}' | jq -r '.token')

# Token verwenden
curl -s http://localhost:9000/api/v1/health \
  -H "Authorization: Bearer $TOKEN"

5.3 API-Wrapper-Funktionen

Das Projekt stellt in scripts/lib/api-helpers.sh komfortable Wrapper bereit:

Funktion Beschreibung
cribl_auth Authentifiziert und speichert Token in CRIBL_AUTH_TOKEN
cribl_get / cribl_post / cribl_put / cribl_patch / cribl_delete Generische HTTP-Methoden mit automatischer Auth
cribl_create_source Erstellt eine Quelle aus JSON-Konfigurationsdatei
cribl_create_destination Erstellt eine Destination aus JSON-Konfigurationsdatei
cribl_create_pipeline Erstellt eine Pipeline aus JSON-Konfigurationsdatei
cribl_create_route Konfiguriert Routes aus JSON-Konfigurationsdatei
cribl_create_fleet Erstellt eine Fleet-Gruppe mit ID und Beschreibung
cribl_commit_deploy Committet und deployt die aktuelle Konfiguration
cribl_health_check Prueft den Health-Endpunkt

6. TLS-Konfiguration

6.1 PoC-Status

PoC-Konfiguration: Im aktuellen PoC ist TLS fuer die Cribl Stream API deaktiviert (ssl.disabled: true). Der Zugriff wird stattdessen ueber das verschluesselte Tailscale-VPN-Overlay gesichert.

6.2 TLS fuer die Web-UI/API aktivieren

# /opt/cribl/local/cribl/cribl.yml
api:
  host: 0.0.0.0
  port: 9000
  ssl:
    disabled: false
    privKeyPath: /opt/cribl/local/certs/server.key
    certPath: /opt/cribl/local/certs/server.crt
    # Optional: CA-Zertifikat fuer Client-Zertifikats-Validierung
    # caPath: /opt/cribl/local/certs/ca.crt

6.3 TLS fuer Destinations

Die Splunk-Destinations sind wie folgt konfiguriert:

Destination TLS-Status Port Begruendung
Splunk HEC Aktiviert (tls.disabled: false) 8088 HEC erfordert standardmaessig TLS
Splunk S2S Deaktiviert (tls.disabled: true) 9997 S2S-Protokoll nutzt eigene Verschluesselung (PoC)

6.4 Zertifikatsverwaltung fuer den Produktivbetrieb

Produktionsanforderung: Fuer den Produktivbetrieb in einer regulierten Bankumgebung muessen folgende TLS-Anforderungen erfuellt werden:

7. Fleet Management Konzept

7.1 Architektur

Cribl Fleet Management ermoeglicht die zentrale Verwaltung von Edge Nodes ueber den Stream Leader. Edge Nodes werden in Fleets (Gruppen) organisiert, die jeweils eine eigene Konfiguration erhalten koennen.


  +---------------------------+
  |    Cribl Stream Leader    |
  |    (Fleet Manager)        |
  |    Port 4200 (Mgmt)       |
  +------+----------+---------+
         |          |
         v          v
  +-----------+  +-----------+
  | Fleet:    |  | Fleet:    |
  | nuc-linux |  | windows-  |
  |           |  | workstns  |
  | - Edge 1  |  | - Edge 3  |
  | - Edge 2  |  | - Edge 4  |
  +-----------+  +-----------+

7.2 Geplante Fleet-Struktur

Fleet-ID Beschreibung Betriebssystem Quellen
nuc-linux Linux Edge Nodes auf Intel NUC Debian/Ubuntu File Monitor, Journald
windows-workstations Windows Edge Nodes auf Arbeitsplaetzen Windows 10/11 Windows Event Log, File Monitor

7.3 Fleet erstellen (API)

# Fleet ueber die API erstellen (api-helpers.sh)
cribl_create_fleet "nuc-linux" "Linux Edge Nodes auf Intel NUC Systemen"

# Oder direkt per curl:
curl -s -X POST http://localhost:9000/api/v1/master/groups \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"id": "nuc-linux", "description": "Linux Edge Nodes auf Intel NUC Systemen"}'

7.4 Konfiguration deployen

Aenderungen an der Stream-Konfiguration muessen committed und anschliessend auf die Fleets deployed werden. Dies erfolgt ueber die API-Wrapper-Funktion cribl_commit_deploy():

# Konfiguration committen und deployen
cribl_commit_deploy "Quellen-Konfiguration fuer NUC-Fleet erstellt"

# Oder manuell per API:
# 1. Commit
curl -s -X POST http://localhost:9000/api/v1/version/commit \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"message": "Quellen-Konfiguration aktualisiert", "effective": true}'
Hinweis: Der Parameter effective: true beim Commit erfordert einen group-Parameter und funktioniert nur im Leader-Mode. Im Single-Mode reicht ein einfacher Commit ohne effective.
# 2. Deploy
curl -s -X POST http://localhost:9000/api/v1/master/groups/default/deploy \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{}'

7.5 Versionierung

Cribl Stream verfuegt ueber ein integriertes Git-basiertes Versionierungssystem. Jeder Commit erzeugt einen Versionseintrag, der ueber die UI oder API eingesehen und bei Bedarf zurueckgesetzt werden kann.

Best Practice: Jeder Konfigurationsaenderung sollte eine aussagekraeftige Commit-Nachricht mitgegeben werden. Die automatisierten Skripte nutzen dafuer den Parameter der Funktion cribl_commit_deploy("Beschreibung").