基于eBPF技术的云原生可观测实践

news/2024/11/6 6:54:07/

**

基于eBPF技术的云原生可观测实践

**
eBPF技术是Linux内核3.15版本中引入的全新设计,自从2014年发布以来,一直都备受瞩目。在过去几年中,基于eBPF技术的实践和工程落地层出不穷,出现了爆发式的增长。2015年微软、Google、Facebook、Netflix 和 Isovalent 也共同宣布在 Linux 基金会下成立了一个新的 eBPF 基金会,以帮助支持该技术的发展,并促进正在发展的许多基于 eBPF 的开源项目之间的合作。
eBPF技术已然成为基础设施世界中最有影响力的技术之一。

| 什么是eBPF?

我们知道操作系统分为用户空间和内核空间,内核是操作系统的核心,它独立于常规的应用程序,可以访问受保护的内存空间,也有访问底层硬件设备的所有权限。为了保证内核的安全,现在的操作系统一般都强制用户进程不能直接操作内核。而应用程序通常是在用户空间中运行,每当这些应用程序想要以任何方式与硬件交互时,都必须向内核发出请求来获得访问权限,同时,内核还负责调度各个应用程序,以确保多个进程同时运行。
eBPF的强大与神奇之处,就是在内核和用户空间之间架起了“桥梁”,改变了操作系统和基础设施服务的设计方式,将原先的BPF发展成一个指令集更复杂、应用范围更广的“内核虚拟机”,以提供更多的可编程性、可扩展性和敏捷性。
eBPF程序能在操作系统的内核中运行,并在不更改内核源代码的情况下对内核进行检测。为了避免注入的代码导致内核崩溃,eBPF会对注入的代码进行严格检查,拒绝不合格的代码的注入,保证eBPF程序运行的稳定性和安全性。

| 可观测性体系构建

在云原生可观测体系构建中,业界通常将指标(Metrics)、链路(Tracing)和日志(Logging)称为可观测性的“三大支柱”。而在具体实践中,这三个监测维度与其说是“支柱”,更像是三条相互交织、相互关联的“线”,在各自侧重自身领域能力建设的基础上又要实现互联——以“链路”能力串起所有应用系统的依赖拓扑关系,补充“指标”能力实时掌控链路上各个节点的健康状况,兼以“日志”能力实现深度的业务分析与错误定位。
在这里插入图片描述

针对可观测性体系所需要的这三个方面能力的构建,行业内分别都有比较成熟的开源项目可以直接使用,比如云原生运行指标数据的采集与展示基本采用Prometheus + Grafana来构建,链路追踪有Skywalking、Zipkin等APM工具,也有基于交换机镜像通过网络旁路进行采集分析的NPM类产品,而日志体系使用的比较多的有ELK。

在这里插入图片描述

针对这些产品的组合,我们也可以比较快速地搭建一个可观测性系统,但是从业界实践来看,这样组装的系统普遍存在几类痛点。

  • 缺乏全局性的系统和网络拓扑关系。不管是采用APM还是NPM来绘制链路,受限于采集方式,无法完整覆盖所有应用系统、主机、负载均衡器等维度的网络调用链路拓扑,无法构建全面的链路拓扑。
  • 数据采集方式不具备普适性。Skywalking与Zipkin等APM类产品需要采用SDK集成或Agent等方式,随着应用部署运行,采集特定埋点的指标数据,这两类方式都都要依赖应用方进行适配改造,埋点的数据采集又局限于特定语言和技术栈。而在云原生环境中,多语言应用、不同通信协议共存的情况下,存在适配工作量极大、应用感知明显的问题;而NPM由于是通过交换机镜像采集网络流量,一方面随着云原生应用在虚拟网络上运行,流量不经过物理交换机,单从物理交换机采集流量并不能有效支持上云业务的监测分析需要,另一方面,未将抓取的网络信息与云资源信息结合,无法呈现应用容器间、网络关键组件的网络拓扑。

| 基于eBPF技术的可观测实践探索

