docs/event-forward-api-zh_Hans.md
本文档简要说明:作为客户端,如何接收 eCapture 导出的事件和运行日志,以及应该去看哪些已有文档和 Demo。
说明:
- 默认监听地址:
ws://127.0.0.1:28257- 可通过命令行参数
--ecaptureq修改监听地址,例如:--ecaptureq=ws://127.0.0.1:28257/- 所有接口均为 Protobuf
eCapture 目前有三种与“日志 / 事件输出”相关的参数:
--logaddr:eCapture 自身运行日志输出位置(文本)--eventaddr:捕获到的事件日志输出位置(文本)--ecaptureq:通过 WebSocket + Protobuf(LogEntry) 实时转发运行日志和事件(结构化)项目中已经包含了详细协议说明和一个完整 Demo,本文件只做“索引 + 行为说明”,方便你快速上手。
--logaddr:运行日志(文本)/var/log/ecapture.log)tcp://host:portws://host:port/path 或 wss://host:port/path--eventaddr:捕获事件日志(文本)--logaddr 类似(文件 / TCP / WebSocket),输出的是 文本格式 的事件日志。--ecaptureq:统一事件转发(WebSocket + Protobuf)作用:启动一个 WebSocket 服务(eCaptureQ),把 运行日志 + 捕获事件 统一以 LogEntry Protobuf 格式推送给 WebSocket 客户端。
参数示例:
# 在本机 28257 端口启动 eCaptureQ
sudo ./ecapture tls --ecaptureq=ws://127.0.0.1:28257/
输出特点:
LogEntry 的 protobuf 二进制编码;log_type 字段区分:心跳 / 运行日志 / 事件。eventaddr 与 ecaptureq 的关系--eventaddr 与 --ecaptureq 都是“事件输出通道”:
--eventaddr:文本格式 输出事件日志;--ecaptureq:Protobuf(LogEntry) 格式输出事件和运行日志。--ecaptureq 和 --eventaddr 时,eCapture 会 优先使用 --ecaptureq;--ecaptureq;--eventaddr。如果你希望通过 WebSocket + Protobuf 的方式实时消费事件,推荐使用 --ecaptureq,并参考仓库中现有的文档和 Demo。
请阅读:
protobuf/proto/v1/ecaptureq.protoprotobuf/PROTOCOLS.md这两个文件一起定义了:
LogEntry:
log_type: LOG_TYPE_HEARTBEAT / LOG_TYPE_PROCESS_LOG / LOG_TYPE_EVENTpayload:根据 log_type 携带 Heartbeat / Event / run_logEvent 字段:
timestamp, uuid, src_ip, dst_ip, pid, pname, type, length, payload 等Heartbeat 字段:
timestamp, count, message这部分在 PROTOCOLS.md 里已经写得比较详细,可以直接对照实现。
如果你用 Go,最简单的方式是直接参考官方 Demo:
examples/ecaptureq_client/
examples/ecaptureq_client/main.goexamples/ecaptureq_client/README.md该 Demo 已经帮你做好了:
--ecaptureq 指定的地址;protobuf/gen/v1 中的 pb.LogEntry 解码消息;LogType 分别处理:
# 1. 启动 eCapture,开启 eCaptureQ WebSocket
sudo ./ecapture tls --ecaptureq=ws://127.0.0.1:28257/
# 2. 构建客户端
cd examples/ecaptureq_client
go build -o ecaptureq_client main.go
# 3. 连接并查看事件
./ecaptureq_client -server ws://127.0.0.1:28257/
# 或
./ecaptureq_client -server ws://192.168.1.100:28257/ -verbose
如果你要集成到自己的系统,建议:
main.go 里的接收 + 解码 + 分发逻辑;对于其他语言(Python / Java / Node.js / Rust 等),可以按以下步骤:
protobuf/proto/v1/ecaptureq.proto 生成代码;ws://HOST:PORT/(尾部包含 /);LogEntry;log_type 分别处理:心跳、运行日志、事件。可以先跑一遍 examples/ecaptureq_client 看行为,再在你的语言里模仿同样的逻辑。
eventaddr / logaddr 接收纯文本日志如果你不想处理 protobuf,只需要“文本日志”:
--logaddr 输出 eCapture 自身运行日志;--eventaddr 输出捕获事件日志(文本);例如:
# 运行日志写到文件,事件日志写到另一个文件
./ecapture tls \
--logaddr=/var/log/ecapture.log \
--eventaddr=/var/log/ecapture-events.log
或:
# 事件日志通过 TCP 推送到远程
./ecapture tls \
--eventaddr=tcp://192.168.1.100:9000
此时,你作为“客户端”只需要:
提醒:如果你同时设置了 --ecaptureq 和 --eventaddr,事件会优先通过 --ecaptureq 的 WebSocket + protobuf 输出;eventaddr 更适合在没有使用 eCaptureQ 时提供文本日志。
--ecaptureq,并参考:
protobuf/proto/v1/ecaptureq.protoprotobuf/PROTOCOLS.mdexamples/ecaptureq_client/--logaddr 输出运行日志;--eventaddr 输出事件日志(不使用 protobuf);--ecaptureq 优先级最高,优先通过 WebSocket + protobuf 方式转发。本文件保持简洁,细节以仓库中已有的协议文档和 Demo 为准。