1. BCC(BPF Compiler Collection)とは?
BCCは、Linuxカーネルの動的トレーシングを可能にするテクノロジー eBPF を、誰もが簡単に扱えるようにするためのツールセットです。
通常、カーネルの挙動を詳細に調べるにはカーネルモジュールの開発(C言語での高度な実装と再起動のリスク)が必要でしたが、BCCを使えばPythonやLuaといった馴染みのある言語で、安全かつリアルタイムにシステムを解析できます。
2. BCCで何ができるのか?(3つの主要機能)
BCCには大きく分けて2つの側面があります。
- 完成済みの強力なツール群: インストールしたその日から、ディスクI/Oの遅延調査、ネットワークパケットの監視、プロセス実行の追跡などが可能です。
- カスタムツール開発フレームワーク: カーネル内でのデータ収集(C言語)と、ユーザー空間での集計・表示(Python)を組み合わせて、独自のモニタリングツールを自作できます。
3. 代表的な付属ツールの紹介
BCCをインストールすると、以下のような強力なコマンドがすぐに使えます。
| ツール名 | 用途 |
|---|---|
execsnoop |
新しく実行されたプロセスをリアルタイムで表示。不審なプログラムの挙動確認に最適。 |
opensnoop |
どのプロセスが、どのファイルを開いたかを追跡。設定ファイルの読み込みエラー調査などに。 |
tcptop |
プロセスごとのネットワーク送信・受信量をリアルタイム表示。通信のボトルネックを特定。 |
biolatency |
ディスクI/Oのレイテンシをヒストグラムで可視化。ストレージの遅延を直感的に把握。 |
4. セキュリティ・運用の現場での活用シーン
- パフォーマンス解析: 「なぜかWebサーバーが遅い」といった際、カーネルレベルでシステムコールや関数呼び出しの時間を計測し、真の原因を特定します。
- セキュリティ・インシデント対応: 攻撃者が仕込んだバックドアがどのポートを開き、どのファイルにアクセスしているかを、痕跡を残さず(フックして)監視できます。
5. まとめ
BCCは、Linuxシステムのブラックボックス化を防ぐための「最強の虫眼鏡」です。オブザーバビリティ(可観測性)が重視される現代のインフラ構築において、エンジニアが習得しておくべき必須ツールの一つと言えるでしょう。
BCCは動作にカーネルヘッダーなどが必要ですが、最近ではより軽量な libbpf や bpftrace への移行も進んでいます。