Go コンパイル時計装

ビルド時にコードを変更せずに Go アプリケーションを計装します。

Go のコンパイル時計装は、ビルド中にアプリケーションを自動的に計装し、ソースコードを変更することなく、多くの人気のあるライブラリやフレームワークからテレメトリーをキャプチャします。 Go のビルドプロセスにフックし、アプリケーションのコンパイル時に計装を注入する仕組みのため、生成されるバイナリにはランタイムエージェントを必要とせずに計装コードが含まれます。

仕組み

otelc ツールは通常の go build 呼び出しをラップします。 ビルド中に以下の処理を行います。

  1. Go ツールチェーンの -toolexec メカニズムを使用して、各パッケージのコンパイルをインターセプトします。
  2. テレメトリーフックを配置すべき場所を記述した計装ルールのセットに対して、パッケージと関数をマッチングします。
  3. マッチした関数に軽量なフックポイントを注入し、OpenTelemetry の計装コードとリンクします。

計装はコンパイル時にバイナリに組み込まれるため、自分が制御できないサードパーティの依存関係もカバーでき、ランタイムのアタッチや起動ステップが不要です。

使用するタイミング

コンパイル時計装は、Go 向けのゼロコードオプションの1つです。 Auto SDK を補完するものであり、eBPF ベースの計装は OBI から利用できます。 コンパイル時計装は、ビルドパイプラインは変更できてもソースコードは変更できない場合、サードパーティライブラリ内部の計装が必要な場合、または特権エージェントをアプリケーションと一緒に実行できない場合に適しています。


Getting started

Capture telemetry from a Go application without writing any instrumentation code.

Supported libraries

Libraries and frameworks instrumented out of the box.

設定

otelc ツールと、計装されたアプリケーションが生成するテレメトリーを設定します。

Troubleshooting

Diagnose issues with Go compile-time instrumentation.