libbpfとCO-REを中心に、C、Go、Rustの短く実行可能な例で学ぶ、ステップ形式のeBPFチュートリアル。
aliyun/coolbpf
eBPFプログラムのコンパイルとロード向けにlibbpfをラップするCライブラリ兼プラットフォーム。リモートコンパイルとカーネルバージョン別のバックポートに対応します。
- スター
- 292
- フォーク
- 44
- 未解決の Issue
- 5
- 最終コミット
- 8 時間前
これは何?
coolbpfはlibbpfの主要な機能をラップし、開発者がより少ない準備でカーネルトレースや操作のプログラムを作成できるようにします。BPF関数呼び出し用のラッパーを備えたローカルコンパイルサービスに加え、bpf.cソースファイルを受け取ってbpf.soオブジェクトを返すリモートコンパイルサービスも提供します。アプリケーション側でそのオブジェクトをロードできるため、コンパイル環境を用意する必要はありません。
また、カーネルモジュールを使って、新しいカーネルのBPF機能を古いカーネルにバックポートします。たとえば、3.10カーネルでのBPFサポートや、perfバッファーをリングバッファーに置き換える機能があります。BTFを自動生成し、Python、Go、C、Rust向けのバインディングも提供します。libcoolbpfのビルドにはelfutils-develとgccが必要で、eBPFツールにはさらにclangとllvmが必要です。
リポジトリには、コードを変更せずにSSL/TLSトラフィックとプロセスのアクティビティを取得する、LLMエージェント向けのeBPFベースの可観測性ツールAgentSightも含まれます。また、XDPプログラム向けに追加のkfuncを提供するeNetSTLなどのカーネルモジュールも含まれています。
主な機能
- 01BPF関数呼び出し用のラッパーを備えたローカルコンパイルサービス。
- 02ローカルでロードできるbpf.soを返すリモートコンパイルサービス。
- 033.10カーネルでのBPF対応や、perfバッファーをリングバッファーに置き換える機能など、カーネルモジュールによるバックポート。
- 04BTFの自動生成。
- 05Python、Go、C、Rust向けの言語バインディング。
- 06AgentSightはコードを変更せず、eBPFを使ってLLMエージェントのトラフィックとプロセスを観測します。
ユースケース
- ローカルのコンパイルツールチェーンを管理せずにeBPFトレースツールを構築する。
- カーネルモジュールによるバックポートを通じて、古いカーネルでBPFプログラムを実行する。
- Linux上でAIエージェントのネットワークトラフィックや子プロセスのアクティビティを観測する。
クイックスタート
- 1
ビルド依存パッケージ(elfutils-devel、gcc)をインストールする
- 2
プロジェクトのルートディレクトリから libcoolbpf をインストールする
./install.sh - 3
プロジェクトのルートディレクトリから syscall のサンプルをビルドする
mkdir -p build && cd build && cmake -DBUILD_EXAMPLE=on .. && make
使う前に知っておきたいこと
- eBPF ツールのビルドには、gcc と elfutils に加えて clang と llvm が必要です。
- カーネルバージョンのバックポートなど一部の機能では、カーネルモジュールの読み込みが必要なため、root 権限が必要です。
- README には、記載されている依存関係以外に、ライセンスや安定性に関する明示的な注意事項はありません。
収録されている特集
トピック
よくある質問
- coolbpf とは?
- eBPFプログラムのコンパイルとロード向けにlibbpfをラップするCライブラリ兼プラットフォーム。リモートコンパイルとカーネルバージョン別のバックポートに対応します。 coolbpfはlibbpfの主要な機能をラップし、開発者がより少ない準備でカーネルトレースや操作のプログラムを作成できるようにします。BPF関数呼び出し用のラッパーを備えたローカルコンパイルサービスに加え、bpf.cソースファイルを受け取ってbpf.soオブジェクトを返すリモートコンパイルサービスも提供します。アプリケーション側でそのオブジェクトをロードできるため、コンパイル環境を用意する必要はありません。
- coolbpf は無料で使えますか?ライセンスは?
- coolbpf は MIT ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
- coolbpf は今もメンテナンスされていますか?
- 活発にメンテナンス中。coolbpf の最終コミットは 2026年11月7日 です。
- coolbpf は何に使えますか?
- ローカルのコンパイルツールチェーンを管理せずにeBPFトレースツールを構築する。 カーネルモジュールによるバックポートを通じて、古いカーネルでBPFプログラムを実行する。 Linux上でAIエージェントのネットワークトラフィックや子プロセスのアクティビティを観測する。
- coolbpf のインストール方法は?
- ビルド依存パッケージ(elfutils-devel、gcc)をインストールする プロジェクトのルートディレクトリから libcoolbpf をインストールする: ./install.sh プロジェクトのルートディレクトリから syscall のサンプルをビルドする: mkdir -p build && cd build && cmake -DBUILD_EXAMPLE=on .. && make
- coolbpf はどこで入手できますか?
- ソースコードとインストール手順は GitHub にあります:https://github.com/aliyun/coolbpf
概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。
関連プロジェクト
既存のLinux eBPFツールチェーン、API、プログラムをWindowsカーネル上で実行できる、Windows向けeBPFランタイム。
eBPFを基盤とする、Linuxのネットワークトラフィックを監視・解析するためのTUI。
eBPFでカーネルとユーザー空間のイベントを低オーバーヘッドでトレースする、Linux向けの高水準トレーシング言語・ツール。
KubernetesクラスターやLinuxホストのシステムデータを収集・調査するため、eBPFプログラムをOCIイメージのGadgetとして配布するツールキット。
Kubernetesクラスター向けのeBPFベースCNI。IDベースのL3〜L7ポリシーやkube-proxyの置き換えに対応し、ネットワーク、セキュリティ、可観測性を提供します。