.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 メトリック・カウンタおよびレベル
メトリック・カウンタ | 説明 | サポートされるレベル |
---|---|---|
|
データベースで確立されたセッション数 |
すべて |
|
データベースから切断されたセッション数 |
すべて |
|
ソフト接続の数 |
すべて |
|
ソフト切断の数 |
すべて |
|
接続が少なくとも1つあるプールであるアクティブな接続プールの数 |
すべて |
|
接続がゼロのプールである非アクティブ接続プール数 |
すべて |
|
使用中の接続数(チェックアウトされた接続とも呼ばれる) |
すべて |
|
接続プールで使用可能な接続数(キューされた接続とも呼ばれる) |
すべて |
|
プールされた接続の数。これは、チェックアウトされた接続とキューされた接続の合計です |
すべて |
|
プールされていないアクティブな接続の数 |
すべて |
|
暗黙的にガベージ・コレクションに入った接続数 |
すべて |
|
オープン・データベース接続の数 |
すべて |
|
プールからチェックアウトされた接続の数 |
すべて |
|
少なくとも1つの接続を持つプール・グループの数(一意の接続文字列の数) |
AppDomainレベルのみ |
|
接続がゼロのプール・グループの数(一意の接続文字列の数) |
AppDomainレベルのみ |
.NETは、人間が簡単に読めない長いメトリック・レベルの識別子を使用します。アプリケーション名、プロセスIDおよび接続文字列を含む文字列で構成されます。メトリック・レベルの識別を容易にするために、ODP.NET開発者は、OraclePoolNameCollection
PoolNames
プロパティの接続文字列識別子名をカスタマイズできます。管理対象ODP.NET開発者は、.NET構成ファイルの<connectionPools>
セクションを使用するオプションもあります。開発者は、一意の接続文字列ごとに異なるプール名を構成できます。
Oracle Real Application Cluster (RAC)インスタンスの各クラスタでは、クラスタ内のすべてのインスタンスが同じ接続文字列を持つため、同じプール名構成が使用されます。