基于eBPF技术的开源项目Kindling之探针架构介绍

简介: Kindling开源项目是一款基于eBPF技术的云原生可观测性项目。本文将主要介绍Kindling探针的具体架构设计。

Kindling探针的架构设计理念

    Kindling架构设计中有一个很重要的理念:关注点分离(Separation of Concerns)。eBPF技术或者内核模块是一种内核技术,需要的背景知识是C语言和操作系统知识。而可观测开发者关注的是要输出什么样的指标,同时因为平时使用Go、Java这一类语言较多,对C也比较生疏,所以我们的设计是基于两层的分层领域。下层是eBPF的开发能力,主要是为事件透出服务;上层是可观测性需求开发,主要是为数据分析和指标产生服务,同时可以方便扩展可观测场景化需求。

1.png

kindling领域分层图

另外一个重要的理念是:不重复造轮子我们目标是把eBPF的能力以简单的方式透出给用户使用所以kindling的设计是以falcosecurity-libs为基础的目前这个开源项目承担的主要职责就是系统调用的事件透出对于可观测方面的能力需要进一步扩展但是它有一个优势是它会将原始内核数据和cgroup信息进行关联方便后续将数据关联到k8s相关的resources, 同时falcosecurity-libs也对原始数据做了预处理比如将网络数据进行更丰富的关联让用户能够直接拿到某个对fd操作的网络事件属于哪个四元组的信息所以我们复用了这部分能力。但falcosecurity-libs本身并不支持kprobe、uprobe等能力kindling目前已经对其扩展kprobe能力,后续也会持续不断的扩展uprobe等能力同时还会集成其他开源工具的数据能力

一般来说eBPF探针主要由两部分程序组成内核态程序用作采集数据以及用户态程序用作分析数据。但基于以上两个理念,我们的架构并不是传统的两部分我们基于关注点分离理念为了让cloud-native领域的开发者能够更方便的使用eBPF的能力把原来falcosecurity-libsC/C++用户态程序拆分成了一个Go程序和一个C/C++程序让用户能更关注自己擅长的领域 

2.png

传统ebpf程序结构

Kindling探针架构介绍

Kindling探针整体包含部分用户态Go程序用户态C/C++程序内核态drivers程序用户态Go程序满足的是上层可观测需求的开发其他两个部分实现的是内核需求的开发这样不同领域的人可以用自己擅长的语言开发自己关注的内容同时探针也有较好的松耦合特性。Kindling具体组件描述如下

3.png

kingdling架构图

内核态程序drivers

为了更好的支持低版本内核的可观测能力kindling的探针使用内核模块的形式支持低版本内核所以drivers又分为eBPF probe以及内核模块。drivers主要负责采集内核事件,事件放入由直接内存映射技术创建的数据结构供用户态程序获取处理事件采集这一层后续会持续将其他开源工具集成进来比如BCC、bpftrace

用户态C/C++程序:kindling-probe

kindling-probe是一个由C/C++语言编写的程序,运行时以一个单独的container运行在pod其主要的职责是负责和内核态程序进行交互并将内核事件暴露给上层处理程序目前负责的工作主要有三个部分:

  • 负责调用bpf API加载eBPF内核态的字节码或者安装低版本内核的内核模块
  • 负责从mmap映射出来ringbuffer结构中读取内核产生的原始事件并对原始事件进行预处理,最后转换为标准事件格式发送给kindling-collector
  • 负责提供动态配置通道例如可以通过配置实现内核数据过滤减少原始数据量以及无关数据

用户态Go程序:kindling-collector

用户态Go程序是一个可扩展模块用户可以订阅自己关注的内核事件,基于自己的使用场景扩展自己的分析程序目前kindling实现的分析程序被称为kindling-collector,它在运行也是以一个单独的container运行pod其主要职责是负责获取事件并进行分析,并对数据进行label的丰富。kindling-collector部分模块集成了opentelemetry的SDK这样kindling的指标在输出时有较高的灵活性,可以输出到opentelemetry collector 、prometheus 、kindling标准版后端等多种可观测性平台目前kindling-collector订阅的事件只是probe暴露出来的部分事件主要是以系统调用以及kprobe为主具体订阅信息如下

