オブザーバビリティの世界へようこそ。
「コードを一行も触らずに、システムの心拍数を可視化する」。かつては夢物語だったこの魔法が、今、Grafana Beylaという強力な武器によって現実のものとなりました。
今日は、アプリケーションのソースコードに一切手を加えることなく、eBPF(Extended Berkeley Packet Filter)というカーネルの深淵に触れる技術を使って、HTTPやgRPCのリクエストを自動で射抜く方法を伝授します。
準備はいいですか?「計測のためのコード追加」という、あの面倒で非生産的な作業から卒業しましょう。
—
1. なぜ「Beyla」なのか?:オブザーバビリティのパラダイムシフト
従来の監視ツールは、SDKをコードに埋め込む必要がありました。「ライブラリのバージョンアップで動かなくなった」「計測コードがビジネスロジックを汚染している」……そんな悩みに心当たりはありませんか?
Grafana Beylaは違います。
eBPF技術を使い、OSカーネルレベルでネットワークパケットを「盗み見る」ことで、アプリケーションが何をしているかを自動的に理解します。
- REDメソッドの自動抽出: Request(リクエスト数)、Error(エラー率)、Duration(レイテンシ)が勝手に集まる。
- ゼロコード: コンテナを立ち上げるだけで観測開始。
- 低オーバーヘッド: カーネル空間で処理するため、アプリ本体への影響は極小。
—
2. インストールとセットアップ:最小構成で「魔法」を体験する
今回はDocker環境で、サクッとHTTPサーバーを観測してみましょう。
ステップ1:Beylaの構成ファイル(config.yml)
Beylaは設定ファイルで「何を拾うか」を定義します。まずはシンプルに、ポート8080で動くサービスを監視する設定を作成します。
config.yml
executables:
- exe_path: /app/my-server # 監視対象のバイナリ名
open_ports:
- 8080 # このポートのHTTP/gRPCを追跡する
prometheus_export:
port: 8989 # Beylaがメトリクスを公開するポート
ステップ2:Dockerでのデプロイ
ここが肝です。Beylaはカーネルにフックするため、権限が必要です。
docker-compose.yml
services:
my-app:
image: my-web-app:latest
ports:
- “8080:8080”
beyla:
image: grafana/beyla:latest
pid: “service:my-app” # アプリと同じPIDネームスペースで動かすのがコツ
cap_add:
- SYS_ADMIN # eBPFのロードに必須
volumes:
- ./config.yml:/config.yml
command: [“/beyla”, “–config=/config.yml”]
—
3. 「見える」瞬間:Grafanaでの可視化
BeylaはPrometheus形式でメトリクスを吐き出します。Grafanaを立ち上げ、データソースにBeylaの公開ポート(8989)を指定してください。
ダッシュボードで以下のクエリを投げるだけで、美しいグラフが浮かび上がります。
- リクエスト数: `rate(http_request_total[1m])`
- レイテンシ(P99): `histogram_quantile(0.99, sum(rate(http_request_duration_seconds_bucket[1m])) by (le))`
これだけで、開発者が数時間かけて実装するはずだったREDメトリクスが、完全に自動で描画されます。感動的だと思いませんか?
—
4. 現場で震えるほど役立つ「極限の知見」
最後に、ベテランの視点から「ここだけは押さえておけ」というポイントを伝授します。
1. PID指定の罠: K8s環境では `pid: “host”` ではなく、サイドカー構成やDaemonSetで適切なPodをターゲットにするのが鉄則です。ネットワーク名前空間の分離に注意してください。
2. eBPFはカーネルバージョンを選ぶ: 古すぎるLinuxカーネルでは動きません。最低でもKernel 5.8以上、できれば5.15以降を推奨します。運用前に環境の `uname -r` を確認する習慣を。
3. ノイズとの戦い: 全ての通信を拾うとメトリクスが爆発します。`config.yml` の `filters` セクションを使い、ヘルスチェック(`/healthz` など)は除外設定にしておくのが、賢いアーキテクトの作法です。
—
まとめ:あなたはもう「書かなくていい」
これからのオブザーバビリティは「書く」のではなく「発見する」時代です。Beylaを導入すれば、あなたはアプリケーションの論理的な構造に集中し、監視の苦労から解放されます。
「監視のためのコード」はもう捨てましょう。今日から、システムの本質的な振る舞いだけを静かに見守る、そんなスマートなエンジニアリングを始めてみませんか?
もし詰まったら、いつでも聞いてください。あなたのオブザーバビリティジャーニーを全力でサポートしますよ。