2026年7月9日 周四晚上19:30,报名腾讯会议了解“如何构建自进化的动态知识库(Brain)”(限30人)
免费POC, 零成本试错
FDE知识库

FDE知识库

学习大模型的前沿技术与行业落地应用


收藏

eBPF + LLM:实现可观测性智能体的基础设施

发布日期:2024-05-22 21:14:53 浏览次数: 3533
作者:架构驿站

微信搜一搜,关注“架构驿站”

本文整理自云杉网络 DeepFlow 产品负责人向阳在 QCon 全球软件开发大会(北京站)2024[1] 上的演讲分享,主题为「eBPF + LLM:实现可观测性智能体的基础设施」。回看链接[2]PPT下载[3]

报名倒计时第二天!快来参与可观测性开源开发者Meetup |南京站

今天很高兴与大家分享 DeepFlow 在可观测性智能体方面所做的一些工作。今天的话题主要包括两个方面:如何使用 eBPF 解决数据质量的问题,如何在此基础上使用 LLM 构建高效率的智能体。从这两方面出发,我们能看到为何说 eBPF 和 LLM 是实现可观测性智能体的关键基础设施

上面第一个问题实际上是一个数据治理问题,得到高质量数据有很多方法,例如利用组织规范要求、提升研发工程效能等。今天我分享的主要是后者,具体来说是如何利用 eBPF 这种创新的技术零侵扰获取全栈可观测性数据。在我们有了高质量数据之后,利用 LLM,结合提示词工程、RAG、微调等手段,才能够建设高效的可观测性智能体。今天分享的实践来自于我们的可观测性产品 DeepFlow,同时它也是一个越来越流行的开源项目。最后我也会分享一下关于可观测性智能体的演进思考。

01

使用 eBPF 构建高质量的可观测性信号源

第一个问题的实质是数据治理,目标是获得高质量的可观测性数据。我们先来看一下传统的解决方案,比如我们使用 APM 采集数据,此时如何保证数据的完整性、关联性?特别是在云原生的环境下,客户端访问服务端时,可能会经过复杂的 K8s 网络、各类网关、各种中间件、数据库、以及 DNS 等各类基础服务,这些中间环节都不是 APM 所能覆盖的,甚至 APM 的观测位置和进程实际的网络请求也会有差异。我们在这个基础上做数据治理和数据分析,通常会发现数据的完整性和一致性存在问题,经常需要花费大量的时间和精力来推动提升业务侧插桩覆盖率,还需要利用抓包、看日志等方式串联大量基础服务的异构数据。下面这幅图相信是我们使用 APM 时经常会碰到的问题:客户端观测到的时延是 500ms,而服务端观测到的只有 10ms,更糟糕的是可能服务端还没发插桩。

言归正传,我们为什么说 eBPF 是高质量可观测性信号源的基础设施呢?eBPF 技术是一种内核的可编程技术,下面这张图上的每个小蜜蜂都是 eBPF 可以 Hook 的函数位置。我们在云主机上的任何一个进程,它的所有内部状态,我们都可以使用 eBPF 通过 Hook 业务函数、系统调用、内核函数、网络和磁盘驱动函数来进行感知。更关键的是,这个动作因为有 eBPF Verifier 的存在是完全安全的,而且因为有 JIT 编译机制的存在其性能可媲美内核原生代码。

eBPF 技术有两个独特的优势,可以很好的解决 APM 面临的数据质量问题。第一个优势是零侵扰(Zero Code),一个 eBPF 程序的运行不需要对任何应用进程进行代码修改、重编译、重启,它是一项即插即用的技术,可以随时上到你的生产环境中。第二个优势是全栈(Full Stack),无论是业务进程,还是网关、消息队列、数据库、操作系统,都可以使用 eBPF 采集到观测数据。因此当一个进程在运行时,它与整个软件栈的交互,从业务逻辑到语言运行时,从共享库到内核再到硬件驱动,都可以使用 eBPF 来覆盖。从下图中我们可以看到,eBPF 能够采集的 Raw Data 是非常丰富的,包括:Process Events、File Events、Perf Events、Socket Events、Kernel Events、Hardware Events。今天 QCon 这个 Session 的主题是业务可观测性,对于这个主题来讲,我们先把焦点放到前四类数据上。

