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
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 接続の数 |
属性 | 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 スキームでは 80 、https では 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 スキームでは 80 、https では 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 スキームでは 80 、https では 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 スキームでは 80 、https では 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 スキームでは 80 、https では 443 ) |
url.scheme |
string | 使われているプロトコルを識別する URI スキーム コンポーネント。 | http ; https ; ftp |
常時 |
このメトリックでは、アクティブと見なされる要求の数をカウントします。 要求は、http.client.request.duration インストルメントによって測定される期間と同じだけアクティブです。
利用開始になる対象: .NET 8
.NET