如上文所诉,eBPF技术在用户空间和内核空间之间架起了“桥梁”,通过将eBPF程序加载到trace points、内核、及用户空间应用,使得我们可以从内核空间获取应用程序的运行时行为(runtime behavior)和系统事件(system event)。应用端与系统端的这种观测能力结合,能在排查系统性能问题时提供更强大的能力和独特的信息。
在这里插入图片描述

同时,相比于操作系统提供的静态计数器(counters、gauges),eBPF能在内核中收集和聚合自定义metric,并能从不同数据源来生成可观测数据,这既扩展了可观测性的深度,也显著减少了整体系统开销,因为通过eBPF可选择只收集必要的数据,这也极大地提高了在大规模生产环境中构建可观测性能力的可行性。
相比于传统监测数据采集与分析技术,基于eBPF技术的可观测系统有着显著的优势。

  • 零侵入式,eBPF采集端程序与应用系统运行在不同的进程中,不会对应用系统运行带来影响;
  • 语言无关性,无论待监测的应用系统采用的是什么开发语言或技术框架,都可实现覆盖,构建全面的链路拓扑和可观测图谱;
  • 多环境适配,不管应用系统运行的基础环境是采用Kubernetes或Open Shift等云原生平台、虚拟机集群、物理机、还是科创环境,都可实现适配,采用一套采集方式来实现多环境覆盖

http://www.ppmy.cn/news/698674.html

相关文章

【每日一题】2490. 回环句

【每日一题】2490. 回环句 2490. 回环句题目描述解题思路 2490. 回环句 题目描述 句子 是由单个空格分隔的一组单词,且不含前导或尾随空格。 例如,“Hello World”、“HELLO”、“hello world hello world” 都是符合要求的句子。 单词 仅 由大写和小…

C#文件安全管理解析

在实际的项目开发中,我们经常需要使用到文件的I/O操作,主要包含对文件的增改删查等操作,这些基本的操作我们都是很熟悉,但是较少的人去考虑文件的安全和操作的管理等方面,例如文件的访问权限管理,文件数据的…

Hello算法笔记之回溯

一、回溯算法介绍:一种通过穷举来解决问题的方法,它的核心思想是从一个初始状态出发,暴力搜索所有可能的解决方案,当遇到正确的解则将其记录,直到找到解或者尝试了所有可能的选择都无法找到解为止。 通常采用「深度优…

卷积神经网络--猫狗系列之构建模型【ResNet50】

在上一期:卷积神经网络--猫狗系列之下载、导入数据集,如果测试成功就说明对数据的预处理工作已经完成,接下来就是构建模型阶段了: 据说建立一个神经网络模型比较简单,只要了解了各层的含义、不同层之间参数的传递等等&…

浩泽净水机——以核心科技赢得信赖

近年来,家用净水机市场在国内取得快速的发展,越来越多的家用净水机已经逐步走入寻常百姓家。但是,由于净水行业在国内起步比较晚,消费者对家用净水机的认识还是有所欠缺,所以消费者在选购时需多方面考虑。 首先&#x…

High Performance Visual Tracking with Siamese Region Proposal Network(SiamRPN)

High Performance Visual Tracking with Siamese Region Proposal Network(SiamRPN,CVPR2018) 主要贡献: 提出了SiamRPN跟踪器,首次将端到端的离线训练方式,应用到了大尺度的图像跟踪任务上在在线跟踪过程…

乱象丛生or一路光明,看SSD市场发展现状

乱象丛生or一路光明,看SSD市场发展现状 近年来,SSD固态硬盘的涌现无疑是主存储技术上的重大突破,它对传统的机械存储是具有颠覆性及破坏性,尤其体现在家用消费领域里。SSD任凭着革命性的多任务处理能力,卓越的读写性能…

C++中的vector使用详解及重要部分底层实现

本篇文章会对vector的语法使用进行详解。同时,还会对重要难点部分的底层实现进行讲解。其中有vector的迭代器失效和深拷贝问题。希望本篇文章的内容会对你有所帮助。 目录 一、vector 简单概述 1、1 C语言中数组的不便 1、2 C中的动态数组容器vector 二、vector的常…