但是上图中大家看到的这些数据只是 Raw Data,需要进行识别、提取、转换、关联、聚合等操作才能得到我们能日常使用的业务可观测性数据。下面这张图是 DeepFlow 中对 eBPF 原始数据处理的一部分总结,可以看到我们基于 Socket Events 可以提取出 API 的 Request/Error/Delay 黄金指标,通过关联这些指标可以构建 Service Map,通过关联所有的调用可以形成分布式追踪的调用链,而通过聚合这些调用链可以继续构建出更细粒度的 API Map。这其中,基于 eBPF 的零侵扰分布式追踪是 DeepFlow 原创的能力,无需插桩、无需注入 TraceID 即可实现分布式追踪,感兴趣的小伙伴欢迎到我们的 GitHub Repo[4] 上下载试用。除此之外,从 Process Events 可提取进程启停日志,从 File Events 可以提取 File Access Log,从 Perf Events 可以提取 CPU、内存、GPU、显存、锁事件并绘制性能剖析火焰图。

除了获取观测信号以后,我们还需要做的一项重要工作就是给数据注入统一的标签。比如注入从 K8s、Cloud、CMDB 中获取的资源和业务标签,帮助我们横向关联全栈数据;注入系统层面的进程、线程、协程等标签,以及面向网络层面的 Subnet、IP、TCP SEQ 等标签,帮助我们纵向关联分布式调用链。

以分布式追踪为例,我们来看看 DeepFlow 使用 eBPF 做到的效果。下图对比了 APM 和 eBPF 追踪结果的差别:使用 APM 一般能覆盖 Java 进程,但对于整个应用中的 API 网关、微服务网关、服务网格、DNS、Redis、MySQL 等通常难以覆盖,对其他非 Java 语言的应用覆盖代价也较大。使用 eBPF,基于零侵扰和全栈数据,整个调用栈可以涵盖所有的业务进程和基础设施进程,以及 K8s 网络传输、文件读写等事件。这项能力是一项非常前沿的创新,我们将这个工作发表了一篇近 20 页的学术论文,去年已经被美国计算机学会顶级学术会议 ACM SIGCOMM 录用。

回到今天 Session 的主题业务可观测性,那么 eBPF 从内核中获取到的数据如何与业务关联起来呢?eBPF 是内核技术,整个生态讨论的点聚焦在系统、性能、安全等方面;而应用关注业务语义,开发者希望获取的是业务、效率方面的信息。如何让 eBPF 的可观测性突破次元壁,从系统到业务,下面我也来讲讲 DeepFlow 的做法。以 Socket Data 为例,对 eBPF 获取到的数据进行协议解析时,我们通常只会解析标准协议(如 HTTP、MySQL 等)的头部字段。现在 DeepFlow 已经支持了二十多种协议解析,涵盖 HTTP1/2/S、RPC、MQ、DB、Network 几大类。DeepFlow 内置的解析能力可以从这些协议的头部乃至 Payload 中提取标准字段,例如 URL、SQL 语句、错误码等等。但是对于位于例如 HTTP Payload 中的业务错误码、交易流水号、订单 ID、汽车车架号等信息,是不能按照统一的逻辑来提取的。而且有时候业务会使用 Protobuf、Thrift 等方式进行序列化,需要结合相应的 Schema 才能对 Payload 进行解析。

