Skip to content

事件与输出流水线 ​

相关源文件

以下文件被用作生成此维基页面的上下文:

目的与范围 ​

本页面提供了 eCapture 核心 TLS 事件与输出流水线的深度架构与实现级追踪。它涵盖了捕获的 OpenSSL/BoringSSL、GoTLS 和 GnuTLS 事件的完整生命周期——从内核态 eBPF ring buffer 提取开始,经过用户态解码 (BaseEvent.Decode) pkg/event_processor/base_event.go:89-120,通过 EventProcessor 进行异步分发 pkg/event_processor/processor.go:70-93,在 eventWorker 中进行工作线程聚合 pkg/event_processor/iworker.go:69-88,由处理器(Handler)进行处理(Text、Keylog 和 Pcapng 模式),通过 ByteSink 进行原始传输路由 docs/agent/output-pipeline.md:33-42,以及向类型化的 eCaptureQ 通道进行附加发布 docs/agent/output-pipeline.md:57-59。


1. 事件解码与异步分发 ​

当 eBPF 探针捕获 TLS 明文或主密钥(master secrets)时,原始字节缓冲区通过 Perf/Ring 缓冲区从内核态推送到用户态。事件处理流水线将这些原始字节数组转换为结构化的领域事件,并将其路由到适当的工作协程。

关键组件与数据结构 ​

Sources: pkg/event_processor/base_event.go:76-120, pkg/event_processor/processor.go:27-115, pkg/event_processor/iworker.go:69-99, pkg/event_processor/iparser.go:85-115


2. 表现形式处理器与路由 ​

一旦事件被工作线程处理,它们将根据当前激活的捕获模式(Text、Keylog 或 Pcapng)被分类并路由到相应的表现形式处理器(Representation Handlers)。

处理器机制 ​

Sources: pkg/event_processor/base_event.go:134-167, pkg/event_processor/iparser.go:117-162, pkg/event_processor/http_request.go:28-45, pkg/event_processor/http_response.go:28-37, internal/probe/base/handlers/keylog_handler.go:37-106, docs/agent/output-pipeline.md:33-55


3. ByteSink 目标与传输路由 ​

原始传输通过 ByteSink 接口与格式表现形式解耦 docs/agent/output-pipeline.md:33-42。这使得文本、密钥日志和 pcapng 编码器能够通过统一的工厂无缝地写入各种底层目标 docs/agent/output-pipeline.md:95-114。

ByteSink 契约 ​

go
type ByteSink interface {
    io.Writer
    Name() string
    Flush() error
    Close() error
}

Sources: docs/agent/output-pipeline.md:33-42

支持的传输目标 ​

Sources: docs/agent/output-pipeline.md:33-55, internal/output/writers/pipeline_test.go:31-104


4. 附加的 eCaptureQ 发布 ​

除了向主要的 ByteSink 目标写入原始字节流外,eCaptureQ 还作为一个附加的、类型化的事件发布者运行 docs/agent/output-pipeline.md:57-65。

关注点分离 ​

  • 隔离性:捕获的负载和敏感的 TLS 密钥与操作日志严格分区,永远不会进入 --logaddr 或 PROCESS_LOG 通道 docs/agent/output-pipeline.md:27-30。
  • 协议:eCaptureQ 消息被序列化为二进制 protobuf LogEntry 结构,包含元数据、时间戳、进程信息和网络元组,而不会对原始接收端字节进行反向解析 docs/agent/output-pipeline.md:105-118。

Sources: docs/agent/output-pipeline.md:27-30, docs/agent/output-pipeline.md:105-118

事件与输出流水线 has loaded
下载