実行中のシステムの挙動を詳細にトレースする仕組みは、特に
eBPFに関する記事が今回以降,
- 第688回 eBPFのコンパイラーに対応したツールでさまざまな挙動を可視化する
(今回の記事) - 第690回 BCCでeBPFのコードを書いてみる
- 第692回 sysfsやbpftoolを用いたeBPFの活用
- 第694回 libbpfとclangでポータブルなBPF CO-REバイナリ作成
- 第695回 入門BPF CO-RE
eBPFとBPF Compiler Collection
改めて言うまでもなく,
第584回の
それに対して,
気をつけなければいけないのは
- Ubuntu 14.
04 LTS (ESM):3. 13から4. 4 - Ubuntu 16.
04 LTS (ESM):4. 4から4. 15 - Ubuntu 18.
04 LTS:4. 15から5. 4 - Ubuntu 20.
04 LTS:5. 4から5. 13以降 - Ubuntu 21.
04:5. 11 - Ubuntu 21.
10:5. 13
ここで
4.
eBPFを使うツールはいろいろ存在しますが,
BCCのインストール方法
Ubuntuの場合,
apt版は普通にDebianパッケージとしてインストールする方法です。シンブルな方法ではあるものの,
- Ubuntu 18.
04 LTS: 0. 5.0 - Ubuntu 20.
04 LTS: 0. 12. 0 - Ubuntu 21.
04: 0. 18. 0 - Ubuntu 21.
10: 0. 18. 0
それに対してsnap版のBCCは,
特にBCCの場合は,
apt版のインストール
apt版のパッケージ名は
- 2021年11月1日訂正
- 記事公開時には
「コンパイラーであるbpfcが含まれる」 と記述していましたが, bpfcはnetsniff-ngパッケージに含まれる, Classic BPF向けのコンパイラーでした。大変失礼いたしました。
$ sudo apt instal bpfcc-tools
各種ツールにはすべて-bpfcc
」
ちなみにDebianの場合は,CONFIG_
」/sys/
からカーネルのヘッダーファイルを取得できないためです。
snap版のインストール
snap版のパッケージ名はそのまま
$ sudo snap install bcc --devmode
現状のbccパッケージは--devmode
」snap connect
」
各種ツールにはすべてbcc.
」snap alias bcc.
」snap unalias bcc.
」
Linuxカーネルのフレーバーに注意
BCCはeBPFだけでなくツールに応じてdebugfsやkprobesなどといった,
たとえばUbuntu Cloud Imagesから提供され,CONFIG_
が有効になっていないため,
$ sudo bcc.execsnoop create_probe_event: open(/sys/kernel/debug/tracing/kprobe_events): No such file or directory Traceback (most recent call last): File "/snap/bcc/159/usr/share/bcc/tools/execsnoop", line 229, in <module> b.attach_kprobe(event=execve_fnname, fn_name="syscall__execve") File "/snap/bcc/159/usr/lib/python3/dist-packages/bcc/__init__.py", line 834, in attach_kprobe (fn_name, event)) Exception: Failed to attach BPF program b'syscall__execve' to kprobe b'sys_execve'
よってKVMフレーバーを使っている環境でどうしてもBCCを使いたい場合は,
$ sudo apt install -y linux-generic $ sudo apt remove -y --purge '~nlinux-.*kvm ~i'
2行目でKVMフレーバーを削除しているのは,Ubuntu, with Linux 5.
」
なお,
ちなみに今のところ問題になりそうなのは,