.NET 用 Azure Monitor Exporter クライアント ライブラリ - バージョン 1.0.0
OpenTelemetry 仕様に従って Azure Monitor にテレメトリ データを送信する OpenTelemetry .NET エクスポーター。
作業の開始
前提条件
- Azure サブスクリプション: Azure Monitor Exporter for OpenTelemetry .NET などの Azure サービスを使用するには、サブスクリプションが必要です。 既存の Azure アカウントをお持ちでない場合は、無料試用版にサインアップするか、アカウントの作成時に Visual Studio サブスクリプション特典を使用できます。
- Azure アプリケーション Insights 接続文字列: テレメトリ データを監視サービスに送信するには、Azure アプリケーション Insights からの接続文字列が必要です。 Azure リソースの作成に慣れていない場合は、「 Application Insights リソースを作成 して 接続文字列をコピーする」のステップバイステップ ガイドに従ってください。
パッケージをインストールする
最新バージョン:
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 が優先されることに注意してください。
を
Credential
に設定しますAzureMonitorExporterOptions
。var credential = new DefaultAzureCredential(); Sdk.CreateTracerProviderBuilder() .AddAzureMonitorTraceExporter(o => { o.ConnectionString = "InstrumentationKey=00000000-0000-0000-0000-000000000000"; o.Credential = credential; }) .Build();
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 」を参照してください。