ASP.NET Core メトリック
この記事では、System.Diagnostics.Metrics API を使うと生成される、ASP.NET Core 用に組み込まれたメトリックについて説明します。 以前の EventCounters API に基づくメトリックの一覧については、こちらをご覧ください。
ヒント
コア メトリックの収集、レポート、エンリッチ、テスト ASP.NET 方法の詳細については、「ASP.NET Core メトリックの使用」を参照してください。
Microsoft.AspNetCore.Hosting
Microsoft.AspNetCore.Hosting
メトリックでは、ASP.NET Core が受信した HTTP 要求に関する概要情報を報告します。
メトリック: http.server.request.duration
名前 | インストルメントの種類 | 単位 (UCUM) | 説明 |
---|---|---|---|
http.server.request.duration |
ヒストグラム | s |
インバウンド HTTP 要求の継続時間を測定します。 |
属性 | Type | 説明 | 例 | プレゼンス |
---|---|---|---|---|
http.route |
string | 一致したルート。 | {controller}/{action}/{id?} |
使用できる場合。 |
error.type |
string | 操作が終了したエラーのクラスを示します。 | timeout ; name_resolution_error ; 500 |
要求がエラーで終了した場合。 |
http.request.method |
string | HTTP 要求メソッド。 | GET ; POST ; HEAD |
常時 |
http.response.status_code |
int | HTTP 応答状態コード. | 200 |
送信された場合。 |
network.protocol.version |
string | network.protocol.name で指定されているプロトコルのバージョン。 |
3.1.1 |
常時 |
url.scheme |
string | 使われているプロトコルを識別する URI スキーム コンポーネント。 | http ; https |
常時 |
aspnetcore.request.is_unhandled |
Boolean | 要求がアプリケーション パイプラインによって処理されなかったときは true。 | true |
要求が処理されなかった場合。 |
ASP.NET Core のホスティング層で測定された、インバウンド HTTP 要求の処理に要した時間。 時間の測定は、基になる Web ホストで次のことが済むと開始されます。
- インバウンド ネットワーク ストリームの HTTP 要求ヘッダーが十分に解析されて、新しい要求が識別された。
- HttpContext などのコンテキスト データ構造が初期化された。
時間は次の場合に終了します。
- ASP.NET Core ハンドラー パイプラインの実行が完了した。
- すべての応答データが送信された。
- 要求のコンテキスト データ構造が破棄されている。
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.0
メトリック: http.server.active_requests
名前 | インストルメントの種類 | 単位 (UCUM) | 説明 |
---|---|---|---|
http.server.active_requests |
UpDownCounter | {request} |
現在処理されている同時 HTTP 要求の数を測定します。 |
属性 | Type | 説明 | 例 | プレゼンス |
---|---|---|---|---|
http.request.method |
string | HTTP 要求メソッド。 [1] | GET ; POST ; HEAD |
常時 |
url.scheme |
string | 使われているプロトコルを識別する URI スキーム コンポーネント。 | http ; https |
Always (常に) |
利用開始になる対象: .NET 8.0
Microsoft.AspNetCore.Routing
Microsoft.AspNetCore.Routing
メトリックでは、ASP.NET Core エンドポイントへの HTTP 要求のルーティングに関する情報を報告します。
メトリック: aspnetcore.routing.match_attempts
名前 | インストルメントの種類 | 単位 (UCUM) | 説明 |
---|---|---|---|
aspnetcore.routing.match_attempts |
カウンタ | {match_attempt} |
エンドポイントとの照合が試みられた要求の数。 |
属性 | Type | 説明 | 例 | プレゼンス |
---|---|---|---|---|
aspnetcore.routing.match_status |
string | 照合の結果 | success ; failure |
常時 |
aspnetcore.routing.is_fallback_route |
boolean | 一致したルートがフォールバック ルートであるかどうかを示す値。 | True |
ルートが正常に一致した場合。 |
http.route |
string | 一致したルート。 | {controller}/{action}/{id?} |
ルートが正常に一致した場合。 |
利用開始になる対象: .NET 8.0
Microsoft.AspNetCore.Diagnostics
Microsoft.AspNetCore.Diagnostics
メトリックでは、ASP.NET Core エラー処理ミドルウェアからの診断情報を報告します。
メトリック: aspnetcore.diagnostics.exceptions
名前 | インストルメントの種類 | 単位 (UCUM) | 説明 |
---|---|---|---|
aspnetcore.diagnostics.exceptions |
カウンタ | {exception} |
例外処理ミドルウェアによってキャッチされた例外の数。 |
属性 | Type | 説明 | 例 | プレゼンス |
---|---|---|---|---|
aspnetcore.diagnostics.exception.result |
string | ASP.NET Core 例外ミドルウェア処理の結果 | handled ; unhandled |
常時 |
aspnetcore.diagnostics.handler.type |
string | 例外を処理した IExceptionHandler の実装の完全な型名。 |
Contoso.MyHandler |
例外がこのハンドラーによって処理された場合。 |
exception.type |
string | 例外の型の完全な名前。 | System.OperationCanceledException ; Contoso.MyException |
Always (常に) |
利用開始になる対象: .NET 8.0
Microsoft.AspNetCore.RateLimiting
Microsoft.AspNetCore.RateLimiting
メトリックでは、ASP.NET Core レート制限ミドルウェアからのレート制限情報を報告します。
aspnetcore.rate_limiting.active_request_leases
aspnetcore.rate_limiting.request_lease.duration
aspnetcore.rate_limiting.queued_requests
aspnetcore.rate_limiting.request.time_in_queue
aspnetcore.rate_limiting.requests
メトリック: aspnetcore.rate_limiting.active_request_leases
名前 | インストルメントの種類 | 単位 (UCUM) | 説明 |
---|---|---|---|
aspnetcore.rate_limiting.active_request_leases |
UpDownCounter | {request} |
レート制限リースを保持しているサーバーで現在アクティブになっている要求の数。 |
属性 | Type | 説明 | 例 | プレゼンス |
---|---|---|---|---|
aspnetcore.rate_limiting.policy |
string | レート制限ポリシーの名前。 | fixed ; sliding ; token |
要求に一致したエンドポイントにレート制限ポリシーがある場合。 |
利用開始になる対象: .NET 8.0
メトリック: aspnetcore.rate_limiting.request_lease.duration
名前 | インストルメントの種類 | 単位 (UCUM) | 説明 |
---|---|---|---|
aspnetcore.rate_limiting.request_lease.duration |
ヒストグラム | s |
サーバー上の要求によって保持されているレート制限リースの継続時間。 |
属性 | Type | 説明 | 例 | プレゼンス |
---|---|---|---|---|
aspnetcore.rate_limiting.policy |
string | レート制限ポリシーの名前。 | fixed ; sliding ; token |
要求に一致したエンドポイントにレート制限ポリシーがある場合。 |
利用開始になる対象: .NET 8.0
メトリック: aspnetcore.rate_limiting.queued_requests
名前 | インストルメントの種類 | 単位 (UCUM) | 説明 |
---|---|---|---|
aspnetcore.rate_limiting.queued_requests |
UpDownCounter | {request} |
レート制限リースの取得を待機して現在キューに登録されている要求の数。 |
属性 | Type | 説明 | 例 | プレゼンス |
---|---|---|---|---|
aspnetcore.rate_limiting.policy |
string | レート制限ポリシーの名前。 | fixed ; sliding ; token |
要求に一致したエンドポイントにレート制限ポリシーがある場合。 |
利用開始になる対象: .NET 8.0
メトリック: aspnetcore.rate_limiting.request.time_in_queue
名前 | インストルメントの種類 | 単位 (UCUM) | 説明 |
---|---|---|---|
aspnetcore.rate_limiting.request.time_in_queue |
ヒストグラム | s |
レート制限リースの取得の待機に、要求がキューで費やした時間。 |
属性 | Type | 説明 | 例 | プレゼンス |
---|---|---|---|---|
aspnetcore.rate_limiting.policy |
string | レート制限ポリシーの名前。 | fixed ; sliding ; token |
要求に一致したエンドポイントにレート制限ポリシーがある場合。 |
aspnetcore.rate_limiting.result |
string | レート制限の結果は、リースが取得されたかどうかを示すか、または拒否された理由を含みます。 | acquired ; request_canceled |
Always (常に) |
利用開始になる対象: .NET 8.0
メトリック: aspnetcore.rate_limiting.requests
名前 | インストルメントの種類 | 単位 (UCUM) | 説明 |
---|---|---|---|
aspnetcore.rate_limiting.requests |
カウンタ | {request} |
レート制限リースの取得を試みた要求の数。 |
属性 | Type | 説明 | 例 | プレゼンス |
---|---|---|---|---|
aspnetcore.rate_limiting.policy |
string | レート制限ポリシーの名前。 | fixed ; sliding ; token |
要求に一致したエンドポイントにレート制限ポリシーがある場合。 |
aspnetcore.rate_limiting.result |
string | レート制限の結果は、リースが取得されたかどうかを示すか、または拒否された理由を含みます。 | acquired ; request_canceled |
Always (常に) |
利用開始になる対象: .NET 8.0
Microsoft.AspNetCore.HeaderParsing
Microsoft.AspNetCore.HeaderParsing
メトリックでは、ASP.NET Core ヘッダーの解析に関する情報を報告します。
メトリック: aspnetcore.header_parsing.parse_errors
名前 | インストルメントの種類 | 単位 (UCUM) | 説明 |
---|---|---|---|
aspnetcore.header_parsing.parse_errors |
カウンタ | {parse_error} |
HTTP 要求ヘッダーの解析時に発生したエラーの数。 |
属性 | Type | 説明 | 例 | プレゼンス |
---|---|---|---|---|
aspnetcore.header_parsing.header.name |
string | ヘッダーの名前。 | Content-Type |
Always (常に) |
error.type |
string | エラー メッセージ。 | Unable to parse media type value. |
Always (常に) |
利用開始になる対象: .NET 8.0
メトリック: aspnetcore.header_parsing.cache_accesses
メトリックは、キャッシュをサポートする HTTP 要求ヘッダー パーサーに対してのみ出力されます。
名前 | インストルメントの種類 | 単位 (UCUM) | 説明 |
---|---|---|---|
aspnetcore.header_parsing.cache_accesses |
カウンタ | {cache_access} |
解析されたヘッダー値を格納しているキャッシュがアクセスされた回数。 |
属性 | Type | 説明 | 例 | プレゼンス |
---|---|---|---|---|
aspnetcore.header_parsing.header.name |
string | ヘッダーの名前。 | Content-Type |
Always (常に) |
aspnetcore.header_parsing.cache_access.type |
string | ヘッダーの値がキャッシュにあるかどうかを示す値。 | Hit ; Miss |
Always (常に) |
利用開始になる対象: .NET 8.0
Microsoft.AspNetCore.Server.Kestrel
Microsoft.AspNetCore.Server.Kestrel
メトリックでは、ASP.NET Core Kestrel Web サーバーからの HTTP 接続情報を報告します。
kestrel.active_connections
kestrel.connection.duration
kestrel.rejected_connections
kestrel.queued_connections
kestrel.queued_requests
kestrel.upgraded_connections
kestrel.tls_handshake.duration
kestrel.active_tls_handshakes
メトリック: kestrel.active_connections
名前 | インストルメントの種類 | 単位 (UCUM) | 説明 |
---|---|---|---|
kestrel.active_connections |
UpDownCounter | {connection} |
サーバーで現在アクティブになっている接続の数。 |
属性 | Type | 説明 | 例 | プレゼンス |
---|---|---|---|---|
network.transport |
string | OSI のトランスポート層またはプロセス間通信方法。 | tcp ; unix |
常時 |
network.type |
string | OSI のネットワーク層または OSI 以外で同等のもの。 | ipv4 ; ipv6 |
トランスポートが tcp または udp の場合。 |
server.address |
string | 逆引き DNS 参照をしないでわかる場合は、サーバー アドレス ドメイン名。それ以外の場合は、IP アドレスまたは Unix ドメイン ソケット名。 | example.com |
常時 |
server.port |
int | サーバーのポート番号 | 80 ; 8080 ; 443 |
トランスポートが tcp または udp の場合。 |
利用開始になる対象: .NET 8.0
メトリック: kestrel.connection.duration
名前 | インストルメントの種類 | 単位 (UCUM) | 説明 |
---|---|---|---|
kestrel.connection.duration |
ヒストグラム | s |
サーバーでの接続の継続時間。 |
属性 | Type | 説明 | 例 | プレゼンス |
---|---|---|---|---|
error.type |
string | 接続が終了したエラーの種類、または接続パイプライン中にスローされた未処理の例外の種類について説明します。 既知の接続エラーは、Kestrel Web サーバー メトリックの Semantic 規則で確認できます。 | connection_reset ; invalid_request_headers ; System.OperationCanceledException |
接続が既知のエラーで終了したか、例外がスローされた場合。 |
network.protocol.name |
string | OSI のアプリケーション層または OSI 以外で同等のもの。 | http ; web_sockets |
常時 |
network.protocol.version |
string | network.protocol.name で指定されているプロトコルのバージョン。 |
1.1 ; 2 |
常時 |
network.transport |
string | OSI のトランスポート層またはプロセス間通信方法。 | tcp ; unix |
常時 |
network.type |
string | OSI のネットワーク層または OSI 以外で同等のもの。 | ipv4 ; ipv6 |
トランスポートが tcp または udp の場合。 |
server.address |
string | 逆引き DNS 参照をしないでわかる場合は、サーバー アドレス ドメイン名。それ以外の場合は、IP アドレスまたは Unix ドメイン ソケット名。 | example.com |
常時 |
server.port |
int | サーバーのポート番号 | 80 ; 8080 ; 443 |
トランスポートが tcp または udp の場合。 |
tls.protocol.version |
string | TLS プロトコルのバージョン。 | 1.2 ; 1.3 |
接続が TLS でセキュリティ保護されている場合。 |
このメトリックは接続期間を追跡していて、理想的には http 接続が複数の要求に使用されるため、バケットは要求期間に使用されるものより長くする必要があります。 たとえば、[0.01, 0.02, 0.05, 0.1, 0.2, 0.5, 1, 2, 5, 10, 30, 60, 120, 300] を使用すると、5 分間のバケットの上限が提供されます。
.NET 9 以降では、接続が既知のエラーで終了すると、 error.type
属性値は既知のエラーの種類に設定されます。 既知の接続エラーは、Kestrel Web サーバー メトリックの Semantic 規則で確認できます。
.NET 8 以降で使用できます。
メトリック: kestrel.rejected_connections
名前 | インストルメントの種類 | 単位 (UCUM) | 説明 |
---|---|---|---|
kestrel.rejected_connections |
カウンタ | {connection} |
サーバーによって拒否された接続の数。 |
属性 | Type | 説明 | 例 | プレゼンス |
---|---|---|---|---|
network.transport |
string | OSI のトランスポート層またはプロセス間通信方法。 | tcp ; unix |
常時 |
network.type |
string | OSI のネットワーク層または OSI 以外で同等のもの。 | ipv4 ; ipv6 |
トランスポートが tcp または udp の場合。 |
server.address |
string | 逆引き DNS 参照をしないでわかる場合は、サーバー アドレス ドメイン名。それ以外の場合は、IP アドレスまたは Unix ドメイン ソケット名。 | example.com |
常時 |
server.port |
int | サーバーのポート番号 | 80 ; 8080 ; 443 |
トランスポートが tcp または udp の場合。 |
現在アクティブな数が MaxConcurrentConnections
で構成されている値を超えると、接続は拒否されます。
利用開始になる対象: .NET 8.0
メトリック: kestrel.queued_connections
名前 | インストルメントの種類 | 単位 (UCUM) | 説明 |
---|---|---|---|
kestrel.queued_connections |
UpDownCounter | {connection} |
現在キューに登録され、開始を待機している接続の数。 |
属性 | Type | 説明 | 例 | プレゼンス |
---|---|---|---|---|
network.transport |
string | OSI のトランスポート層またはプロセス間通信方法。 | tcp ; unix |
常時 |
network.type |
string | OSI のネットワーク層または OSI 以外で同等のもの。 | ipv4 ; ipv6 |
トランスポートが tcp または udp の場合。 |
server.address |
string | 逆引き DNS 参照をしないでわかる場合は、サーバー アドレス ドメイン名。それ以外の場合は、IP アドレスまたは Unix ドメイン ソケット名。 | example.com |
常時 |
server.port |
int | サーバーのポート番号 | 80 ; 8080 ; 443 |
トランスポートが tcp または udp の場合。 |
利用開始になる対象: .NET 8.0
メトリック: kestrel.queued_requests
名前 | インストルメントの種類 | 単位 (UCUM) | 説明 |
---|---|---|---|
kestrel.queued_requests |
UpDownCounter | {request} |
現在キューに登録され、開始を待機している、多重接続 (HTTP/2 および HTTP/3) での HTTP 要求の数。 |
属性 | Type | 説明 | 例 | プレゼンス |
---|---|---|---|---|
network.protocol.name |
string | OSI のアプリケーション層または OSI 以外で同等のもの。 | http ; web_sockets |
常時 |
network.protocol.version |
string | network.protocol.name で指定されているプロトコルのバージョン。 |
1.1 ; 2 |
常時 |
network.transport |
string | OSI のトランスポート層またはプロセス間通信方法。 | tcp ; unix |
常時 |
network.type |
string | OSI のネットワーク層または OSI 以外で同等のもの。 | ipv4 ; ipv6 |
トランスポートが tcp または udp の場合。 |
server.address |
string | 逆引き DNS 参照をしないでわかる場合は、サーバー アドレス ドメイン名。それ以外の場合は、IP アドレスまたは Unix ドメイン ソケット名。 | example.com |
常時 |
server.port |
int | サーバーのポート番号 | 80 ; 8080 ; 443 |
トランスポートが tcp または udp の場合。 |
利用開始になる対象: .NET 8.0
メトリック: kestrel.upgraded_connections
名前 | インストルメントの種類 | 単位 (UCUM) | 説明 |
---|---|---|---|
kestrel.upgraded_connections |
UpDownCounter | {connection} |
現在アップグレードされている接続の数 (WebSocket)。 |
属性 | Type | 説明 | 例 | プレゼンス |
---|---|---|---|---|
network.transport |
string | OSI のトランスポート層またはプロセス間通信方法。 | tcp ; unix |
常時 |
network.type |
string | OSI のネットワーク層または OSI 以外で同等のもの。 | ipv4 ; ipv6 |
トランスポートが tcp または udp の場合。 |
server.address |
string | 逆引き DNS 参照をしないでわかる場合は、サーバー アドレス ドメイン名。それ以外の場合は、IP アドレスまたは Unix ドメイン ソケット名。 | example.com |
常時 |
server.port |
int | サーバーのポート番号 | 80 ; 8080 ; 443 |
トランスポートが tcp または udp の場合。 |
カウンターは HTTP/1.1 接続のみを追跡します。
利用開始になる対象: .NET 8.0
メトリック: kestrel.tls_handshake.duration
名前 | インストルメントの種類 | 単位 (UCUM) | 説明 |
---|---|---|---|
kestrel.tls_handshake.duration |
ヒストグラム | s |
サーバーでの TLS ハンドシェイクの継続時間。 |
属性 | Type | 説明 | 例 | プレゼンス |
---|---|---|---|---|
error.type |
string | 例外の型の完全な名前。 | System.OperationCanceledException ; Contoso.MyException |
例外がスローされた場合。 |
network.transport |
string | OSI のトランスポート層またはプロセス間通信方法。 | tcp ; unix |
常時 |
network.type |
string | OSI のネットワーク層または OSI 以外で同等のもの。 | ipv4 ; ipv6 |
トランスポートが tcp または udp の場合。 |
server.address |
string | 逆引き DNS 参照をしないでわかる場合は、サーバー アドレス ドメイン名。それ以外の場合は、IP アドレスまたは Unix ドメイン ソケット名。 | example.com |
常時 |
server.port |
int | サーバーのポート番号 | 80 ; 8080 ; 443 |
トランスポートが tcp または udp の場合。 |
tls.protocol.version |
string | TLS プロトコルのバージョン。 | 1.2 ; 1.3 |
接続が TLS でセキュリティ保護されている場合。 |
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.0
メトリック: kestrel.active_tls_handshakes
名前 | インストルメントの種類 | 単位 (UCUM) | 説明 |
---|---|---|---|
kestrel.active_tls_handshakes |
UpDownCounter | {handshake} |
サーバーで現在進行中の TLS ハンドシェイクの数。 |
属性 | Type | 説明 | 例 | プレゼンス |
---|---|---|---|---|
network.transport |
string | OSI のトランスポート層またはプロセス間通信方法。 | tcp ; unix |
常時 |
network.type |
string | OSI のネットワーク層または OSI 以外で同等のもの。 | ipv4 ; ipv6 |
トランスポートが tcp または udp の場合。 |
server.address |
string | 逆引き DNS 参照をしないでわかる場合は、サーバー アドレス ドメイン名。それ以外の場合は、IP アドレスまたは Unix ドメイン ソケット名。 | example.com |
常時 |
server.port |
int | サーバーのポート番号 | 80 ; 8080 ; 443 |
トランスポートが tcp または udp の場合。 |
利用開始になる対象: .NET 8.0
Microsoft.AspNetCore.Http.Connections
Microsoft.AspNetCore.Http.Connections
メトリックでは、ASP.NET Core SignalR からの接続情報を報告します。
メトリック: signalr.server.connection.duration
名前 | インストルメントの種類 | 単位 (UCUM) | 説明 |
---|---|---|---|
signalr.server.connection.duration |
ヒストグラム | s |
サーバーでの接続の継続時間。 |
属性 | Type | 説明 | 例 | プレゼンス |
---|---|---|---|---|
signalr.connection.status |
string | SignalR HTTP 接続の終了状態。 | app_shutdown ; timeout |
常時 |
signalr.transport |
string | SignalR トランスポートの種類 | web_sockets ; long_polling |
Always (常に) |
利用開始になる対象: .NET 8.0
Value | 説明 |
---|---|
normal_closure |
接続は、正常に閉じられました。 |
timeout |
接続は、タイムアウトのために閉じられました。 |
app_shutdown |
接続は、アプリがシャットダウンしているために閉じられました。 |
signalr.transport
は次のいずれかになります。
値 | Protocol |
---|---|
server_sent_events |
サーバー送信イベント |
long_polling |
長いポーリング |
web_sockets |
WebSocket |
このメトリックは接続期間を追跡していて、理想的には SignalR 接続が継続可能であるため、バケットは要求期間に使用されるものより長くする必要があります。 たとえば、[0, 0.01, 0.02, 0.05, 0.1, 0.2, 0.5, 1, 2, 5, 10, 30, 60, 120, 300] を使用すると、5 分間のバケットの上限が提供されます。
利用開始になる対象: .NET 8.0
メトリック: signalr.server.active_connections
名前 | インストルメントの種類 | 単位 (UCUM) | 説明 |
---|---|---|---|
signalr.server.active_connections |
UpDownCounter | {connection} |
サーバーで現在アクティブになっている接続の数。 |
属性 | Type | 説明 | 例 | プレゼンス |
---|---|---|---|---|
signalr.connection.status |
string | SignalR HTTP 接続の終了状態。 | app_shutdown ; timeout |
常時 |
signalr.transport |
string | SignalR トランスポートの種類 | web_sockets ; long_polling |
Always (常に) |
利用開始になる対象: .NET 8.0
.NET