这里我们使用了另一项技术 WebAssembly 来解决这个问题。实际上如果我们认为 eBPF 是一种内核可编程技术的话,那么 WebAssembly 就是一种用户态可编程技术。DeepFlow 使用它实现了一套安全、高性能、热加载的插件机制,用户可以使用 Golang、Rust、C/C++ 等语言编写 Plugin,实现对业务 Payload 的按需解析,从而对 Request Log、File Access Log 等 eBPF 观测数据进行增强。例如,你可以基于 DeepFlow 提供的 Plugin SDK,编写一段 Golang 程序,解析 HTTP 的 Protobuf Payload,提取业务关心的字段。你甚至能使用 Payload 中的 Error Code、Error Message 等信息改写原始 HTTP Request Log 中的相应字段。

最后,这一部分的内容标题是「使用 eBPF 构建高质量的可观测性信号源」。因此我们的观点是 eBPF 是一项基础设施,是整个可观测性建设的第一步。在零侵扰可观测性能力的雄厚基石之上,我们可以将传统侵入式的数据按需的纳入进来,并注入统一的标签,从而建设一个更加强大的可观测性平台。eBPF 的能力,就像是星级争霸一开始就敲上一段 Whos your daddy 让地图全开;而传统的侵入式数据,则像是业务方按需对局部区域使用科学球进行定点探查。

02

使用 LLM 构建高效率的可观测性智能体

今天分享的第二个点,是如何在一个高质量数据基础上,使用 LLM 的能力来构建可观性智能体。在以前,AIOps 最大的苦恼在于数据质量差(覆盖度低、格式乱)。当你打算开始做 AIOps 的时候,通常要花费小半年甚至更久的时间推动数据治理。现在,有了 eBPF 的高质量数据意味着基石牢固了,同时又恰逢 AGI 时代,LLM 展露出了远比以往小模型更强大的能力。因此我们认为 eBPF + LLM 是实现可观测性智能体的基础设施。下面我来分享一些 DeepFlow 在这方面的实践。

目前阶段,DeepFlow 并没有面向所有问题来做智能体,我们希望能挖掘开发、测试、运维整个流程中的问题,挑选出来两三个适合于通过结合可观测性 + 智能体来解决的最痛的痛点,先聚焦在这两三个点上做透。我们找到的第一个场景是工单,具体来讲是工单群创建初期阶段的混乱过程;第二个场景是变更,具体来讲是变更之后的性能劣化快速定界;第三个场景是漏洞,这个场景我们还在探索中,今天将会分享一些我们的初步思考。

工单的低效:我们先假设你的企业里面告警会触发创建一个群聊,例如创建一个飞书群。举一个我们在客户处看到的典型场景:第一个人被拉进工单群以后,他可能看看调用链追踪的数据,做一些分析后发现不是自己的问题;然后把第二个人拉进群,这个人看了一些指标数据,做了一些分析后又发现不是自己的问题;然后把第三个人拉进群,这个人看了看事件数据,做了一些分析后还是发现不是自己的问题;然后拉第四个人、第五个人、...;可能直到部门里那个最厉害的人老王被拉进群,又做了更加深入细致的分析和总结,才能盖棺定论并将工单转给合正确的责任人小李。我们经常发现,在工单匹配到小李之前,这个过程是非常混乱的、低效的,耗时可能长达一个多小时。即使开头拉进去的人并不是在全程参与,但这个工单群的存在也会时不时打断他们的正常工作,对工单群内所有人的效率都造成了明显的影响。

可观测性智能体可以怎样解决这个问题呢?工单被创建时,会自动将 AI Agent 驱动的机器人拉到工单群中。AI Agent 先调用 DeepFlow API 查看追踪、指标、事件、日志等数据种的一种,并对数据使用一系列统计算法进行特征总结(从而有效降低 Token 数量),然后使用这些特征信息作为 Prompt 调用 LLM(目前主要是 GPT4)进行分析。分析完一种数据之后,AI Agent 利用 LLM 的 Function Calling 或者 JSON Mode 等能力,决定还需要分析其他哪个或哪些类型的数据。最后,AI Agent 基于所有分析结果再请求 LLM 做一次归纳总结。

