Tetrate刘晗:SkyWalking原生eBPF探针实战

嘉宾 | 刘晗   整理 | 郑远程

出品 | CSDN云原生

2022年5月10日,在CSDN云原生系列在线峰会第4期“Apache SkyWalking峰会”上,Tetrate工程师、Apache SkyWalking PMC成员刘晗分享了SkyWalking原生eBPF探针的应用实践。

戳观看刘晗分享视频

Tetrate刘晗透彻解析eBPF与可观测性的联系

为什么需要eBPF

eBPF可以做什么

Tetrate刘晗:SkyWalking原生eBPF探针实战_第1张图片

从上往下看,最上面部分代表的是使用案例:

  • 用eBPF进行一些网络上的优化

  • 对安全进行监控、处理

  • 进行可观测性领域建设

对于User Space:

  • eBPF技术有很多项目,比如bcc、cilium

  • 当开发eBPF程序时,它有很多不同语言的框架,比如最常见的Golang、 C++、Rust

对于Kernel:

  • 当eBPF程序嵌入到Linux内核过程中,同时可以对用户态程序进行监控,也可以对内核的一些运行过程进行监控处理

程序和内核交互方式

Tetrate刘晗:SkyWalking原生eBPF探针实战_第2张图片

举例来说,现在有两个微服务进程,a服务调用b服务,在调动过程中会涉及一些网络通信问题,在进程内部无论如何处理,它最终都会通过syscall进行调用系统函数,比如调用sendmsg发送消息,内核接收到来自业务进程的请求就会进行相关的处理,最终到达一些硬件部分,不管是读取文件还是网络或者其他操作都会涉及到内核。

eBPF程序可以把它理解为是一个基于事件驱动的程序回调。

Tetrate刘晗:SkyWalking原生eBPF探针实战_第3张图片

  • 比如进行调用系统syscall时,可以嵌入eBPF程序,进行相关处理。

  • 进行网络请求时,可以嵌入eBPF程序,感知到这个程序并进行网络请求。

  • 进行自定义程序处理、网卡及其网卡涉及到的相关操作时,同样可以嵌入eBPF程序进行处理。

eBPF程序执行

比如有一个进程,它准备执行一个系统函数,此时内核就会检测到这个函数是否有eBPF程序&#

你可能感兴趣的:(云原生,微服务,eBPF,SkyWalking,云原生在线峰会)