OpenTelemetry と.NET アプリケーションの連携

.NET および.NET Framework アプリケーションにおいて、 OpenTelemetry と Instana を連携させるには、「 Instana OTLP Exporter」パッケージをご利用いただけます。 このエクスポーターは、 OpenTelemetry の計測機能と Instana のネイティブトレース機能とのシームレスな連携を実現します。 OpenTelemetry のトレースと Instana のトレースを自動的に関連付け、アプリケーション全体で統合された分散トレーシングを実現します。 本製品は、 Instana ( AutoTracing, )と連携して動作するように設計されており、 OpenTelemetry の計測機能と Instana の自動トレース機能を組み合わせることができます。

あるいは、「 OpenTelemetry 」ページに記載されている手順に従い、標準の OTLP エクスポーターを設定して、データを Instana エージェントに直接送信するようにすることもできます。 ただし、 Instana OTLP Exporter は、適切なトレースの相関関係を確実に確保できるため、.NET および.NET Framework アプリケーションでは推奨される方法です。

概要

Instana OTLP Exporterは、 OpenTelemetry 専用のエクスポーターであり、 OpenTelemetry の計測機能と Instana とのシームレスな連携を実現します。 以下の機能が提供されます。

  • トレースの自動相関 : OpenTelemetry のトレースと Instana のトレースを相関させる
  • 柔軟なプロトコル対応 : gRPC および HTTP -Protobufの両方のプロトコルに対応しています
  • 設定可能なエクスポートモード :簡易エクスポートとバッチエクスポートのいずれかを選択できます
  • 環境変数の設定 :環境変数による設定に対応しています
  • カスタムヘッダーのサポート : OTLP のエクスポートリクエストにカスタムヘッダーを追加できるようになります
  • バッチ処理オプション :最適なパフォーマンスを実現するため、バッチサイズ、キューサイズ、およびスケジューリングの遅延時間の設定に対応しています

Instana OTLP Exporter には、次のような利点があります:

  • 統合トレース : OpenTelemetry のスパンは Instana のトレースと自動的に相関付けられ、分散システムの全体像を把握できます
  • シームレスな統合 :既存の OpenTelemetry 計測機能と連携し、コードの変更は不要です
  • 完全な可視性 :すべてのトレースデータが Instana のUI上で確認でき、サービス間の適切な相関関係が把握できます
  • 柔軟な導入 :お客様のインフラに合わせて、複数のプロトコルや設定オプションに対応しています

OpenTelemetry との連携に関する詳細については、『 OpenTelemetry 』のドキュメントを参照してください。

対応するプラットフォーム

Instana OTLP Exporter は、以下の .NET プラットフォームに対応しています:

プラットフォーム サポート状況
.NET Framework 4.6.2 そしてその後 GA
.NET 標準 2.0 GA
.NET 5.0 そしてその後 GA
注:.NET Framework および.NET Standardでは、 HTTP -Protobufプロトコルのみがサポートされています。 gRPC プロトコルは、.NET、 5.0 以降のバージョンで利用可能です。

エクスポーターのインストール

「 Instana 」 OTLP、「Exporter」 NuGet パッケージは、以下のいずれかの方法でインストールできます:

  • .NET プロジェクトにインストールしてください:
    dotnet add package Instana.OpenTelemetry.Otlp.Exporter
  • プロジェクトファイルにパッケージを追加してください:
    <PackageReference Include="Instana.OpenTelemetry.Otlp.Exporter" Version="<latest-version>" />

エクスポーターの設定

アプリケーションで Instana OTLP Exporterを設定するには、 OpenTelemetryTracerProvider の設定に次のように追加します:

基本構成

using OpenTelemetry;
using OpenTelemetry.Trace;
using Instana.OpenTelemetry.Otlp.Exporter;

var tracerProvider = Sdk.CreateTracerProviderBuilder()
    .AddSource("MyApplication")
    .AddInstanaOtlpExporter()
    .Build();

オプション付きの設定

using OpenTelemetry;
using OpenTelemetry.Trace;
using Instana.OpenTelemetry.Otlp.Exporter;

