次の方法で共有


System.Net メトリック

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

先端

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

System.Net.NameResolution

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

メトリック: dns.lookup.duration
名前 インストルメントタイプ 単位 形容
dns.lookup.duration ヒストグラム s DNS 参照の実行にかかった時間を測定します。
属性 種類 形容 出席
dns.question.name クエリ対象の名前。 www.example.com;dot.net いつも
error.type 既知のエラー文字列、または発生した例外の完全な型名。 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 接続の数
属性 種類 形容 出席
http.connection.state HTTP 接続プール内の HTTP 接続の状態。 active;idle いつも
network.protocol.version 使用される HTTP プロトコルのバージョン。 1.1;2 いつも
server.address HTTP 要求の送信先 "URI 配信元" のホスト識別子。 example.com いつも
server.port int HTTP 要求の送信先 "URI 配信元" のポート識別子。 80;8080;443 既定値でない場合 (http スキームの80https443)
network.peer.address ソケット接続のピア IP アドレス。 10.5.3.2 いつも
url.scheme URI スキーム 使用されるプロトコルを識別するコンポーネントです。 http;https;ftp いつも

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

以降で使用可能: .NET 8

メトリック: http.client.connection.duration
名前 インストルメントタイプ ユニット (UCUM) 形容
http.client.connection.duration ヒストグラム s 正常に確立された送信 HTTP 接続の期間。
属性 種類 形容 出席
network.protocol.version 使用される HTTP プロトコルのバージョン。 1.1;2 いつも
server.address HTTP 要求の送信先 "URI 配信元" のホスト識別子。 example.com いつも
server.port int HTTP 要求の送信先 "URI 配信元" のポート識別子。 80;8080;443 既定値でない場合 (http スキームの80https443)
network.peer.address ソケット接続の IP アドレス。 10.5.3.2 いつも
url.scheme 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 要求の期間。
属性 種類 形容 出席
error.type 要求エラーの理由: snake_caseで HTTP 要求エラーの 1 つ、完全な例外の種類、または HTTP 4xx/5xx 状態コード。 System.Threading.Tasks.TaskCanceledException;name_resolution_error;secure_connection_error;404 要求が失敗した場合。
http.request.method HTTP 要求メソッド。 GET;POST;HEAD;_OTHER [2] いつも
http.response.status_code int HTTP 応答状態コードを します。 200 応答が受信された場合。
network.protocol.version 使用される HTTP プロトコルのバージョン。 1.1;2 応答が受信された場合。
server.address HTTP 要求の送信先 "URI 配信元" のホスト識別子。 example.com いつも
server.port int HTTP 要求の送信先 "URI 配信元" のポート識別子。 80;8080;443 .NET のバージョンによって異なります。 [3]
url.scheme URI スキーム 使用されるプロトコルを識別するコンポーネントです。 http;https;ftp いつも

[1] error.type: 要求が失敗した場合、値は次のいずれかに設定されます。

  • TaskCanceledExceptionなど、型を持つ例外名。
  • 500など、クライアントまたはサーバーのエラーを示す状態コード。
  • Unknown以外の HttpRequestErrorHttpRequestException が発生した場合、スネークの場合の列挙値 (例: name_resolution_error)。

[2] http.request.method:http.request.method:** メソッドが RFC9110に記載されている既知のメソッドの 1 つである場合、値にはメソッド名が含まれます。それ以外の場合、値は _OTHER。 ユーザー指定のメソッド名は、大文字と小文字を区別せずに既知の名前にマップされます。 たとえば、ユーザーが GeT名を指定した場合、GETにマップされます。

[3] server.port: 値の存在はバージョンによって異なります。

  • .NET 8: 既定でない場合は表示されます (http スキームの場合は80httpsの場合は 443)
  • .NET 9 以降の: 常に存在する

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 使用可能な接続を待機しているキューに要求が費やされた時間。
属性 種類 形容 出席
http.request.method HTTP 要求メソッド。 GET;POST;HEAD いつも
network.protocol.version 使用される HTTP プロトコルのバージョン。 1.1;2 いつも
server.address HTTP 要求の送信先 "URI 配信元" のホスト識別子。 example.com いつも
server.port int HTTP 要求の送信先 "URI 配信元" のポート識別子。 80;8080;443 既定値でない場合 (http スキームの80https443)
url.scheme URI スキーム 使用されるプロトコルを識別するコンポーネントです。 http;https;ftp いつも

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

以降で使用可能: .NET 8

メトリック: http.client.active_requests
名前 インストルメントタイプ ユニット (UCUM) 形容
http.client.active_requests UpDownCounter {request} アクティブな HTTP 要求の数。
属性 種類 形容 出席
http.request.method HTTP 要求メソッド。 GET;POST;HEAD いつも
server.address HTTP 要求の送信先 "URI 配信元" のホスト識別子。 example.com いつも
server.port int HTTP 要求の送信先 "URI 配信元" のポート識別子。 80;8080;443 既定値でない場合 (http スキームの80https443)
url.scheme URI スキーム 使用されるプロトコルを識別するコンポーネントです。 http;https;ftp いつも

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

以降で使用可能: .NET 8