什么是革命性技术eBPF?为什么可观测性领域都得用它

这篇具有很好参考价值的文章主要介绍了什么是革命性技术eBPF?为什么可观测性领域都得用它。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

如果有一种技术可以监控和采集任何应用信息,支持任何语言,并且应用完全无感知,零侵入,想想是不是很激动,那么这个技术是什么呢?就是eBPF,它应该是最近一两年非常热门的技术名词,我相信你或多或少都看到过,但可能不知道它能做什么,今天我们来讲讲这个革命性的技术eBPF,以及它在可观测领域的应用eBPF是什么?

eBPF 是什么?

eBPF(extended Berkeley Packet Filter)是在 Linux 内核中运行的虚拟机技术,2014 年它首次出现在 Linux 内核中,并经过这几年迭代,目前已经成熟。它提供了一种灵活并且安全的方式来扩展内核功能。eBPF 最初是为网络数据包过滤而设计的,但现在已经扩展到其它领域,如安全监控、性能分析和系统跟踪等。

eBPF允许用户在不修改内核源代码的情况下,通过加载和执行自定义的eBPF程序来扩展内核功能。这些eBPF程序通过Hook 机制与内核交互,它们可以对进入和离开内核的事件进行过滤和处理,以实现网络数据包的监控、性能统计和安全审计等功能。

如下图,eBPF可以在文件写入和读取进行拦截处理,网络的发送和接受进行拦截处理

这段代码是一个 eBPF 过滤器程序,用于在网络数据包通过时打印源 IP 地址和目标 IP 地址。它使用 bpf_printk 函数来输出信息到内核日志。

#include <linux/bpf.h>
#include <linux/if_ether.h>
#include <linux/ip.h>
#include <linux/in.h>

SEC("filter")
int print_ip(struct __sk_buff *skb) {
    struct ethhdr *eth = bpf_hdr_pointer(skb);
    struct iphdr *ip = (struct iphdr *)(eth + 1);

    if (eth->h_proto == htons(ETH_P_IP)) {
        bpf_printk("Source IP: %u.%u.%u.%u\n",
                   ip->saddr & 0xFF,
                   (ip->saddr >> 8) & 0xFF,
                   (ip->saddr >> 16) & 0xFF,
                   (ip->saddr >> 24) & 0xFF);

        bpf_printk("Destination IP: %u.%u.%u.%u\n",
                   ip->daddr & 0xFF,
                   (ip->daddr >> 8) & 0xFF,
                   (ip->daddr >> 16) & 0xFF,
                   (ip->daddr >> 24) & 0xFF);
    }

    return XDP_PASS;
}

eBPF 能做什么?

动态编程内核以实现高效的网络、可观测性、追踪和安全性。

1.可观测性

eBPF 程序是事件驱动的,当内核或用户程序经过一个 eBPF Hook 时,对应 Hook 点上加载的 eBPF 程序就会被执行。从而可以采集相关信息,而且它是完全无侵入,对应用系统来说完全无感知

想想以前我们用的监控系统CatSkyWalking或多或少都有侵入,只是代码多少的问题,有了它完全不用关心,而且它能对所有运行在 linux 上面应用进行监控,比如
rediskafka

2.安全监控和审计

eBPF可以用于实时监控系统的安全事件和异常行为。它可以检测恶意软件、网络攻击、未经授权的访问等安全威胁,并触发警报或采取相应的防御措施。

3.自定义功能扩展

如数据包处理、协议解析、数据转换等。

eBPF 在可观测性方案的应用

可观测性,也是近几年非常热门的话题,因为目前互联网公司应用大部分都基于 k8s 部署,而 k8s 的网络模型比较复杂,如果系统出现异常,无法快速定位问题,所以需要有一个的平台可以去做系统故障定位、性能优化、以及监控等工作,而可观测性提供了更深入的洞察力和更好的理解,使得在复杂的分布式系统中构建、部署和维护应用程序更加可靠和高效
如何做好一个可观测性系统,那么eBPF技术是绕不开的,下面看下eBPF是如何抓取应用数据

eBPF 是如何抓取应用数据的

可能有人会问eBPF是怎么抓取数据,因为进入系统内核都是二进制数据,如何知晓是kafka或者mongodb的数据,答案是基于通信协议,每个中间件都是属于自身的通信协议,比如 redis、mysql、mongodb等,以下为mongodb的原始通信报文,这个报文每几位代表什么含义,在mongodb官方文档都有定义

引用于:郑志聪老师在 2023 云原生+可观测性广州 Meeup 分享

