| Version | Datum | Autor | Beschreibung |
|---|---|---|---|
| 1.0 | 2026-02-10 | IceDataEmphasise Team | Initiale Erstellung der Stream-Konfigurationsdokumentation |
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
| Parameter | Standardwert | Empfehlung |
|---|---|---|
| Benutzername | admin |
Beibehalten; zusaetzliche Benutzer anlegen |
| Passwort | admin (erster Start) |
Sofort aendern auf sicheres Passwort |
.env-Datei als
CRIBL_ADMIN_PASSWORD hinterlegt, um automatisierte Konfiguration ueber die API zu
ermoeglichen.
/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
default/
werden nie direkt editiert. Alle Anpassungen erfolgen unter local/, das die Standardwerte
ueberschreibt. Dies ermoeglicht saubere Upgrades.
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 |
# /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
LimitNOFILE=65536 -- File-Descriptor-Limit im systemd-Service (bereits gesetzt)staleChannelFlushMs: 10000 -- Flush-Intervall fuer inaktive Quellen-KanaelepqMaxSize: 1GB
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 |
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 |
# 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"]
}'
admin-Accounts nach SSO-Migration| 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"}'
debug erzeugt erheblich mehr Log-Volumen und
sollte nur temporaer fuer die Fehleranalyse aktiviert werden.
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 |
# 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.
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 |
/m/default/
gelten fuer den Leader-Mode (verteilte Konfiguration). Im Single-Mode (Standard bei Einzelinstallation)
muessen die Pfade ohne dieses Praefix verwendet werden:
/api/v1/system/inputs statt /api/v1/m/default/system/inputs/api/v1/system/outputs statt /api/v1/m/default/system/outputs/api/v1/pipelines statt /api/v1/m/default/pipelines/api/v1/routes statt /api/v1/m/default/routes/api/v1/system/info abgefragt werden.
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"
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 |
ssl.disabled: true). Der Zugriff wird stattdessen ueber das verschluesselte
Tailscale-VPN-Overlay gesichert.
# /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
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) |
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 |
+-----------+ +-----------+
| 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 |
# 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"}'
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}'
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 '{}'
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.
cribl_commit_deploy("Beschreibung").