var tracerProvider = Sdk.CreateTracerProviderBuilder()
    .AddSource("MyApplication")
    .AddInstanaOtlpExporter(options =>
    {
        options.Endpoint = new Uri("http://instana-agent:4317");
        options.Protocol = InstanaOtlpProtocol.Grpc;
    })
    .Build();

この InstanaOtlpExportOptions クラスには、以下の設定プロパティが用意されています:

プロパティー タイプ Default 説明
Endpoint Uri http://localhost:4317 (.NET 5+)

http://localhost:4318/v1/traces (.NET Framework または .NET Standard)
OTLP のエンドポイント URL。 Instana エージェントのURL( URL )に置き換えて localhost ください。 設定されていない場合は、環境変数またはデフォルト値が使用されます。
Protocol InstanaOtlpProtocol Grpc (.NET 5+)

HttpProtobuf (.NET Framework または .NET Standard)
使用するプロトコル: Grpc または HttpProtobuf。 設定されていない場合は、環境変数またはデフォルト値が使用されます。
Headers IDictionary<string, string> 空の辞書 エクスポートリクエストに含めるカスタムヘッダー。
TimeoutMilliseconds int 10000 エクスポートリクエストのタイムアウト(ミリ秒単位)。
ExportProcessorType InstanaExportProcessorType Batch エクスポート・プロセッサのタイプ: Simple または Batch
MaxQueueSize int 2048 バッチ処理の最大キューサイズ。
MaxExportBatchSize int 512 バッチ処理の最大バッチサイズ。
ScheduledDelayMilliseconds int 5000 バッチエクスポート間の遅延(ミリ秒単位)。
注: プロパティ Endpoint を設定する際は、 Instana エージェントのホスト名またはIPアドレスに置き換えてください localhost 。 たとえば、.NET 5+ を使用 http://instana-agent:4317 する場合は ` gRPC, ` を、.NET Framework または http://instana-agent:4318/v1/traces.NET Standard を使用する場合は ` HTTP -Protobuf` を指定します。

プロトコル・オプション

この InstanaOtlpProtocol 列挙型は、以下の値を提供します:

  • Grpc: gRPC プロトコルを使用する(.NET 5.0 以降で利用可能)
  • HttpProtobuf: Protobufエンコーディングを使用した HTTP を使用する(すべてのプラットフォームで利用可能)
注:.NET Framework および.NET Standardでは、が指定されていても Grpc 、エクスポート機能は自動的にを使用 HttpProtobuf します。

エクスポート処理タイプの種類

この InstanaExportProcessorType 列挙型は、以下の値を提供します:

  • Simple: エクスポートは完了次第、直ちに実行されます
  • Batch: 定期的にバッチ処理を行い、それらをエクスポートします(本番環境での利用を推奨)

環境変数による設定

Instana OTLP Exporter は、環境変数による設定をサポートしています:

環境変数 説明
INSTANA_EXPORTER_OTLP_ENDPOINT OTLP のエンドポイント URL http://instana-agent:4317
INSTANA_EXPORTER_OTLP_PROTOCOL 使用するプロトコル: grpc または http/protobuf grpc
注: 環境変数は、コード内で対応するオプションが明示的に設定されていない場合にのみ適用されます。 明示的に設定されたオプションは、環境変数よりも優先されます。

例:環境変数の使用

  1. アプリケーションを起動する前に、環境変数を設定してください:

    • Windows (PowerShell):

      $env:INSTANA_EXPORTER_OTLP_ENDPOINT = "http://instana-agent:4317"
      $env:INSTANA_EXPORTER_OTLP_PROTOCOL = "grpc"
    • Linux/macOS:

      export INSTANA_EXPORTER_OTLP_ENDPOINT=http://instana-agent:4317
      export INSTANA_EXPORTER_OTLP_PROTOCOL=grpc
  2. 明示的なオプションを指定せずにエクスポーターを設定する:

    var tracerProvider = Sdk.CreateTracerProviderBuilder()
        .AddSource("MyApplication")
        .AddInstanaOtlpExporter()
        .Build();