メインコンテンツへスキップ
DevOpsMar 28, 2026

ゼロ計装オブザーバビリティ:eBPFがSidecarフリートを置き換えた方法

OS
Open Soft Team

Engineering Team

67%のKubernetesチームがeBPFオブザーバビリティに切り替え

CNCF 2026年次調査によると、67%のKubernetesチームがオブザーバビリティの少なくとも1つの柱(メトリクス、トレース、またはログ)にeBPFベースのツールを使用しています——2024年の29%、2025年の41%から増加。この移行はもはや段階的ではなく、殺到です。

理由はシンプルです:従来のsidecarベースのオブザーバビリティ(Envoyプロキシ、OpenTelemetry Collectorサイドカー、Datadogエージェント)は膨大なリソースを消費し、すべてのリクエストにレイテンシを追加し、計装にはコード変更やコンテナ修正が必要でした。eBPFはカーネルからすべてを行います——アプリケーション変更はゼロです。

eBPFとは何か、なぜ重要なのか

eBPF(extended Berkeley Packet Filter)は、カーネルソースコードの変更やカーネルモジュールのロードなしに、サンドボックスプログラムをLinuxカーネル内で実行できる技術です。元々ネットワークパケットフィルタリング用に設計されたeBPFは、汎用カーネルプログラマビリティフレームワークに進化しました。

仕組み

  1. 小さなプログラムを書く——CまたはRustで(または高レベルフレームワークを使用)
  2. カーネルフックポイントにアタッチ——システムコール、ネットワークイベント、トレースポイント、関数エントリ/エグジット
  3. カーネルのeBPF検証器がプログラムの安全性を確認(無限ループなし、範囲外アクセスなし、有界実行)
  4. JITコンパイラがeBPFバイトコードをネイティブマシン命令に変換
  5. プログラムが実行——フックポイントでほぼネイティブのパフォーマンスで

オブザーバビリティにおいて、これはすべてのHTTPリクエスト、DNSルックアップ、TCP接続、ファイルシステム操作、プロセス実行を傍受できることを意味します——アプリケーションコードの修正なし、sidecarの注入なし、podの再起動なし。

// HTTPリクエストを追跡するシンプルなeBPFプログラム
SEC("kprobe/tcp_v4_connect")
int trace_connect(struct pt_regs *ctx) {
    struct sock *sk = (struct sock *)PT_REGS_PARM1(ctx);
    
    u32 pid = bpf_get_current_pid_tgid() >> 32;
    u16 dport = sk->__sk_common.skc_dport;
    u32 daddr = sk->__sk_common.skc_daddr;
    
    struct event_t event = {
        .pid = pid,
        .dport = ntohs(dport),
        .daddr = daddr,
        .timestamp = bpf_ktime_get_ns(),
    };
    
    bpf_perf_event_output(ctx, &events, BPF_F_CURRENT_CPU,
                          &event, sizeof(event));
    return 0;
}

なぜオブザーバビリティに重要なのか

従来のオブザーバビリティには計装が必要です。このアプローチには3つの根本的な問題があります:

  1. リソースオーバーヘッド——各sidecarがCPUとメモリを消費。Envoy sidecarを持つ500 podクラスターでは、sidecar自体がクラスター総リソースの30-40%を消費する可能性。
  2. カバレッジギャップ——計装したものしか観察できない。サードパーティバイナリ、カーネルレベルイベント、ネットワークインフラはブラインドスポットのまま。
  3. メンテナンス負担——すべての言語、フレームワーク、ランタイムに固有の計装ライブラリが必要。

eBPFは3つすべてを解決します:カーネルで実行(アプリケーションオーバーヘッドゼロ)、カーネルが見るすべてを見る(ギャップなし)、アプリケーションの言語やフレームワークに関係なく動作。

2026年のeBPFオブザーバビリティスタック

Cilium + Hubble:ネットワークオブザーバビリティ

CiliumはKubernetesの事実上のCNI。Hubbleは以下を提供:

  • L3/L4フロー可視性——pod間のすべてのTCP/UDP接続
  • L7プロトコルパーシング——HTTP、gRPC、Kafka、DNS、PostgreSQL(アプリ変更不要)
  • ネットワークポリシー監査——リアルタイムでトラフィックを許可/拒否するポリシーの確認
  • サービス依存関係マッピング——観察されたトラフィックパターンに基づくサービスグラフの自動生成

Pixie:アプリケーションパフォーマンスモニタリング