5.png

程序间通信方式

drivers和kindling-probe程序之间通信方式

eBPF程序采用BPF MAP 数据结构通信内核模块采用mmap构造的ringbuffer进行通信是eBPF程序使用的架构模型为了兼容4.X内核BPFMAP结构使用的是BPF_MAP_TYPE_PERF_EVENT_ARRAY每个cpu都有相应的一个perf-event的map在kindling-probe层会对事件进行排序组合

4.png

ebpf probe和probe通信

kindling-probe和kindling-collector之间通信方式

这个过程使用unix domain socket,它是一种IPC方式虽然使用了socket但是由于数据不需要经过网络协议栈,所以有比较好的传输性能目前probe暴露的kindling event会进行序列化发送给unix domain socket,collector会socket中读取数据并进行反序列化然后得到标准化事件进行分析

Kindling通信标准化事件格式

正如不同微服务间的通信大多都基于一份RESTful的HTTP接口定义kindling在分层后也需要一种标准化的事件格式来屏蔽不同领域的实现细节,目前kindling设计的事件格式被称为kindling-event。Kindling-event是kindling-probe程序暴露出来的内核事件,底层eBPF程序会遵循kindling-event的标准格式暴露数据这样上层应用也能基于标准去分析事件具体的kindling event的结构如下:

6.png


对Kindling感兴趣或者在云可观测性方面有问题的小伙伴欢迎与我们联系:Kindling官网