mongodb 消息解析

由于作者本人的电脑为MAC M系列芯片,对eBPF不怎么兼容,所以我们下面只讲原理,如下图是mongodb通信协议,基于这个协议,可以知晓消息内容、操作类型、响应码等。

struct MsgHeader {
    int32   messageLength; // total message size, including this
    int32   requestID;     // identifier for this message
    int32   responseTo;    // requestID from the original request
                           //   (used in responses from the database)
    int32   opCode;        // message type
}

https://www.mongodb.com/docs/manual/reference/mongodb-wire-protocol/

基于这个消息协议,eBPF就可以完成数据解析和抽取

基于 eBPF 构建的可观测性平台

目前很多公司都基于 eBPF技术在构建自己的可观测性平台,下面介绍一些相关产品

阿里云应用监控 eBPF 版

它是一套针对 Kubernetes 集群开发的一站式可观测性产品,它能做到:

  • 代码无侵入:阿里云应用监控 eBPF 版通过旁路技术,不需要对代码进行埋点即可获取到丰富的网络性能数据。
  • 语言无关:阿里云应用监控 eBPF 版在内核层进行网络协议解析,支持任意语言,任意框架。
  • 高性能:阿里云应用监控 eBPF 版基于 eBPF 技术,能以极低的消耗获取丰富的网络性能数据。
  • 资源关联:阿里云应用监控 eBPF 版通过网络拓扑,资源拓扑展示相关资源的关联。
  • 数据多样:阿里云应用监控 eBPF 版支持可观测的各种类型数据(监控指标、链路、日志和事件)。
  • 整体性:阿里云应用监控 eBPF 版通过控制台的场景设计,关联起架构感知拓扑、Prometheus 监控、告警配置。

部分效果图

dashboard

拓扑图

https://help.aliyun.com/zh/arms/application-monitoring-ebpf/product-overview/what-is-alibaba-cloud-application-monitoring-ebpf-version

开源监控系统 deepFlow

DeepFlow 开源项目旨在为复杂的云基础设施及云原生应用提供深度可观测性。DeepFlow 基于 eBPF 实现了零侵扰(Zero Code)的指标、分布式追踪、调用日志、函数剖析数据采集,并结合智能标签(SmartEncoding)技术实现了所有观测数据的全栈(Full Stack)关联和高效存取,核心特性如下:

  • 任意 Service 的全景图:利用 eBPF 零侵扰绘制生产环境的全景图。
  • 任意 Request 的分布式追踪:基于 eBPF 的零侵扰分布式追踪能力,支持任意语言的应用程序,并完整覆盖网关、服务网格、数据库、消息队列、DNS、网卡等各类基础设施。
  • 任意 Function 的持续性能剖析:以低于 1% 的开销零侵扰采集生产环境进程的性能剖析数据。
  • 无缝集成流行的可观测性技术栈:可作为 Prometheus、OpenTelemetry、SkyWalking、Pyroscope 的存储后端。
  • 存储性能 10x ClickHouse:基于 SmartEncoding 机制,向所有观测信号注入标准化的、预编码的元标签,相比 ClickHouse 的 String 或 LowCard 方案均可将存储开销降低 10x。

部分效果图

redis 监控

请求日志

分布式链路追踪

sql 监控

https://github.com/deepflowio/deepflow/blob/main/README-CN.md

SkyWalking

众多周知SkyWalking基于agent方式采集可观测性数据,比如java用java agent相关api编写,其它语言则编写对应语言的agent,这种方式可行,但是对技术人员要求较高。如果使用eBPF就不存在这种问题,目前看到SkyWalking也有往eBPF方向发展

部分效果图

引用于吴晟老师 SkyWalking2023 峰会演讲 PPT

Cilium

Cilium 是一个开源项目,为 Kubernetes 集群和其它容器编排平台等云原生环境提供网络、安全和可观测性,它主要使用的技术就是eBPF

https://cilium.io/

总结

以上我们介绍了eBPF是什么,以及它有哪些优势,同时讲解了它在可观测性领域的一些应用,希望对你有所帮助。


扫描下面的二维码关注我们的微信公众帐号,在微信公众帐号中回复◉加群◉即可加入到我们的技术讨论群里面共同学习。文章来源地址https://www.toymoban.com/news/detail-760847.html

