嘉宾 | 刘晗 整理 | 郑远程
出品 | CSDN云原生
2022年5月10日,在CSDN云原生系列在线峰会第4期“Apache SkyWalking峰会”上,Tetrate工程师、Apache SkyWalking PMC成员刘晗分享了SkyWalking原生eBPF探针的应用实践。
戳观看刘晗分享视频
Tetrate刘晗透彻解析eBPF与可观测性的联系
从上往下看,最上面部分代表的是使用案例:
用eBPF进行一些网络上的优化
对安全进行监控、处理
进行可观测性领域建设
对于User Space:
eBPF技术有很多项目,比如bcc、cilium
当开发eBPF程序时,它有很多不同语言的框架,比如最常见的Golang、 C++、Rust
对于Kernel:
当eBPF程序嵌入到Linux内核过程中,同时可以对用户态程序进行监控,也可以对内核的一些运行过程进行监控处理
举例来说,现在有两个微服务进程,a服务调用b服务,在调动过程中会涉及一些网络通信问题,在进程内部无论如何处理,它最终都会通过syscall进行调用系统函数,比如调用sendmsg发送消息,内核接收到来自业务进程的请求就会进行相关的处理,最终到达一些硬件部分,不管是读取文件还是网络或者其他操作都会涉及到内核。
eBPF程序可以把它理解为是一个基于事件驱动的程序回调。
比如进行调用系统syscall时,可以嵌入eBPF程序,进行相关处理。
进行网络请求时,可以嵌入eBPF程序,感知到这个程序并进行网络请求。
进行自定义程序处理、网卡及其网卡涉及到的相关操作时,同样可以嵌入eBPF程序进行处理。
比如有一个进程,它准备执行一个系统函数,此时内核就会检测到这个函数是否有eBPF程序