OpenTelemetry Go アプリケーション向けの統合
エージェントベースのセットアップではデフォルトの OTLP エクスポーターを、サーバーレス環境では Instana Go OpenTelemetry エクスポーターを使用することで、 Go アプリケーション向けに OpenTelemetry と Instana を連携させることができます。
OpenTelemetry との統合における主な方法は、 OpenTelemetry によって監視されているアプリケーションのデフォルトの OTLP エクスポーターを設定し、そのデータを Instana エージェントに送信するようにすることです。
詳細については、「 OpenTelemetry 」のページをご覧ください。
サーバーレス OpenTelemetry エクスポーター
モジュール ` github.com/instana/go-otel-exporter ` は、 OpenTelemetry のスパンを変換して Instana バックエンドに送信する ` OpenTelemetry ` エクスポーターを提供します。
Instana Go OpenTelemetry のエクスポーターは、主に AWS Lambda や AWS Fargate などのサーバーレス環境での使用を想定して設計されています。 Instana すでに、ホストエージェントを通じて、 SaaS およびセルフホスト型ソリューション向けの OpenTelemetry をサポートしています。 ただし、 Go アプリケーションがエージェントが存在しないサーバーレス環境で実行されている場合は、サーバーレス版 OpenTelemetry エクスポーターを使用することをお勧めします。
エクスポーターを使用するには、モジュールをプロジェクトにインストールし、 instana.New() を使用してエクスポーターの新規インスタンスを作成し、それをトレーサー・プロバイダーに追加します。
このエクスポーターは、アプリケーションに指定する必要がある2つの Instana 環境変数を想定しています:
INSTANA_AGENT_KEYINSTANA_ENDPOINT_URL
エクスポーターの完全な使用例を以下に示します。
package main
import (
"context"
"time"
instana "github.com/instana/go-otel-exporter"
"go.opentelemetry.io/otel"
sdktrace "go.opentelemetry.io/otel/sdk/trace"
"go.opentelemetry.io/otel/trace"
)
// This example application demonstrates how to use the Instana OTel Exporter.
// Make sure to provide the required environment variables before run the application:
// * INSTANA_ENDPOINT_URL
// * INSTANA_AGENT_KEY
func main() {
ch := make(chan bool)
// Acquire an instance of the Instana OTel Exporter
exporter := instana.New()
// Setup and bootstrap the tracer provider
tracerProvider := sdktrace.NewTracerProvider(
sdktrace.WithBatcher(exporter),
)
otel.SetTracerProvider(tracerProvider)
ctx := context.Background()
// Instrument something with OTel
tracer := otel.Tracer("my-traced-tech")
_, span := tracer.Start(ctx, "my_span", trace.WithSpanKind(trace.SpanKindServer))
// This simulates the time that a span takes to be completed
time.Sleep(time.Millisecond * 400)
span.End()
<-ch
}
OpenTelemetry によって監視されているアプリケーションが実行されると、 Instana エクスポーターは、 OpenTelemetry のスパンを Instana のスパンに変換し、それらをバックエンドのエンドポイントに送信します。
OpenTelemetry のトレース可視化機能は、通常の Instana のトレーススパンと同様に、 Instana のUIに表示されます。