次の方法で共有


System.Net メトリック

この記事では、System.Diagnostics.Metrics API を使うと生成される、System.Net 用に組み込まれたネットワーク メトリックについて説明します。 代替 EventCounters API に基づくメトリックの一覧については、「.NET の既知の EventCounter」を参照してください。

ヒント

System.Net メトリックを収集、レポート、エンリッチ、テストする方法の詳細については、.NET のネットワーク メトリックに関するページを参照してください。

System.Net.NameResolution

System.Net.NameResolution メトリックは、Dns からの DNS 名前解決を報告します。

メトリック: dns.lookup.duration
名前 インストルメントの種類 ユニット 説明
dns.lookup.duration ヒストグラム s DNS 参照の実行にかかった時間を測定します。
属性 Type 説明 プレゼンス
dns.question.name string クエリ対象の名前。 www.example.com; dot.net 常時
error.type string 既知のエラー文字列、または発生した例外の完全な種類名。 host_not_found; System.Net.Sockets.SocketException エラーが発生した場合

このメトリックでは、DNS 要求の実行にかかる時間を測定します。 これらの要求は、Dns でメソッドを呼び出して、または HttpClient などの種類で上位レベルの API の中において間接的に、行われる可能性があります。

DNS 参照を実行するときに発生するほとんどのエラーで、SocketException がスローされます。 一般的なエラー ケースをより明確にするために、特定の SocketErrorCode を持つソケット例外に、error.type で明示的なエラー名が指定されます。

SocketErrorCode error.type
HostNotFound host_not_found
TryAgain try_again
AddressFamilyNotSupported address_family_not_supported
NoRecovery no_recovery

その他の SocketError 値を持つソケット例外は、System.Net.Sockets.SocketException のように報告されます。

OpenTelemetry を使用するとき、このメトリックの既定のバケットは [ 0.005, 0.01, 0.025, 0.05, 0.075, 0.1, 0.25, 0.5, 0.75, 1, 2.5, 5, 7.5, 10 ] に設定されます。

利用開始になる対象: .NET 8

System.Net.Http

System.Net.Http メトリックは、System.Net.Http からの HTTP 要求と接続情報を報告します。

メトリック: http.client.open_connections
名前 インストルメントの種類 単位 (UCUM) 説明
http.client.open_connections UpDownCounter {connection} クライアントで現在アクティブまたはアイドル状態になっている送信 HTTP 接続の数
属性 Type 説明 プレゼンス
http.connection.state string HTTP 接続プール内の HTTP 接続の状態。 active; idle 常時
network.protocol.version string 使用されるアプリケーション層プロトコルのバージョン。 1.1; 2 常時
server.address string HTTP 要求の送信先の "URI オリジン" のホスト識別子。 example.com 常時
server.port int HTTP 要求の送信先の "URI オリジン" のポート識別子。 80; 8080; 443 既定値でない場合 (http スキームでは 80https では 443)
network.peer.address string ソケット接続のピア IP アドレス。 10.5.3.2 常時
url.scheme string 使われているプロトコルを識別する URI スキーム コンポーネント。 http; https; ftp 常時

既定の SocketsHttpHandler を使用するように構成された HttpClient では、HTTP メッセージを送信するために、キャッシュされたネットワーク接続プールを維持します。 このメトリックで、プール内の現在の接続数をカウントします。 アクティブな接続がアクティブな要求を処理しています。 アクティブな接続は、データを送信しているか、クライアントまたはサーバーを待機している可能性があります。 アイドル状態の接続の場合、要求は処理しませんが、将来の要求をすばやく処理できるように開いたままになります。

利用開始になる対象: .NET 8

メトリック: http.client.connection.duration
名前 インストルメントの種類 単位 (UCUM) 説明
http.client.connection.duration ヒストグラム s 正常に確立された送信 HTTP 接続の期間。
属性 Type 説明 プレゼンス
network.protocol.version string 使用されるアプリケーション層プロトコルのバージョン。 1.1; 2 常時
server.address string HTTP 要求の送信先の "URI オリジン" のホスト識別子。 example.com 常時
server.port int HTTP 要求の送信先の "URI オリジン" のポート識別子。 80; 8080; 443 既定値でない場合 (http スキームでは 80https では 443)
network.peer.address string ソケット接続の IP アドレス。 10.5.3.2 常時
url.scheme string 使われているプロトコルを識別する URI スキーム コンポーネント。 http; https; ftp 常時

