stefanDeveloper/zeek-fluvio
GitHub: stefanDeveloper/zeek-fluvio
一款将 Zeek 网络监控日志实时推送至 Fluvio 流平台的高性能日志写入器插件。
Stars: 1 | Forks: 0
# Zeek-Fluvio 插件
一款高性能的 Zeek 日志写入器插件,可将遥测数据负载无缝桥接至 **Fluvio** 流。该插件基于 [Fluvio C++ Client](https://github.com/infinyon/fluvio-client-cpp) 原生构建,确保为安全运营和网络分析提供低延迟的数据接入。
## 🚀 功能特性
- **原生 C++ 性能**:利用官方 Fluvio C++ SDK 实现高吞吐量的日志传输。
- **选择性日志流**:通过 Zeek 脚本精细控制发送到 Fluvio 的日志。
- **自动 Topic 映射**:将 Zeek 日志流(例如 `conn`、`dns`、`http`)动态映射到 Fluvio topics。
- **TLS 支持**:支持可编程的 mTLS 认证,以构建安全的数据管道。
## 🛠️ 安装
### 使用 Zeek Package Manager (zkg)
安装该插件最简单的方法是通过 `zkg`:
```
zkg install zeek-fluvio
```
### 手动构建
如果您更喜欢从源代码构建:
```
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 install
```
## ⚙️ 配置
该插件通过 Zeek 中的 `Fluvio` 模块进行配置。请将以下内容添加到您的 `local.zeek` 或自定义策略脚本中:
### 基础设置
要将所有活动的 Zeek 日志发送到 Fluvio:
```
redef Fluvio::send_all_active_logs = T;
```
### 选择性日志记录
仅发送特定的日志(例如 Connection 和 DNS 日志):
```
redef Fluvio::logs_to_send = set(Conn::LOG, DNS::LOG);
```
### 排除日志
要排除敏感日志不被流式传输:
```
redef Fluvio::logs_to_exclude = set(Software::LOG);
```
### 选项参考
| 选项 | 类型 | 默认值 | 描述 |
|--------|------|---------|-------------|
| `Fluvio::send_all_active_logs` | `bool` | `F` | 如果为 `T`,则将每个活动的日志流发送到 Fluvio。 |
| `Fluvio::logs_to_send` | `set[Log::ID]` | `{}` | 明确指定要传输的日志集合。 |
| `Fluvio::logs_to_exclude` | `set[Log::ID]` | `{}` | 永远不应发送到 Fluvio 的日志。 |
| `Fluvio::default_topic_name` | `string` | `""` | 覆盖默认的 topic 映射(如果为空,则使用日志路径)。 |
## 🏗️ 架构
该插件实现了一个名为 `FLUVIOWRITER` 的自定义 `Log::Writer`。当在 Zeek 中写入日志记录时,该插件会:
1. 将记录格式化为 JSON。
2. 识别目标 Fluvio topic(默认为日志的路径)。
3. 将负载异步分发到 Fluvio SPU 集群。
标签:C++, Fluvio, Homebrew安装, IP 地址批量处理, Kafka替代, mTLS, OISF, Rootkit, TLS, Zeek, zkg, 命令控制, 安全运营, 实时数据, 开源, 扫描框架, 插件, 数据擦除, 数据流, 数据管道, 数据采集, 日志传输, 日志管理, 流处理, 消息队列, 系统分析, 网络分析, 网络安全, 软件工程, 遥测数据, 防御工具, 隐私保护