可观测性
介绍 ftrace是Function Tracer的意思,最开始主要用于记录内核函数运行轨迹;随着功能的逐渐增加,演变成一个跟踪框架。 ftrace的运行不需要额外的程序,它内置在内核中,通过debugfs文件系统和用户交互。当然也有一些用户态程序方便用户交互...
介绍 kprobe是一种动态调试机制,能够动态地中断内核处理流程并无中断地收集调试和性能信息,可以在内核的绝大多数指定函数中动态插入探测点来收集所需的调试状态信息而基本不影响内核原有的执行流程,kprobe不用修改内核源码,是指令集的探测技术。 有三种方式来达...
介绍 eBPF 是从 BPF(Berkeley Packet Filter)技术扩展而来,最初是为了实现快速捕获和过滤符合特定规则的网络数据包,后来这个思路受到欢迎,使得bpf不再局限于网络,成为了一项令人兴奋的新技术,它使内核编程变得灵活、安全且可供开发人员...
介绍 kprobe event与基于追踪点的事件有点类似,它是基于kprobe。它可以使用kprobe探测任何函数(除了NOKPROBE_SYMBOL标记的黑名单函数之外)。 同样它需要内核编译的时候配置才能启用该功能,配置项为CONFIG_KPROBE_EV...
介绍 uprobe是User-Level Dynamic Tracing的简称,相对于内核态的kprobe而言,它是用于跟踪用户态程序的,使用上和kprobe类似。 使用前先检测一下内核的配置,确保CONFIG_UPROBE_EVENTS使能。 # cat /...
介绍 USDT全称是Userland Statically Defined Tracing用户态静态定义追踪。 USDT类似内核态的tracepoint,是静态打桩埋点方式。 USDT在很多开源软件,如MySQL、PostgreSQL、Ruby、Python ...
序言 tracing分为两种实现方案: 静态追踪,即静态探针。 动态追踪,动态探针。 静态追踪包括内核态的tracepoint、用户态的USTD;动态追踪有内核态kprobe、kretprobe、ftrace, 用户态的uprobe、uretprobe。 kp...