习惯性的类图展示了BCCValidator类的接口,使得开发者在实现时有清晰的方向。 结论 BCC 校验是实现数据完整性检测的一种有效方式,尽管它相对简单,但在许多应用场景中却能够提供足够的安全性。通过本文的示例和分析,你可以掌握如何使用 Python 实现 BCC 校验,并可视化校验结果。 在实际开发中,除了 BCC 校验,还可以考虑...
BCC的代码分为python和C两部分,C代码通常运行在内核态,用于打点采集系统调用的信息,然后将结果返回给python代码;也可以用于对特定lib的函数进行打点探测。 BCC的核心为C代码,需要了解系统调用接口,作为信息采集点;以及BCC本身提供的C代码,提供了获取当前时间,进程PID,map数据结构,输出等功能。推荐TRACEPOINT_PROBE进行...
.trace_print()是bcc的程序,读取trace_pipe中数据并输出。 这个就是使用python接口实现bcc工具的最简单程序。 可以将kprobe__sys_open改成其他的系统调用例如:kprobe__sys_sync、kprobe__sys_close等等,你想监控的系统调用。是不是很方便? 2.trace_fields() 使用trace_fields可以格式化输出,其结果来自bpf_trace_p...
最好采用BPF_PERF_OUTPUT()接口,后续会介绍。 return 0; kprobe__sys_clone函数的出参类型为int,必须返回一个值。 .trace_print(): 一个bcc例程,从trace_pipe中读取,并打印输出。 Lesson 2. sys_sync() 尝试将跟踪的系统调用改为sys_sync(),当执行sync命令时会输出"sys_sync() called" #!/usr/bin/p...
bcc Python Developer Tutorial 这个教程主要目的是展示如何使用python来进行bcc工具开发和编程。教程主要分为两个部分:可观察性和网络。 文中的代码片段均都来自于bcc:代码片段的licenses见bcc中具体文件。 也可参考bcc开发者手册reference_guide.md以及end-users工具教程:tutorial.md。此外bcc还开放有lua接口。
本节介绍使用Python接口进行BCC的开发,包括两部分:可观测性和网络。 可观测性 Lesson 1. Hello World 执行examples/hello_world.py,并在另一个会话中执行一些命令(如ls),此时会打印"Hello,World!". # ./examples/hello_world.pybash-13364 [002] d... 24573433.052937: : Hello, World!bash-13364 [003] ...
bcc开发脚本有两种方式,一种是基于python接口,另一种是基于ruby接口,我们看的是基于python接口的。 本篇的前置条件是系统中已经安装好了bcc。 1.Hello world 输入代码如下: #!/usr/bin/env python from bcc import BPF BPF(text='int kprobe__sys_clone(void *ctx) { bpf_trace_printk("Hello, World!\\...
我在此假设大多数人并不编写自己的 BPF 程序,而是使用别人写好的。在 GitHub 上的BPF Compiler Collection (bcc)项目中,我已发布许多开源代码。bcc 为 BPF 开发提供了不同的前端支持,包括 Python 和 Lua,并且是目前最活跃的 BPF 工具项目。 7 个有用的 bcc/BPF 新工具...
我在此假设大多数人并不编写自己的 BPF 程序,而是使用别人写好的。在 GitHub 上的BPF Compiler Collection (bcc)项目中,我已发布许多开源代码。bcc 为 BPF 开发提供了不同的前端支持,包括 Python 和 Lua,并且是目前最活跃的 BPF 工具项目。 7 个有用的 bcc/BPF 新工具...
BCC是eBPF的一个工具集,是对eBPF提取数据的上层封装,BCC工具编程形式是Python中嵌套BPF程序。Python代码可以为用户提供友好使用eBPF的上层接口,也可以用于数据处理。BPF程序会注入内核,提取数据。当BPF程序运行时,通过LLVM将BPF程序编译得到BPF指令集的elf文件,从elf文件中解析出可以注入内核的部分,使用bpf_load_program方...