.NETメトリック

.NETメトリックは、アプリケーションのヘルスに関する監視およびアラートを目的として、一定の時間間隔で収集されたアプリケーションの数値測定です。通常、これらのメトリックは監視システムに配信されます。ODP.NET設定では、データベースへのODP.NETハード接続の数、アクティブな接続の数、空き接続の数などの接続統計をメトリックで監視できます。

バージョン23.3.2以降、ODP.NET Coreおよび管理対象ODP.NETは.NETメトリックをサポートしています。ODP.NET Coreは、ODP.NET Coreが動作保証されているすべてのオペレーティング・システムの.NET (Core)のメトリックをサポートしています。.NETメトリックを使用するには、ODP.NETプロジェクトにNuGetパッケージ(System.Diagnostics.DiagnosticSource 6.0.0以上)が含まれている必要があります。このパッケージにはSystem.Diagnostics.Metrics APIが含まれ、同じプロセス内で使用するために、リッチ・データ・ペイロード・ロギング用にODP.NETコードをインスツルメントできます。

メトリック・インスツルメンテーションの場合、開発者はODP.NET Coreにメトリック名Oracle.ManagedDataAccess.Coreを、管理対象ODP.NETにOracle.ManagedDataAccessを関連付けて、MeterListenerメーター名プロパティなどのODP.NET測定をサブスクライブおよびモニターします。

メトリック収集の場合、ODP.NETメトリックは.NET OpenTelelmetryと緊密に統合されています。つまり、ODP.NETメトリックは、GrafanaやPrometheusなど、OpenTelemetryと統合されたリッチな拡張ツールセットによって公開および分析できます。開発者は、dotnet-countersなどの一般的な.NET SDKツールを使用することもできます。たとえば、すべてのODP.NET Coreプロセスのすべてのメトリックをライブ監視するには、次のコマンドを実行します。

dotnet-counters monitor "Oracle.ManagedDataAccess.Core"

監視する特定のプロセスおよびメトリックを指定できます:

dotnet-counters monitor -n <process name> <metrics source name>

プロセスは識別子によって識別できます:

dotnet-counters monitor <metrics source name> -p <process id>

ODP.NETパフォーマンス・カウンタとは異なり、メトリックを明示的に有効にする必要はありません。ODP.NETメトリック・カウンタ・インスタンスは、アプリケーションの起動後に常にインメモリーで使用できます。ただし、これらのメトリック値はアクティブなサブスクライバに対してのみ公開されます。

ノート:

.NETメトリックをWindows Performance Monitorで使用することはできません。

ODP.NETは、次のような複数の粒度レベルで接続メトリックを柔軟に収集および区別できます:

  • AppDomainレベル

  • 接続文字列またはプール・マネージャ・レベル

  • データベース・インスタンス・レベル

ODP.NETでは、次のメトリック測定およびレベルがサポートされます。

表3-44 メトリック・カウンタおよびレベル

メトリック・カウンタ 説明 サポートされるレベル

HardConnects

データベースで確立されたセッション数

すべて

HardDisconnects

データベースから切断されたセッション数

すべて

SoftConnects

ソフト接続の数

すべて

SoftDisconnects

ソフト切断の数

すべて

NumberOfActiveConnectionPools

接続が少なくとも1つあるプールであるアクティブな接続プールの数

すべて

NumberOfInactiveConnectionPools

接続がゼロのプールである非アクティブ接続プール数

すべて

NumberOfActiveConnections

使用中の接続数(チェックアウトされた接続とも呼ばれる)

すべて

NumberOfFreeConnections

接続プールで使用可能な接続数(キューされた接続とも呼ばれる)

すべて

NumberOfPooledConnections

プールされた接続の数。これは、チェックアウトされた接続とキューされた接続の合計です

すべて

NumberOfNonPooledConnections

プールされていないアクティブな接続の数

すべて

NumberOfReclaimedConnections

暗黙的にガベージ・コレクションに入った接続数

すべて

NumberOfActiveHardConnections

オープン・データベース接続の数

すべて

NumberOfActiveSoftConnections

プールからチェックアウトされた接続の数

すべて

NumberOfActiveConnectionPoolGroups

少なくとも1つの接続を持つプール・グループの数(一意の接続文字列の数)

AppDomainレベルのみ

NumberOfInactiveConnectionPoolGroups

接続がゼロのプール・グループの数(一意の接続文字列の数)

AppDomainレベルのみ

.NETは、人間が簡単に読めない長いメトリック・レベルの識別子を使用します。アプリケーション名、プロセスIDおよび接続文字列を含む文字列で構成されます。メトリック・レベルの識別を容易にするために、ODP.NET開発者は、OraclePoolNameCollection PoolNamesプロパティの接続文字列識別子名をカスタマイズできます。管理対象ODP.NET開発者は、.NET構成ファイルの<connectionPools>セクションを使用するオプションもあります。開発者は、一意の接続文字列ごとに異なるプール名を構成できます。

Oracle Real Application Cluster (RAC)インスタンスの各クラスタでは、クラスタ内のすべてのインスタンスが同じ接続文字列を持つため、同じプール名構成が使用されます。