Pixie(CNCFサンドボックスプロジェクト)はeBPFでゼロ計装APMを提供:

  • 自動プロトコルトレーシング——HTTP/1.1、HTTP/2、gRPC、PostgreSQL、MySQL、Redis、Kafka、DNS
  • 継続的CPUプロファイリング——eBPFスタックトレースからのフレームグラフ
  • ダイナミックロギング——再デプロイなしで実行中アプリにトレースポイントを追加
  • フルボディリクエスト/レスポンスキャプチャ——実際のHTTPヘッダー、SQLクエリ、gRPCペイロードを確認

Tetragon:ランタイムセキュリティと監査

Tetragon(Isovalent/Cilium製)はeBPFベースのセキュリティオブザーバビリティツール:

  • プロセス実行追跡——すべてのexec、fork、exitイベント
  • ファイルアクセス監視——読み取り、書き込み、権限変更の追跡
  • ネットワーク接続監査——プロセスコンテキスト付きですべてのアウトバウンド接続をログ
  • セキュリティポリシー適用——リアルタイムで不審な活動をブロック

Grafana Beyla:自動計装

Grafana BeylaはeBPFベースの自動計装エージェント:

  • カーネルレベルでHTTP、gRPC、SQL、Redisリクエストを検出
  • トレースコンテキスト伝播付きのOpenTelemetryスパンを送出
  • Grafana Cloud、Tempo、Mimir、任意のOpenTelemetryバックエンドと統合

パフォーマンス:重要な数字

500 pod本番Kubernetesクラスターからの実世界ベンチマーク:

メモリ使用量比較

コンポーネントSidecarアプローチeBPFアプローチ節約
Envoy sidecar(500 pod)50 GB0(Cilium CNI)50 GB
OTel Collector sidecar(500 pod)15 GB0(Beyla DaemonSet)15 GB
Ciliumエージェント(20ノード)N/A8 GB-8 GB
Beylaエージェント(20ノード)N/A2 GB-2 GB
合計75 GB12 GB84%削減

CPUオーバーヘッド

指標SidecarアプローチeBPFアプローチ
リクエストあたりの追加レイテンシ1-5ms<0.1ms
ノードあたりのCPUオーバーヘッド8-12%<1%
テールレイテンシ影響(p99)+15-30ms<1ms

移行ガイド:SidecarからeBPFへ

フェーズ1:Sidecarと並行してeBPFツールをデプロイ(第1-2週)

  • CiliumをCNIとしてインストール
  • Hubbleをネットワークオブザーバビリティ用にデプロイ
  • BeylaをDaemonSetとしてデプロイ
  • sidecarとeBPFオブザーバビリティを並行運用

フェーズ2:検証とチューニング(第3-4週)

  • eBPFツールが同じシグナルをキャプチャすることを確認
  • Beylaのプロトコル検出を調整
  • 既存のsidecarダッシュボードをミラーリング

フェーズ3:Sidecarの段階的削除(第5-8週)

  • 非クリティカルなサービスから開始
  • データ品質の回帰を監視
  • 高度なトラフィック管理が不要なサービスからEnvoy sidecarを削除

フェーズ4:完全なeBPFスタック(第9-12週)

  • 残りのsidecarを削除
  • Tetragonをランタイムセキュリティ用にデプロイ
  • eBPF由来のシグナルにアラートを統合
  • 解放されたリソースを回収

よくある質問

eBPFオブザーバビリティはKubernetes以外のワークロードでも動作しますか?

はい。eBPFはLinuxカーネルレベルで動作するため、コンテナ、VM、ベアメタル、systemdサービスなどあらゆるワークロードで動作します。

eBPFは分散トレーシングを置き換えられますか?

多くのチームにとってはい。ただし、eBPFトレースはリクエスト/レスポンス境界に限定されます。関数内のカスタムビジネスロジックのトレースにはSDK計装が依然として必要です。

暗号化トラフィック(TLS)はどうですか?

eBPFツールはTLSライブラリ関数(OpenSSLのSSL_readやSSL_writeなど)にアタッチすることでTLSトラフィックをトレースできます。

eBPFは安全ですか?バグのあるeBPFプログラムがカーネルをクラッシュさせますか?

いいえ。eBPF検証器がロード前にすべてのプログラムをチェックします。バグのあるプログラムはロードに失敗しますが、カーネルをクラッシュさせることはありません。

eBPFは高スループットサービス(100K+リクエスト/秒)にどう対応しますか?

eBPFはカーネル内集約とサンプリングで高スループットに対応します。