Grafana Beylaとは?
Grafana Beylaは、Go、C/C++、Rust、Python、Ruby、Java、NodeJS、.NETなどで 書かれたアプリケーションオブザーバビリティを簡単に開始できる、 オープンソースのeBPFベース自動インスツルメンテーションツールです。
eBPFは、LinuxのHTTP/SおよびgRPCサービス向けに、アプリケーションコードや設定を変更することなく REDメトリクス(Rate-Error-Duration)と基本的なトレーススパンを取得するために使用されます。
Grafana Beylaの概要
Grafana Beylaは、Go、C/C++、Rust、Python、Ruby、Java(GraalVM Nativeを含む)、 NodeJS、.NETなどで書かれたHTTP/gRPCアプリケーションの自動インスツルメンテーションを 可能にするOSSプロジェクトです。これはeBPFをベースにしており、Linuxカーネルの さまざまなポイントに独自のプログラムをアタッチできます。
多くの場合、アプリケーションオブザーバビリティのためにアプリをインスツルメンテーションするには、 デプロイメントまたはパッケージに言語エージェントを追加したり、手動でトレースポイントを 追加したりしてから再デプロイする必要があります。Beylaを使用すると、ソースコードを変更することなく、 単一のコマンドですべてのサービスをインスツルメンテーションできます。
BeylaはGrafana Labsで開発が開始され、2023年に発表されました。このプロジェクトのミッションは、 eBPFを活用してユーザーがアプリケーションオブザーバビリティを迅速に開始できるようにすることです。 収集されたテレメトリデータは、Grafana Labs LGTMスタック(Loki、Grafana、Tempo、Mimir)と 相関させてフルスタックなオープンソースオブザーバビリティソリューションを提供できます。
Grafana Labsは、Grafana Beylaプロジェクトの開発を主導しており、GrafanaにBeylaのファーストクラス サポートを組み込み、Grafana Labsユーザーが必要なBeylaサポートとアプリケーションオブザーバビリティ 機能を受けられるようにすることに誇りを持っています。
Grafana Beylaを使う理由
ウェブサービスとクライアントからREDメトリクスとトレースを即座に取得。
カーネルバージョン5.8以降のあらゆるLinux環境で互換性あり。
標準のREDメトリクスとトレースをOpenTelemetry形式で、またネイティブな Prometheusメトリクスとしてエクスポートします。
OTelやPrometheus SDKでサポートされていないものも含め、すべてのプログラミング 言語バージョンと互換性があります。
Go、Java、.NET、NodeJS、Python、Ruby、Rustなど、幅広いプログラミング言語をサポート。
コード変更なしでの自動インスツルメンテーション。
従来のインスツルメンテーションライブラリと比較して、インタプリタ型言語の CPUおよびメモリ使用量を改善できる可能性があります。
Kubernetesメタデータの組み込みサポートにより、どのリソースが失敗しているかを簡単に特定できます。
Grafana BeylaはeBPF自動インスツルメンテーションでどのように機能しますか?

1
BeylaはLinux上で実行されているアプリケーションを検査し、アプリケーション内で使用されている技術を特定します。
2
アプリケーションの特性を特定した後、このツールは多数のeBPF uprobeおよびkprobeをアクティブ化します。これらは、アプリケーションが受信または送信しているHTTP/gRPCトラフィックに関する情報をキャプチャするために戦略的に配置されています。
3
uprobe/kprobeを使用して、BeylaはアプリケーションのHTTP/gRPCトラフィックに関連するイベントを生成し、それらはOpenTelemetryメトリクスおよびトレースに変換されエクスポートされます。
4
OpenTelemetryメトリクスとトレースは、Flowモードで設定されたGrafana Agentインスタンスに送信でき、そこでエンリッチされ、トレース用のGrafana Tempoやメトリクス用のGrafana MimirなどのOSSデータベースに送信されます。
5
最も簡単な開始方法は、FlowモードのGrafana AgentでBeylaを設定し、メトリクスとトレースをGrafana CloudのApplication Observabilityソリューションに送信することです。そこで、事前構築済みのダッシュボードで可視化し、他のテレメトリデータと相関させることができます。
eBPFとは?
eBPFテクノロジーは、Linuxカーネルのさまざまなポイントにプログラムをアタッチすることを可能にします。eBPFプログラムは特権モードで実行され、システムコール、ネットワークスタック、さらにはユーザー空間プログラムにプローブを挿入するなど、カーネルのさまざまな部分からランタイム情報を検査できます。
eBPFプログラムは安全です。独自の仮想マシン命令セット用にコンパイルされ、その後、各ロードされたプログラムの安全なメモリアクセスと有限な実行時間を事前検証するサンドボックス環境で実行できます。
検証後、eBPFバイナリは、効率的で高速な実行のために、ホストネイティブアーキテクチャ(x86-64、ARM64など)にJITコンパイルされます。
eBPFコードは、ユーザー空間で実行されている通常のプログラムからロードされ、カーネルとユーザー空間プログラムの両方が、eBPF仕様により提供されるリングバッファ、配列、ハッシュマップなどの通信メカニズムを介して情報を共有できます。

オープンソースを基盤に、コミュニティ主導で開発
この使いやすい自動インスツルメンテーションアプリケーションオブザーバビリティツールについて、 私たちの学びをオープンソースコミュニティと共有し、協力できることを楽しみにしています。