System.Net メトリック
この記事では、System.Diagnostics.Metrics API を使用して生成される System.Net に組み込まれているネットワーク メトリックについて説明します。 代替
先端
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
http.client.connection.duration
http.client.request.duration
http.client.request.time_in_queue
http.client.active_requests
メトリック: 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 要求の送信先 |
example.com |
いつも |
server.port |
int | HTTP 要求の送信先 |
80 ;8080 ;443 |
既定値でない場合 (http スキームの80 、https の 443 ) |
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 要求の送信先 |
example.com |
いつも |
server.port |
int | HTTP 要求の送信先 |
80 ;8080 ;443 |
既定値でない場合 (http スキームの80 、https の 443 ) |
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で |
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 要求の送信先 |
example.com |
いつも |
server.port |
int | HTTP 要求の送信先 |
80 ;8080 ;443 |
.NET のバージョンによって異なります。 [3] |
url.scheme |
糸 | URI スキーム 使用されるプロトコルを識別するコンポーネントです。 |
http ;https ;ftp |
いつも |
[1] error.type
: 要求が失敗した場合、値は次のいずれかに設定されます。
- TaskCanceledExceptionなど、型を持つ例外名。
-
500
など、クライアントまたはサーバーのエラーを示す状態コード。 -
Unknown
以外の HttpRequestError で HttpRequestException が発生した場合、スネークの場合の列挙値 (例:name_resolution_error
)。
[2] http.request.method
:http.request.method
:** メソッドが RFC9110に記載されている既知のメソッドの 1 つである場合、値にはメソッド名が含まれます。それ以外の場合、値は _OTHER
。 ユーザー指定のメソッド名は、大文字と小文字を区別せずに既知の名前にマップされます。 たとえば、ユーザーが GeT
名を指定した場合、GET
にマップされます。
[3] server.port
: 値の存在はバージョンによって異なります。
-
.NET 8: 既定でない場合は表示されます (
http
スキームの場合は80
、https
の場合は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 要求の送信先 |
example.com |
いつも |
server.port |
int | HTTP 要求の送信先 |
80 ;8080 ;443 |
既定値でない場合 (http スキームの80 、https の 443 ) |
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 要求の送信先 |
example.com |
いつも |
server.port |
int | HTTP 要求の送信先 |
80 ;8080 ;443 |
既定値でない場合 (http スキームの80 、https の 443 ) |
url.scheme |
糸 | URI スキーム 使用されるプロトコルを識別するコンポーネントです。 |
http ;https ;ftp |
いつも |
このメトリックは、アクティブと見なされる要求の数をカウントします。 要求は、http.client.request.duration インストルメントによって測定されるのと同じ期間、アクティブです。
以降で使用可能: .NET 8
.NET