到了这里,关于什么是革命性技术eBPF?为什么可观测性领域都得用它的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 无人机巡检技术革命性变革光伏电站运维管理

    在中国广袤的大地上,光伏电站如雨后春笋般崛起,晶体硅组件板在阳光下熠熠生辉,为人们带来了源源不断的绿色能源。然而,随着光伏产业的迅猛发展,电站运维管理面临着前所未有的挑战。而无人机巡检技术的引入,为光伏电站的运维管理带来了革命性的变革。 相比传

    2024年04月14日
    浏览(55)
  • 视频生成可以无限长?谷歌VideoPoet大模型上线,网友:革命性技术

    蒙娜丽莎打哈欠,小鸡学会举铁……谷歌VideoPoet大模型表现很亮眼。 2023 年底,科技公司都在冲击生成式 AI 的最后一个关卡 —— 视频生成。 本周二,谷歌提出的视频生成大模型上线,立刻获得了人们的关注。这款名为 VideoPoet 的大语言模型,被人们认为是革命性的 zero-sho

    2024年02月02日
    浏览(43)
  • 掌握C++20的革命性特性:Concepts

    C++20 引入了 Concepts,这是一种用于限制类和函数模板的模板类型和非类型参数的命名要求。Concepts 是作为编译时评估的谓词,用于验证传递给模板的模板参数。Concepts 的主要目的是使模板相关的编译器错误更易于人类阅读。 我们都遇到过这样的情况:当为类或函数模板提供错

    2024年01月20日
    浏览(55)
  • ChatGPT-4 Alpha:OpenAI的革命性升级

    近日,OpenAI公司发布了备受瞩目的GPT-4 Alpha版本,这是一次革命性的升级。以下将为您详细介绍这一重大突破,并解释为何它引起了广泛关注。 GPT-4 Alpha是OpenAI公司最新推出的人工智能语言模型,它基于GPT-4.0架构开发,拥有更强大的处理能力和更出色的表现。该模型经过大规

    2024年02月20日
    浏览(44)
  • ChatGPT:人工智能语言模型的革命性进步

    🌷🍁 博主 libin9iOak带您 Go to New World.✨🍁 🦄 个人主页——libin9iOak的博客🎐 🐳 《面试题大全》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 🌊 《IDEA开发秘籍》学会IDEA常用操作,工作效率翻倍~💐 🪁🍁 希望本文能够给您带来一定的帮助🌸文章粗浅,敬

    2024年02月16日
    浏览(49)
  • Transformer模型简介:一种革命性的深度学习模型

    Transformer模型是一种革命性的深度学习模型,最初用于自然语言处理任务,如机器翻译和语言建模。与传统的序列模型相比,如循环神经网络(RNN)和卷积神经网络(CNN),Transformer模型采用一种全新的方式来处理序列数据,即通过注意力机制来学习序列中的关系。 在传统的序列模

    2024年02月15日
    浏览(53)
  • 机器学习与人工智能:一场革命性的变革

    1956年8月,在美国汉诺斯小镇宁静的达特茅斯学院中,约翰·麦卡锡(John McCarthy)、马文·闵斯基(MarvinMinsky,人工智能与认知学专家)、克劳德·香农(Claude Shannon,信息论的创始人)、艾伦·纽厄尔(AllenNewell,计算机科学家)、赫伯特·西蒙(Herbert Simon,诺贝尔经济学奖得

    2024年02月04日
    浏览(47)
  • 加速软件开发和交付的革命性方法-DevOps

    “ 随着信息技术的快速发展,现代软件开发和交付已经经历了巨大的变革。DevOps(Development和Operations的结合)已经成为这一变革的关键推动力,让开发团队和运维团队之间的界限变得模糊,以加速软件的开发、测试和部署过程。本文将介绍DevOps的核心概念、原则和优势,以及

    2024年02月06日
    浏览(49)
  • 语言模型ChatGPT,为什么能引领各行各业的AI技术革命

    为什么ChatGPT这样一个语言模型的发展能引发所有行业的AI技术革命呢? 答案就在于它能理解我们的自然语言, 并能将我们的语言转换成计算机能够完全理解的特征。 ChatGPT之所以能引领技术革命,关键在于它能理解我们的自然语言,并能将我们的语言转换成计算机能够完全理

    2023年04月16日
    浏览(59)
  • GPT-3.5:ChatGPT的奇妙之处和革命性进步

    🌷🍁 博主 libin9iOak带您 Go to New World.✨🍁 🦄 个人主页——libin9iOak的博客🎐 🐳 《面试题大全》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 🌊 《IDEA开发秘籍》学会IDEA常用操作,工作效率翻倍~💐 🪁🍁 希望本文能够给您带来一定的帮助🌸文章粗浅,敬

    2024年02月15日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包