A high-performance Zeek log writer plugin that bridges telemetry payloads seamlessly into Fluvio streams. Built natively on the Fluvio C++ Client, this plugin ensures low-latency data ingestion for security operations and network analysis.
- Native C++ Performance: Leverages the official Fluvio C++ SDK for high-throughput log shipping.
- Selective Log Streaming: Fine-grained control over which logs are sent to Fluvio via Zeek scripts.
- Automatic Topic Mapping: Dynamically maps Zeek log streams (e.g.,
conn,dns,http) to Fluvio topics. - TLS Support: Programmatic mTLS authentication support for secure data pipelines.
The easiest way to install the plugin is via zkg:
zkg install zeek-fluvioIf you prefer to build from source:
git clone https://github.com/infinyon/zeek-fluvio
cd zeek-fluvio
./configure --zeek-dist=/path/to/zeek/source
make -C build
sudo make -C build installNote
The build system uses FetchContent to automatically download the correct version of the Fluvio C++ client for your architecture.
The plugin is configured via the Fluvio module in Zeek. Add the following to your local.zeek or custom policy scripts:
To send all active Zeek logs to Fluvio:
redef Fluvio::send_all_active_logs = T;To send only specific logs (e.g., Connection and DNS logs):
redef Fluvio::logs_to_send = set(Conn::LOG, DNS::LOG);To exclude sensitive logs from being streamed:
redef Fluvio::logs_to_exclude = set(Software::LOG);| Option | Type | Default | Description |
|---|---|---|---|
Fluvio::send_all_active_logs |
bool |
F |
If T, sends every active log stream to Fluvio. |
Fluvio::logs_to_send |
set[Log::ID] |
{} |
Explicit set of logs to ship. |
Fluvio::logs_to_exclude |
set[Log::ID] |
{} |
Logs that should never be sent to Fluvio. |
Fluvio::default_topic_name |
string |
"" |
Overrides the default topic mapping (uses log path if empty). |
The plugin implements a custom Log::Writer called FLUVIOWRITER. When a log record is written in Zeek, the plugin:
- Formats the record as JSON.
- Identifies the target Fluvio topic (defaulting to the log's path).
- Asynchronously dispatches the payload to the Fluvio SPU clusters.