使用eBPF Tracepoint和Kprobe跟踪内核活动
简介 eBPF老生常谈了,这里就不多介绍了,我们直接来看看Tracepoint和Kprobe。 Kprobe是Linux内核中的一个功能,可以实现无感知、动态切入任何内核活动中,并且收集调试和性能信息,一个很典型的使用案例就是切入内核的某个函数中并且获取传入参数和返回值。Kprobe共有两个类型,一个是Kprobe,一个是Kretprobe,他们都被统称为probes,前者用于切入内核函数并且获取传入参数,后者用于切入内核函数并且获取返回值。早期的Kprobe是以内核模块的形式开发,错误的操作会直接导致模块panic,并且可能会影响内核运行的稳定性,而如今,这些代码可以简化成eBPF代码,经过内核的检查才会装入BPF虚拟机中运行,也会限制能够访问的内存、内核函数,这虽然造成了一定的使用不便,但是大幅提高了安全性,也降低了使用难度。 ...