在这个过程中,DeepFlow 的 eBPF 提供了完整的、全栈的可观测性数据,AutoTagging 为所有数据注入了统一的、语义丰富的标签。基于分析结果,AI Agent 能够利用例如 label.owner 等标签将对应的负责人准确的拉到工单群中来。目前阶段,虽然 AI Agent 的工单定界准确率虽然还无法达到 100%,但他已经能够在大多数情况下将工单群初期非常混乱的一个多小时成功的压缩到一分钟,而且显著减少了工单群里的人数,从而显著提高了整个团队的工作效率

变更的低效:我们发现在云原生环境下,服务发版之后的性能劣化原因可能是多方面的,而且由于调用链、软件代码栈的复杂性,负责 On Call 的小伙伴有时候很难定位根因,也很有可能因为对自己知识范围以外的内容不懂而轻易误判。这类问题发生后,一般只能临时扩容或回滚恢复业务,等待问题修复以后再做一次发版。但是,测试环境不见得能复现生产环境中的问题,所以我们又不得不引入一系列的流量回放机制辅助分析问题的根因。在这个场景下,我们希望 AI Agent 能够帮助开发者快速定界性能劣化的根因,将版本再次上线的时间能大幅提前。

对于调用链复杂的场景,我们在工单 Agent 的例子中已经有了很好的解决思路。而对于函数调用栈复杂的场景,这正好是 eBPF 的拿手好戏,它能够零侵扰的获取进程运行时的业务函数、库函数、运行时函数、内核函数调用栈。由于 eBPF 的安全性和低开销,Profiling 能够持续开启,因此在变更之后性能劣化到无法容忍之前,通常已经积累了一段时间的 Profiling 数据,AI Agent 利用这些数据有望快速完成根因定界。

eBPF Profiling 数据涵盖了非常广泛的技术栈,任何一个业务开发都难以理解其中的全部信息。这种场景恰好是 AI Agent 擅长的。如下图所示,LLM 通常已经能够理解内核函数、运行时函数、基础库函数的知识,因此这部分函数的分析结果是可以直接给出的。即使有 LLM 不擅长的,由于这类函数所在的软件项目更新频率不高,且属于通用知识,因此我们可以考虑通过微调对 LLM 不掌握的部分进行增强。我们再来看一些常用的应用库函数,例如 Python 的 Requests 等等,这类库的特点是数量非常多、迭代比较快、接口文档非常丰富,我们可以考虑将此类函数的文档向量化,利用 RAG 机制来对 LLM 的分析进行增强。再往上就是企业内部的业务代码了,它们不是通用知识、数量也更大、变化也更快,因此我们选择优化提示词的方式来将他们直接喂给 LLM,例如我们可以在服务发版时在 K8s 中注入对应的 Git commit_id label,DeepFlow 的 AutoTagging 能力能够非常容易的让 AI Agent 通过 commit_id 定位到最近的代码修改记录并告知 LLM。可以看到,通过组合使用 LLM、Fine-tuning、RAG、Prompt Engineering 能技术,能够完整覆盖 eBPF 全栈 Profiling 数据中涉及到的所有专业领域,帮助开发者快速定界根因

漏洞的低效:有报道表名,「漏洞整改可能做了 76% 的无用功,仅有 3% 的漏洞应优先关注」。DeepFlow 目前还在探索如何在这个环节使用 AI Agent 提效。可以肯定的是 eBPF 是 Cloud Workload Security 绝佳的数据采集技术。Isovalent 总结了安全的四大黄金观测信号:Process Execution、Network Socket、File Access、Layer 7 Network Identity。DeepFlow 目前对这四个信号都有了一部分覆盖,未来还会持续增强,我相信随着这些数据的补齐,结合 LLM 一定能做出非常亮眼的安全场景 AI Agent。

