Fluent Bit is the log collector for the LaRuche stack. It centralizes the enriched events produced by the analyzer and forwards them to OpenObserve (US-19).
graph TD
A[Honeypots] -->|Raw JSONL| B[Analyzer]
B -->|Enriched Events| C[Fluent Bit]
C -->|HTTP Forward| D[OpenObserve]
Fluent Bit does not read the raw logs from the honeypots. It only consumes events already enriched by the analyzer (/var/log/honeypot/enriched/*.jsonl), which contain the enrichment block (geolocation, reputation) and classification.profile (behavioral profile).
fluent-bit/fluent-bit.conf: Main configuration (inputs, filters, outputs).fluent-bit/parsers.conf: JSON parser for honeypot events.
| Variable | Default | Description |
|---|---|---|
OPENOBSERVE_USER |
admin@laruche.local |
OpenObserve username for authentication. |
OPENOBSERVE_PASSWORD |
Honeypot2026! |
OpenObserve password for authentication. |
Fluent Bit tails the enriched events produced by the analyzer:
- Path:
/var/log/honeypot/enriched/*.jsonl - Parser:
honeypot_json(defined inparsers.conf) - Tag:
honeypot.* - Read from Head: Yes (reads existing logs on startup)
- Refresh Interval: 5 seconds
- State Database:
/var/lib/fluent-bit/state/tail.db(tracks offsets to avoid re-emitting logs after restart)
The honeypot_json parser is configured to parse JSON events conforming to the schema defined in docs/event.schema.json:
- Format: JSON
- Time Key:
timestamp(ISO 8601 UTC with milliseconds, e.g.,2026-06-09T12:59:31.155Z) - Time Format:
%Y-%m-%dT%H:%M:%S.%LZ - Time Keep: On (preserves the original timestamp field)
A record_modifier filter adds a collected_by field to each event to track the origin without altering the event data:
- Match:
honeypot.* - Record:
collected_by fluent-bit
A local debug output for logging Fluent Bit's activity:
- Format:
json_lines - Match:
honeypot.*
The primary output forwards events to OpenObserve via HTTP:
- Host:
openobserve - Port:
5080 - URI:
/api/default/honeypot-events/_json - Format:
json - Authentication: Basic Auth using
OPENOBSERVE_USERandOPENOBSERVE_PASSWORD - TLS: Off (for local development)
Fluent Bit is started as part of the Docker Compose stack:
docker compose up -d fluent-bitFluent Bit exposes a health and metrics endpoint on port 2020:
- Endpoint:
http://localhost:2020 - Metrics: Available at
http://localhost:2020/api/v1/metrics
- Non-Root Container: Fluent Bit runs as a non-root user to minimize the impact of a compromise.
- No New Privileges: The container is started with the
no-new-privilegessecurity option to prevent privilege escalation. - Read-Only Volume: The honeypot logs volume is mounted as read-only to prevent Fluent Bit from modifying the logs.
This project is licensed under the MIT License. See the LICENSE file for details.
- Fluent Bit: For providing a lightweight and efficient log collector.
- OpenObserve: For providing a powerful log storage and visualization platform.
This project is designed for educational and research purposes only. Do not use it to attack systems without explicit permission.