Witty-Insight数据流水线揭秘:从原始事件到语义分析的完整流程

发布时间:2026/7/16 18:05:31
Witty-Insight数据流水线揭秘:从原始事件到语义分析的完整流程 Witty-Insight数据流水线揭秘从原始事件到语义分析的完整流程【免费下载链接】witty-insightThe witty-insight is an eBPF-based observability framework for tracing agent execution pipelines.项目地址: https://gitcode.com/openeuler/witty-insight前往项目官网免费下载https://ar.openeuler.org/ar/Witty-Insight是基于eBPF的可观测性框架专为追踪代理执行流水线设计。本文将深入剖析其核心数据流水线展示从eBPF探针捕获原始事件到最终语义分析的完整流程帮助新手用户理解这一强大工具的工作原理。数据流水线概览核心架构解析Witty-Insight的核心是一条从eBPF探针到持久化的数据处理流水线每层职责明确、数据单向流动。这条流水线采用模块化设计确保数据处理的高效性和可靠性。整个流水线可概括为Probes → Parser → Aggregator → Analyzer → GenAI → Storage每个环节都有其特定的功能和输出。阶段一事件捕获ProbeseBPF探针架构Witty-Insight使用7个eBPF探针从内核态捕获数据所有探针共享同一个环形缓冲区ring buffer和traced_processesBPF映射由Probes管理器统一协调。主要探针功能sslsniff捕获SSL/TLS流量通过uprobe附加到SSL_read/SSL_write函数proctrace跟踪进程命令行通过tracepoint监控sched_process_exec事件procmon监控进程生命周期跟踪进程的创建、执行和退出filewatch监控文件打开事件特别关注.jsonl文件filewrite捕获文件写入内容主要针对.jsonl文件udpdns捕获DNS查询监控UDP 53端口的流量tcpsniff捕获明文HTTP流量监控特定IP/端口的TCP消息所有探针捕获的事件通过环形缓冲区传递到用户空间由src/probes/probes.rs中的轮询线程处理。阶段二协议解析Parser解析阶段负责将原始事件转换为结构化的消息格式。输入为Event枚举输出为ParseResult包含0个或多个ParsedMessage。支持的消息类型pub enum ParsedMessage { Http(ParsedHttpMessage), // HTTP/1.x请求或响应 Http2(ParsedHttp2Frame), // HTTP/2帧 Sse(ParsedSseEvent), // SSE事件 Proc(ParsedProcEvent), // 进程事件 }解析策略HttpParser状态机解析HTTP/1.x请求行、状态行、头信息和正文Http2Parser解码HTTP/2帧HEADERS、DATA、SETTINGS等SseParser将SSE的data:行解析为JSON格式ProcTraceParser解析execve事件的命令行参数统一入口为Parser::parse_event()根据事件类型路由到相应的解析器实现代码位于src/parser/unified.rs。阶段三事件聚合Aggregator聚合阶段将解析后的消息组合成有意义的完整事件。输入为ParseResult输出为VecAggregatedResult。聚合结果类型pub enum AggregatedResult { HttpComplete(HttpPair), // HTTP请求-响应对 SseComplete(SsePair), // HTTP请求 SSE流响应 RequestOnly { request, .. }, // 超时未收到响应 ResponseOnly { response, .. },// 无匹配请求 ProcessComplete(AggregatedProcess), // 完整进程生命周期 Http2StreamComplete(Http2Stream), // 完整HTTP/2流 Http2Frames { .. }, // HTTP/2帧序列 }关联策略HTTP/1.x通过(pid, fd) LRU连接缓存匹配请求和响应HTTP/2按流ID聚合帧SSEHTTP请求 后续SSE事件流以[DONE]标记结束进程聚合exec/exit事件为完整生命周期超时处理机制确保未匹配的请求/响应在超时后以RequestOnly/ResponseOnly形式输出。聚合逻辑实现于src/aggregator/unified.rs。阶段四分析Analyzer分析阶段对聚合后的事件进行深度处理生成审计记录、令牌使用记录等。输入为AggregatedResult输出为VecAnalysisResult。分析结果类型pub enum AnalysisResult { Audit(AuditRecord), // 审计记录 Token(TokenRecord), // 令牌使用记录 Http(HttpRecord), // HTTP数据记录 Message(ParsedApiMessage), // 解析的API消息 }分析流程进程事件→ 直接生成AuditRecordHTTP事件→ 并行执行AuditAnalyzer→ 生成审计记录LLM调用、HTTP请求摘要TokenParser→ 从SSE事件中提取令牌使用情况反向搜索首次匹配HttpRecord提取 → 原始HTTP数据导出手动令牌计算→ 如果SSE中没有令牌数据使用MultiModelTokenizer聊天模板计算分析阶段的实现代码位于src/analyzer/unified.rs。阶段五GenAI语义构建GenAI BuilderGenAI构建阶段将分析结果转换为具有语义含义的GenAI事件。输入为VecAnalysisResult输出为VecGenAISemanticEvent。语义事件类型pub enum GenAISemanticEvent { LLMCall(LLMCall), // 完整LLM调用 ToolUse(ToolUse), // 工具调用 AgentInteraction(AgentInteraction), // 代理交互 StreamChunk(StreamChunk), // 流式响应块 }构建策略LLMCall从HTTP请求中提取请求消息从SSE响应中提取输出消息代理名称解析通过AgentMatcher将PID/comm映射到已知代理名称唯一ID生成基于session_prefix AtomicU64计数器构建后的事件通过GenAIExporter特性导出到多个后端GenAIStore→ 本地JSONL文件GenAISqliteStore→ SQLite数据库SlsUploader→ 阿里云SLSGenAI构建的实现代码位于src/genai/builder.rs。阶段六持久化Storage存储阶段负责将分析结果和GenAI语义事件持久化。输入为AnalysisResultGenAISemanticEvent输出为SQLite表 / SLS日志 / JSONL文件。SQLite表结构StoreTableContentAuditStoreaudit_events审计事件TokenStoretoken_records令牌使用记录HttpStorehttp_records原始HTTP数据TokenConsumptionStorestoken_consumption令牌消耗明细GenAISqliteStoregenai_eventsGenAI语义事件存储层的实现代码位于src/storage/unified.rs和src/storage/sqlite/目录。流水线容错设计永不停止的数据流Witty-Insight流水线采用宽松的错误处理策略确保系统的高可用性探针层环形缓冲区轮询错误会终止轮询线程但主线程不会退出解析层解析失败会被静默忽略返回空的ParseResult聚合层超时未匹配的事件以RequestOnly/ResponseOnly形式输出分析层令牌提取失败时尝试手动计算失败则跳过存储层存储失败仅记录警告不会阻塞流水线设计原则数据流水线不会因中间层错误而停止单个事件失败不会影响其他事件。总结Witty-Insight流水线的价值Witty-Insight的数据流水线从eBPF探针捕获原始事件开始经过解析、聚合、分析、语义构建最终将数据持久化存储。这条流水线不仅实现了高效的数据处理还通过模块化设计和容错机制确保了系统的稳定性和可靠性。通过理解这一完整流程用户可以更好地利用Witty-Insight进行代理执行流水线的可观测性分析从而优化系统性能、排查问题并提升整体可靠性。无论是新手还是有经验的用户都能从这一强大的eBPF框架中获益。要开始使用Witty-Insight只需克隆仓库git clone https://gitcode.com/openeuler/witty-insight然后按照项目文档进行安装和配置。【免费下载链接】witty-insightThe witty-insight is an eBPF-based observability framework for tracing agent execution pipelines.项目地址: https://gitcode.com/openeuler/witty-insight创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考