1、首届中国首届中国eBPFeBPF研讨会研讨会框架开发经验分享杨润青华为Linux Tracing System浅析&首届中国首届中国eBPFeBPF研讨会研讨会Linux Tracing System浅析“Kprobe,Tracepoint,Linux Auditing subsystem(auditd),SystemTap,LTTng,perf,trace-cmd,eBPF,bpftrace,BCC“这些专业词语是什么意思?它们之间有什么关系?每种tracing技术的优缺点是什么?为什么eBPF会从中脱颖而出,近年来得到广泛关注?首届中国首届中国eBPFeBPF研讨会研讨会*Figure i
2、nspired by https:/ 框架:负责对接数据源,采集解析发送数据,并对用户态提供接口前端工具/库:对接Tracing框架,直接与用户交互,负责采集配置和数据分析Linux Tracing System浅析首届中国首届中国eBPFeBPF研讨会研讨会*Figure inspired by https:/ Tracing System浅析#trace-cmdrecord-esched_process_exec#trace-cmdreportps-184478000154243.947402:sched_process_exec:filename=/usr/bin/pspid=18447
3、8old_pid=184478grep-184479002154243.947596:sched_process_exec:filename=/usr/bin/egreppid=184479old_pid=184479grep-184480003154243.947681:sched_process_exec:filename=/usr/bin/greppid=184480old_pid=184480awk-184481006154243.947783:sched_process_exec:filename=/usr/bin/awkpid=184481old_pid=184481grep-18
4、4479005154243.948385:sched_process_exec:filename=/usr/bin/greppid=184479old_pid=184479cat-184482003154244.970658:sched_process_exec:filename=/usr/bin/catpid=184482old_pid=184482使用前端工具trace-cmd,通过tracefs 框架,对接数据源tracepoint,实现进程exec行为的数据采集和分析工作首届中国首届中国eBPFeBPF研讨会研讨会*Figure inspired by https:/ 框架:负责对接数
5、据源,采集解析发送数据,并对用户态提供接口前端工具/库:对接Tracing框架,直接与用户交互,负责采集配置和数据分析Linux Tracing System浅析首届中国首届中国eBPFeBPF研讨会研讨会Linux Tracing System 发展历程1999年,LTT(Linux Trace Toolkit)发布(没有被引入内核)2004年4月,Linux Auditing subsystem(auditd)被引入内核2.6.6-rc1通过修改内核代码,添加工具专用的数据源Linux Auditing Subsystem通过在syscall和文件操作等内核源代码上插入自定义的hook函数
6、(通常以audit_开头)来实现syscall和文件行为的监控内核源码:2.6.6-rc1首届中国首届中国eBPFeBPF研讨会研讨会Linux Tracing System 发展历程1999年,LTT(Linux Trace Toolkit)发布2004年4月,Linux Auditing subsystem(auditd)被引入内核2.6.6-rc1通过修改内核代码,添加工具专用的数据源Tracing框架和数据源解耦,数据源由专用演进为通用2005年4月,动态探针技术 Kprobe被引入内核(v2.6.11.7)2008年10月,静态探针技术 Tracepoint 被引入内核(v2.6.2