次の方法で共有


メトリック API の比較

新しいメトリック インストルメンテーションを .NET アプリまたはライブラリに追加するときは、さまざまな API から選択できます。 この記事は、オプションを理解するのに役立ちます。

.NET API

System.Diagnostics.Metrics

System.Diagnostics.Metrics API は、最新のクロスプラットフォーム API であり、OpenTelemetry プロジェクトと密接に連携して設計されました。 以下で説明する古い API のいずれかを使用する特定の理由がない場合は、System.Diagnostics.Metrics が新しい作業に適した既定の選択肢です。 これは、.NET 6+ を対象とすることで利用できます。または、.NET System.Diagnostics.DiagnosticsSource 6.0+ NuGet パッケージに参照を追加すると、以前の .NET Core アプリと .NET Framework アプリで利用できます。 この API は、幅広い互換性を目的とするだけではなく、以前の API にはない、次のような多くのものもサポートしています。

  • ヒストグラムとパーセンタイル
  • 多次元メトリック
  • 厳密に型指定された高パフォーマンス リスナー API
  • 複数の同時リスナー
  • 未集計の測定へのリスナー アクセス

この API は、OpenTelemetry と、プラグ可能なベンダー統合ライブラリの拡張エコシステムで適切に動作するように設計されていますが、アプリケーションでは、.NET の組み込みリスナー API を直接使用することもできます。 このオプションを使用すると、外部ライブラリの依存関係を取得せずに、カスタム メトリック ツールを作成できます。

PerformanceCounter

System.Diagnostics.PerformanceCounter API は、最も古い .NET メトリック API です。 これらは、Windows でのみサポートされ、Windows OS のパフォーマンス カウンター テクノロジにマネージド ラッパーを提供します。 サポートされているすべてのバージョンの .NET で使用できます。

これらの API は、主に互換性を目的に提供されます。 .NET チームは、バグ修正を除いて、これ以上の改善は見込みにくい安定した領域であると考えています。 プロジェクトが Windows のみで、Windows のパフォーマンス カウンター ツールの使用を希望する場合を除き、これらの API は新しい開発プロジェクトには推奨されません。

詳細については、「.NET Framework のパフォーマンス カウンター」を参照してください。

EventCounters

EventCounters は、クロスプラットフォーム メトリック エクスペリエンスをサポートする最初の .NET API でした。 この API は .NET Core 3.1 以降を対象とする場合に利用できます。また、小さなサブセットは、.NET Framework 4.7.1 以降で利用できます。 これらの API は、完全にサポートされており、主要な .NET ライブラリによって現在も使用されていますが、新しい System.Diagnostics.Metrics API よりも機能は少なくなっています。 EventCounters の場合、変化と平均の比率を報告できますが、ヒストグラムとパーセンタイルはサポートされていません。 また、多次元メトリックもサポートされていません。 カスタム ツールは、EventListener API を使用して実行できますが、厳密に型指定されていないため、集計値へアクセスできるのみであり、同時に複数のリスナーを使用する場合には制限があります。 EventCounters は、Visual StudioApplication Insightsdotnet-countersdotnet-monitor によって直接サポートされています。 サードパーティ製のツールのサポートについては、ベンダーまたはプロジェクトのドキュメントを参照して、利用可否を確認してください。

.NET チームは、今後、この API に新たな投資を行うことを想定していませんが、PerformanceCounters と同様に、現在および将来のすべてのユーザーに対して、API のサポートは継続されます。

サードパーティ API

AppDynamicsApplication InsightsDataDogDynaTraceNewRelic など、ほとんどのアプリケーション パフォーマンス監視 (APM) ベンダーには、そのインストルメンテーション ライブラリの一部として、メトリック API が含まれています。 また、PrometheusAppMetrics も、一般的な .NET OSS プロジェクトです。 これらのプロジェクトの詳細については、さまざまなプロジェクトの Web サイトを参照してください。