.NET 用 Azure Monitor Exporter クライアント ライブラリ - バージョン 1.0.0

OpenTelemetry 仕様に従って Azure Monitorテレメトリ データを送信する OpenTelemetry .NET エクスポーター。

作業の開始

前提条件

パッケージをインストールする

最新バージョン: Nuget

NuGet を使用して Azure Monitor Exporter for OpenTelemetry .NET をインストールします。

dotnet add package Azure.Monitor.OpenTelemetry.Exporter

夜間ビルド

夜間ビルドは、このリポジトリの 開発フィードから入手できます。 これらはサポートなしで提供され、運用環境のワークロードを対象としたものではありません。

エクスポーターを追加する

次の例では、 を OpenTelemetry 構成に追加 AzureMonitorExporter する方法を示します。

  • トレース

    Sdk.CreateTracerProviderBuilder()
        .AddAzureMonitorTraceExporter(o => o.ConnectionString = "InstrumentationKey=00000000-0000-0000-0000-000000000000")
        .Build();
    

    完全な例については、「 TraceDemo.cs」を参照してください。

  • メトリック

    Sdk.CreateMeterProviderBuilder()
        .AddAzureMonitorMetricExporter(o => o.ConnectionString = "InstrumentationKey=00000000-0000-0000-0000-000000000000")
        .Build();
    

    完全な例については、「 MetricDemo.cs」を参照してください。

  • ログ

    LoggerFactory.Create(builder =>
    {
        builder.AddOpenTelemetry(options =>
        {
            options.AddAzureMonitorLogExporter(o => o.ConnectionString = "InstrumentationKey=00000000-0000-0000-0000-000000000000");
        });
    });
    

    完全な例については、「 LogDemo.cs」を参照してください。

クライアントを認証する

Azure Active Directory (AAD) 認証は、Azure Monitor エクスポーターで使用できるオプションの機能です。 これは、対応する Azure サービスを使用して Azure SDK クライアントを認証するためのサポートを提供する Azure Identity ライブラリを使用して簡単に行うことができます。

AAD 認証を有効にするには、2 つのオプションがあります。 両方が設定されている場合は、AzureMonitorExporterOptions が優先されることに注意してください。

  1. Credential に設定します AzureMonitorExporterOptions

    var credential = new DefaultAzureCredential();
    
    Sdk.CreateTracerProviderBuilder()
        .AddAzureMonitorTraceExporter(o =>
        {
            o.ConnectionString = "InstrumentationKey=00000000-0000-0000-0000-000000000000";
            o.Credential = credential;
        })
        .Build();
    
  2. AddAzureMonitorExporter メソッドに を指定します Credential

    var credential = new DefaultAzureCredential();
    
    Sdk.CreateTracerProviderBuilder()
        .AddAzureMonitorTraceExporter(o => o.ConnectionString = "InstrumentationKey=00000000-0000-0000-0000-000000000000", credential)
        .Build();
    

主要な概念

.NET の主な概念には、次のようなものがあります。

  • .NET 分散トレースの概要: 分散トレースは、エンジニアがアプリケーション内の障害とパフォーマンスの問題 (特に複数のマシンまたはプロセスに分散している可能性がある問題) をローカライズするのに役立つ診断手法です。

  • .NET でのログ記録の概要: .NET では、さまざまな組み込みおよびサードパーティのログ プロバイダーと連携するログ API がサポートされています。

Azure Monitor の主な概念には、次のようなものがあります。

  • Azure Monitor で使用される IP アドレス: このエクスポーターは、HTTPS を使用して構成された Azure Monitor リソースにトレースを送信します。 監視しているアプリまたはインフラストラクチャがファイアウォールの背後でホストされているとき、場合によっては、IP アドレスを把握しておく必要があります。

OpenTelemetry の主な概念は次のとおりです。

  • OpenTelemetry: OpenTelemetry は、ソフトウェアのパフォーマンスと動作を理解するために分析のためにテレメトリ データ (メトリック、ログ、トレース) を収集およびエクスポートするために使用される一連のライブラリです。

  • インストルメンテーション: OpenTelemetry API を任意のアプリケーションから直接呼び出す機能は、インストルメンテーションによって容易になります。 別のライブラリに対して OpenTelemetry の可観測性を有効にするライブラリをインストルメンテーション ライブラリと呼びます。

  • トレース信号: トレースは分散トレースを参照します。 スパン間のエッジが親子関係として定義されているスパンの有向非循環グラフ (DAG) と考えることができます。

  • サンプリング: サンプリングは、収集してバックエンドに送信されるトレースのサンプルの数を減らすことで、OpenTelemetry によって導入されるノイズとオーバーヘッドを制御するメカニズムです。

  • メトリック シグナル: OpenTelemetry では、定義済みの集計と一連の属性 (ディメンション) を使用して、未加工の測定値またはメトリックを記録できます。

  • ログシグナル: イベントの記録。 通常、レコードには、イベントが発生した日時を示すタイムスタンプと、何が起こったか、どこで発生したかを説明するその他のデータが含まれます。

OpenTelemetry プロジェクトの詳細については、「 OpenTelemetry の仕様」を参照してください。

完全なデモについては、 Program.cs を参照してください。

トラブルシューティング

Azure Monitor エクスポーターでは、独自の内部ログのために EventSource を使用します。 "OpenTelemetry-AzureMonitor-Exporter" という名前のソースにオプトインすることによって、エクスポーター ログをすべての EventListener に使用できます。

OpenTelemetry には、内部ログを収集するための独自の診断機能も用意されています。 この例については、こちらのデモ プロジェクトを参照 してください

次のステップ

Azure SDK の詳細については、こちらの Web サイトを参照してください

共同作成

コントリビューション プロセスの詳細については、「 CONTRIBUTING.md 」を参照してください。