这一部分的最后,我们来谈一谈如何持续改进 AI Agent。以工单场景为例,我们在测试环境中利用混沌工程可以构造大量的异常数据,由于这些异常我们知道正确的根因,因此可以用于评估 AI Agenl 并持续改进。在生产环境(注:PPT 右侧应为生产环境),我们加入了让使用者评分的机制,Agent 开发人员基于评分进行改进。

03

DeepFlow 用户的可观测性智能体实践案例

那么 DeepFlow 的 AI Agent 目前到底长什么样子呢?这部分我们来快速的介绍一下。目前 DeepFlow 企业版页面中,从拓扑图、调用链追踪、持续剖析页面都能唤出 AI Agent,同时 Agent 的 API 也可被飞书 ChatBot 调用实现工单专家的功能。当 AI Agent 给出第一轮总结后,同时也会提供三四个左右你可能会继续询问的问题,直接点击这些问题可以继续对话。当然用户也能直接输入自己的问题进行对话。

另外,DeepFlow 社区版中今天也发布了 AI Agent 的能力,目前能够对当前 Grafana Panel 的数据进行分析。当前我们支持了 Topo 和 Tracing 两个 Pannel,适配了 GPT、通义千问、文心一言、ChatGLM 四种大模型,欢迎大家下载试用。

04

未来演进方向的思考

最后,我来分享一下 DeepFlow AI Agent 未来的演进方向。

现在,eBPF 已经能完整覆盖云端应用,下一步我们将会把它的能力扩展到端侧,包括智能汽车上的自动驾驶和智能空间两大域控,以及一些权限允许的智能手机场景。

另一方面,我们也发现 RAG 有很大的优化空间,这里分享一篇 RAG 的综述 Retrieval-Augmented Generation for Large Language Models: A Survey[5],希望对大家有帮助。

05

什么是 DeepFlow

DeepFlow 是云杉网络开发的一款可观测性产品,旨在为复杂的云基础设施及云原生应用提供深度可观测性。DeepFlow 基于 eBPF 实现了应用性能指标、分布式追踪、持续性能剖析等观测信号的零侵扰Zero Code)采集,并结合智能标签SmartEncoding)技术实现了所有观测信号的全栈Full Stack)关联和高效存取。使用 DeepFlow,可以让云原生应用自动具有深度可观测性,从而消除开发者不断插桩的沉重负担,并为 DevOps/SRE 团队提供从代码到基础设施的监控及诊断能力。

GitHub 地址:https://github.com/deepflowio/deepflow

访问 DeepFlow Demo[6],体验零插桩、全覆盖、全关联的可观测性。

53AI,企业落地大模型首选服务商

产品:场景落地咨询+大模型应用平台+行业解决方案

承诺:免费POC验证,效果达标后再合作。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

添加专属顾问

回到顶部

加载中...

扫码咨询

扫码登录
登录即表示您同意《53AI网站服务协议》
服务协议

欢迎您使用【53AI 官方网站】(以下简称“本网站”或“我们”)。本《会员服务协议》(以下简称“本协议”)是您(以下简称“会员”或“用户”)与【深圳市博思协创网络科技有限公司】之间关于注册、登录及使用本网站会员服务所订立的法律协议。

在您注册或登录前,请务必审慎阅读、充分理解各条款内容,特别是免除或限制责任的条款、知识产权条款、争议解决条款等。此类条款将以加粗形式提示您注意。 当您通过微信公众号授权、手机验证码验证或其他方式成功登录本网站时,即视为您已完全理解并同意接受本协议的全部内容。

一、 定义

本网站:指由【深圳市博思协创网络科技有限公司】运营的,域名为【53ai.com】的网站及相关移动端页面。

会员服务:指本网站向注册会员提供的知识库文章查阅、内容检索及其他相关增值服务。

知识库内容:指本网站发布的包括但不限于文字、图表、数据、研究报告、行业分析等数字化内容资源。