目录
相关文章
|
2月前
|
存储 机器学习/深度学习 数据库
阿里云服务器X86/ARM/GPU/裸金属/超算五大架构技术特点、场景适配参考
在云计算技术飞速发展的当下,云计算已经渗透到各个行业,成为企业数字化转型的关键驱动力。选择合适的云服务器架构对于提升业务效率、降低成本至关重要。阿里云提供了多样化的云服务器架构选择,包括X86计算、ARM计算、GPU/FPGA/ASIC、弹性裸金属服务器以及高性能计算等。本文将深入解析这些架构的特点、优势及适用场景,以供大家了解和选择参考。
441 61
|
1月前
|
运维 监控 Cloud Native
智联招聘 × 阿里云 ACK One:云端弹性算力颠覆传统 IDC 架构,打造春招技术新范式
在 2025 年春季招聘季的激战中,智联招聘凭借阿里云 ACK One 注册集群与弹性 ACS 算力的深度融合,成功突破传统 IDC 机房的算力瓶颈,以云上弹性架构支撑千万级用户的高并发访问,实现招聘服务效率与稳定性的双重跃升。文章介绍了 ACK One+ACS 的弹性架构如何解决了春招的燃眉之急,让智联招聘的技术团队能够聚焦创新业务开发,欢迎关注。
|
1月前
|
运维 Kubernetes Cloud Native
智联招聘 × 阿里云 ACK One:云端弹性算力颠覆传统 IDC 架构,打造春招技术新范式
在 2025 年春季招聘季的激战中,智联招聘凭借阿里云 ACK One 注册集群与弹性 ACS 算力的深度融合,成功突破传统 IDC 机房的算力瓶颈,以云上弹性架构支撑千万级用户的高并发访问,实现招聘服务效率与稳定性的双重跃升。
|
2月前
|
人工智能 缓存 自然语言处理
Bolt DIY架构揭秘:从模型初始化到响应生成的技术之旅
在使用Bolt DIY或类似的AI对话应用时,你是否曾好奇过从输入提示词到获得回答的整个过程是如何运作的?当你点击发送按钮那一刻,背后究竟发生了什么?本文将揭开这一过程的神秘面纱,深入浅出地解析AI对话系统的核心技术架构。
93 5
|
1月前
|
数据采集 存储 算法
人才招聘系统开发全解析:从技术底层到商业逻辑的完整架构优雅草卓伊凡|小无|果果|阿才
人才招聘系统开发全解析:从技术底层到商业逻辑的完整架构优雅草卓伊凡|小无|果果|阿才
81 2
人才招聘系统开发全解析:从技术底层到商业逻辑的完整架构优雅草卓伊凡|小无|果果|阿才
|
2月前
|
机器学习/深度学习 人工智能 算法
大型多模态推理模型技术演进综述:从模块化架构到原生推理能力的综合分析
该研究系统梳理了大型多模态推理模型(LMRMs)的技术发展,从早期模块化架构到统一的语言中心框架,提出原生LMRMs(N-LMRMs)的前沿概念。论文划分三个技术演进阶段及一个前瞻性范式,深入探讨关键挑战与评估基准,为构建复杂动态环境中的稳健AI系统提供理论框架。未来方向聚焦全模态泛化、深度推理与智能体行为,推动跨模态融合与自主交互能力的发展。
160 13
大型多模态推理模型技术演进综述:从模块化架构到原生推理能力的综合分析
|
2月前
|
存储 人工智能 自然语言处理
为什么混合专家模型(MoE)如此高效:从架构原理到技术实现全解析
本文深入探讨了混合专家(MoE)架构在大型语言模型中的应用与技术原理。MoE通过稀疏激活机制,在保持模型高效性的同时实现参数规模的大幅扩展,已成为LLM发展的关键趋势。文章分析了MoE的核心组件,包括专家网络与路由机制,并对比了密集与稀疏MoE的特点。同时,详细介绍了Mixtral、Grok、DBRX和DeepSeek等代表性模型的技术特点及创新。MoE不仅解决了传统模型扩展成本高昂的问题,还展现出专业化与适应性强的优势,未来有望推动AI工具更广泛的应用。
234 4
为什么混合专家模型(MoE)如此高效:从架构原理到技术实现全解析
|
1月前
|
设计模式 开发者
一、HarmonyOS Next 开发者手册项目之项目架构设计
该项目是一个基于HarmonyOS Next的开发者学习手册应用,旨在帮助开发者系统学习HarmonyOS开发知识。项目采用分级学习方式,从基础到高级逐步深入讲解技术与实践案例。前四章重点介绍应用架构相关内容,助力快速掌握应用核心。 项目结构清晰,包含主入口、源代码目录、公共资源和工具等。页面导航分为多个阶段:萌新小白(基础入门)、登堂入室(进阶学习)、进阶高手(高级开发)。支持Markdown解析,使用`@luvi/lv-markdown-in`插件展示内容,并定义了多种数据结构以规范开发流程。 源码已开源,持续更新中
45 1
|
21天前
|
存储 缓存 运维
微信读书十周年,后台架构的技术演进和实践总结
微信读书经过了多年的发展,赢得了良好的用户口碑,后台系统的服务质量直接影响着用户的体验。团队多年来始终保持着“小而美”的基因,快速试错与迭代成为常态。后台团队在日常业务开发的同时,需要主动寻求更多架构上的突破,提升后台服务的可用性、扩展性,以不断适应业务与团队的变化。
44 0
|
2月前
|
存储 Cloud Native 关系型数据库
PolarDB开源:云原生数据库的架构革命
本文围绕开源核心价值、社区运营实践和技术演进路线展开。首先解读存算分离架构的三大突破,包括基于RDMA的分布式存储、计算节点扩展及存储池扩容机制,并强调与MySQL的高兼容性。其次分享阿里巴巴开源治理模式,涵盖技术决策、版本发布和贡献者成长体系,同时展示企业应用案例。最后展望技术路线图,如3.0版本的多写多读架构、智能调优引擎等特性,以及开发者生态建设举措,推荐使用PolarDB-Operator实现高效部署。
171 2

热门文章

最新文章