このメトリックは、既定の SocketsHttpHandler を使用するように HttpClient が構成されている場合にのみキャプチャされます。

このメトリックは接続期間を追跡していて、理想的には http 接続が複数の要求に使用されるため、バケットは要求期間に使用されるものより長くする必要があります。 たとえば、[ 0.01, 0.02, 0.05, 0.1, 0.2, 0.5, 1, 2, 5, 10, 30, 60, 120, 300 ] を使用すると、5 分間のバケットの上限が提供されます。

利用開始になる対象: .NET 8

メトリック: http.client.request.duration
名前 インストルメントの種類 単位 (UCUM) 説明
http.client.request.duration ヒストグラム s 送信 HTTP 要求の期間。
属性 Type 説明 プレゼンス
error.type string 要求エラーの理由: HTTP 要求エラー1 つ、完全な例外の種類、または HTTP 4xx/5xx 状態コード。 System.Threading.Tasks.TaskCanceledException; name_resolution_error; secure_connection_error ; 404 要求が失敗した場合。
http.request.method string HTTP 要求メソッド。 GET; POST; HEAD 常時
http.response.status_code int HTTP 応答状態コード. 200 受け取った場合。
network.protocol.version string 使用されるアプリケーション層プロトコルのバージョン。 1.1; 2 応答が受信された場合。
server.address string HTTP 要求の送信先の "URI オリジン" のホスト識別子。 example.com 常時
server.port int HTTP 要求の送信先の "URI オリジン" のポート識別子。 80; 8080; 443 既定値でない場合 (http スキームでは 80https では 443)
url.scheme string 使われているプロトコルを識別する URI スキーム コンポーネント。 http; https; ftp 常時

HTTP クライアント要求の期間では、基になるクライアント ハンドラーで要求を完了するために要する時間を測定します。 要求の完了には、ネットワーク ストリームから応答ヘッダーを読み取るまでの時間が含まれます。 応答本文の読み取りに費やされる時間は含まれません。

OpenTelemetry を使用するとき、このメトリックの既定のバケットは [ 0.005, 0.01, 0.025, 0.05, 0.075, 0.1, 0.25, 0.5, 0.75, 1, 2.5, 5, 7.5, 10 ] に設定されます。

利用開始になる対象: .NET 8

ヒント

このメトリックではエンリッチメントが可能です。

メトリック: http.client.request.time_in_queue
名前 インストルメントの種類 単位 (UCUM) 説明
http.client.request.time_in_queue ヒストグラム s 要求が使用可能な接続を待機して、キューで費やした時間。
属性 Type 説明 プレゼンス
http.request.method string HTTP 要求メソッド。 GET; POST; HEAD 常時
network.protocol.version string 使用されるアプリケーション層プロトコルのバージョン。 1.1; 2 常時
server.address string HTTP 要求の送信先の "URI オリジン" のホスト識別子。 example.com 常時
server.port int HTTP 要求の送信先の "URI オリジン" のポート識別子。 80; 8080; 443 既定値でない場合 (http スキームでは 80https では 443)
url.scheme string 使われているプロトコルを識別する URI スキーム コンポーネント。 http; https; ftp 常時

既定の SocketsHttpHandler を使用するように構成された HttpClient では、ネットワーク接続プールを使用して HTTP 要求を送信します。 すべての接続が他の要求を処理するためにビジー状態になっている場合、新しい要求がキューに入れられ、ネットワーク接続が使用できるようになるまで待機します。 このインストルメントでは、ネットワーク経由で送信されるようになる前に、HTTP 要求がそのキューで待機に費やした時間を測定します。

利用開始になる対象: .NET 8

メトリック: http.client.active_requests
名前 インストルメントの種類 単位 (UCUM) 説明
http.client.active_requests UpDownCounter {request} アクティブな HTTP 要求の数。
属性 Type 説明 プレゼンス
http.request.method string HTTP 要求メソッド。 GET; POST; HEAD 常時
server.address string HTTP 要求の送信先の "URI オリジン" のホスト識別子。 example.com 常時
server.port int HTTP 要求の送信先の "URI オリジン" のポート識別子。 80; 8080; 443 既定値でない場合 (http スキームでは 80https では 443)
url.scheme string 使われているプロトコルを識別する URI スキーム コンポーネント。 http; https; ftp 常時

このメトリックでは、アクティブと見なされる要求の数をカウントします。 要求は、http.client.request.duration インストルメントによって測定される期間と同じだけアクティブです。

利用開始になる対象: .NET 8