二、 账号注册与登录

登录方式:本网站支持以下登录方式,您可根据实际情况选择:

微信公众号授权登录:您同意将您的微信OpenID信息授权给本网站,用于创建或关联会员账号。

手机验证码登录:您需提供真实有效的手机号码,并通过短信验证码完成身份验证与登录/注册。

账号安全:您的账号仅限您本人使用,禁止赠与、借用、租用、转让或售卖。因您保管不善导致的账号被盗、密码泄露等损失,由您自行承担。

实名认证:根据相关法律法规要求,我们可能要求您在特定功能下完成实名认证。如您拒绝提供,可能无法使用部分或全部服务。

未成年人保护:若您未满18周岁,请在法定监护人的陪同下阅读本协议,并在征得监护人同意后使用本服务。

三、 服务内容与规范

知识库查阅权限:会员登录后,有权按照其会员等级对应的权限范围,在线浏览、检索本网站知识库中的相关文章及内容。

服务变更:我们有权根据业务发展需要,调整、变更或终止部分服务内容,并将以网站公告、公众号消息等方式提前通知。

禁止行为:您在使用服务时不得实施以下行为:

利用技术手段批量爬取、下载、转存知识库内容;

将知识库内容用于商业目的或未经授权地向第三方传播;

干扰本网站正常运行或侵犯其他用户合法权益;

发布违法违规信息或从事违反公序良俗的活动。

四、 知识产权声明

权利归属:本网站知识库中的排版设计、软件代码等内容的知识产权均归【公司全称】或原权利人所有,受《中华人民共和国著作权法》等法律保护。

有限许可:本网站授予会员一项非独占、不可转让、不可转授权的普通许可,仅限于个人学习、研究之目的在线查阅知识库内容。

侵权追责:未经书面许可,任何单位或个人不得以任何形式复制、转载、摘编、镜像、汇编或以其他方式使用上述内容。一经发现,我们保留追究其法律责任的权利。

五、 个人信息保护

我们重视对您个人信息的保护。关于我们如何收集、使用、存储和保护您的个人信息,请单独阅读 《隐私政策》。

您通过微信公众号授权或手机号验证所提供的信息,我们将严格按照《个人信息保护法》的规定处理,仅用于身份识别、服务提供及安全验证等必要用途。

您可以随时通过网站设置或联系客服行使查阅、更正、删除个人信息及撤回授权同意的权利。

六、 免责声明

内容准确性:知识库内容仅供参考,不构成专业建议。我们不对其完整性、准确性、时效性作任何明示或暗示的保证,您应自行判断并承担使用风险。

不可抗力:因自然灾害、政策法规变化、网络故障、第三方平台接口异常(如微信接口维护、运营商短信通道故障)等不可抗力导致的服务中断或延迟,我们不承担违约责任。

第三方链接:本网站可能包含指向第三方网站的链接,该等网站的内容和服务不受我们控制,请您自行甄别风险。

七、 违约责任

如您违反本协议约定,我们有权视情节采取警告、限制功能、暂停服务、注销账号等措施,并保留要求赔偿损失的权利。

如因您的违约行为导致我们遭受行政处罚、第三方索赔或商誉损失,您应承担全部赔偿责任(包括但不限于罚款、赔偿金、律师费、公证费等)。

八、 法律适用与争议解决

本协议的订立、执行和解释均适用中华人民共和国大陆地区法律。

因本协议产生的或与本协议有关的任何争议,双方应友好协商解决;协商不成的,任何一方均可向【公司所在地】有管辖权的人民法院提起诉讼。

九、 其他

本协议构成双方就本服务达成的完整协议,取代此前任何口头或书面约定。

本协议任一条款被认定为无效或不可执行的,不影响其他条款的效力。

我们对本协议享有最终解释权,并在法律允许的范围内保留随时修改的权利。修改后的协议一经公布即生效,继续使用服务即视为同意修订内容。


已查阅