ASP.NET Core メトリック
- [アーティクル]
-
-
この記事では、System.Diagnostics.Metrics API を使うと生成される、ASP.NET Core 用に組み込まれたメトリックについて説明します。 以前の EventCounters API に基づくメトリックの一覧については、こちらをご覧ください。
Microsoft.AspNetCore.Hosting
Microsoft.AspNetCore.Hosting
メトリックでは、ASP.NET Core が受信した HTTP 要求に関する概要情報を報告します。
メトリック: http.server.request.duration
属性 |
Type |
説明 |
例 |
プレゼンス |
http.route |
string |
一致したルート。 |
{controller}/{action}/{id?} |
使用できる場合。 |
error.type |
string |
操作が終了したエラーのクラスを示します。 |
|
要求がエラーで終了した場合。 |
http.request.method |
string |
HTTP 要求メソッド。 |
|
常時 |
http.response.status_code |
int |
HTTP 応答状態コード. |
200 |
送信された場合。 |
network.protocol.version |
string |
network.protocol.name で指定されているプロトコルのバージョン。 |
3.1.1 |
常時 |
url.scheme |
string |
使われているプロトコルを識別する URI スキーム コンポーネント。 |
$ |
常時 |
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
属性 |
Type |
説明 |
例 |
プレゼンス |
http.request.method |
string |
HTTP 要求メソッド。 [1] |
|
常時 |
url.scheme |
string |
使われているプロトコルを識別する URI スキーム コンポーネント。 |
$ |
Always (常に) |
利用開始になる対象: .NET 8.0
Microsoft.AspNetCore.Routing
Microsoft.AspNetCore.Routing
メトリックでは、ASP.NET Core エンドポイントへの HTTP 要求のルーティングに関する情報を報告します。
メトリック: aspnetcore.routing.match_attempts
属性 |
Type |
説明 |
例 |
プレゼンス |
aspnetcore.routing.match_status |
string |
照合の結果 |
$ |
常時 |
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
属性 |
Type |
説明 |
例 |
プレゼンス |
aspnetcore.diagnostics.exception.result |
string |
ASP.NET Core 例外ミドルウェア処理の結果 |
$ |
常時 |
aspnetcore.diagnostics.handler.type |
string |
例外を処理した IExceptionHandler の実装の完全な型名。 |
Contoso.MyHandler |
例外がこのハンドラーによって処理された場合。 |
exception.type |
string |
例外の型の完全な名前。 |
$ |
Always (常に) |
利用開始になる対象: .NET 8.0
Microsoft.AspNetCore.RateLimiting
Microsoft.AspNetCore.RateLimiting
メトリックでは、ASP.NET Core レート制限ミドルウェアからのレート制限情報を報告します。
メトリック: aspnetcore.rate_limiting.active_request_leases
属性 |
Type |
説明 |
例 |
プレゼンス |
aspnetcore.rate_limiting.policy |
string |
レート制限ポリシーの名前。 |
|
要求に一致したエンドポイントにレート制限ポリシーがある場合。 |
利用開始になる対象: .NET 8.0
メトリック: aspnetcore.rate_limiting.request_lease.duration
属性 |
Type |
説明 |
例 |
プレゼンス |
aspnetcore.rate_limiting.policy |
string |
レート制限ポリシーの名前。 |
|
要求に一致したエンドポイントにレート制限ポリシーがある場合。 |
利用開始になる対象: .NET 8.0
メトリック: aspnetcore.rate_limiting.queued_requests
属性 |
Type |
説明 |
例 |
プレゼンス |
aspnetcore.rate_limiting.policy |
string |
レート制限ポリシーの名前。 |
|
要求に一致したエンドポイントにレート制限ポリシーがある場合。 |
利用開始になる対象: .NET 8.0
メトリック: aspnetcore.rate_limiting.request.time_in_queue
属性 |
Type |
説明 |
例 |
プレゼンス |
aspnetcore.rate_limiting.policy |
string |
レート制限ポリシーの名前。 |
|
要求に一致したエンドポイントにレート制限ポリシーがある場合。 |
aspnetcore.rate_limiting.result |
string |
レート制限の結果は、リースが取得されたかどうかを示すか、または拒否された理由を含みます。 |
$ |
Always (常に) |
利用開始になる対象: .NET 8.0
メトリック: aspnetcore.rate_limiting.requests
属性 |
Type |
説明 |
例 |
プレゼンス |
aspnetcore.rate_limiting.policy |
string |
レート制限ポリシーの名前。 |
|
要求に一致したエンドポイントにレート制限ポリシーがある場合。 |
aspnetcore.rate_limiting.result |
string |
レート制限の結果は、リースが取得されたかどうかを示すか、または拒否された理由を含みます。 |
$ |
Always (常に) |
利用開始になる対象: .NET 8.0
Microsoft.AspNetCore.HeaderParsing
メトリックでは、ASP.NET Core ヘッダーの解析に関する情報を報告します。
名前 |
インストルメントの種類 |
単位 (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
メトリックは、キャッシュをサポートする 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 |
ヘッダーの値がキャッシュにあるかどうかを示す値。 |
$ |
Always (常に) |
利用開始になる対象: .NET 8.0
Microsoft.AspNetCore.Server.Kestrel
Microsoft.AspNetCore.Server.Kestrel
メトリックでは、ASP.NET Core Kestrel Web サーバーからの HTTP 接続情報を報告します。
メトリック: kestrel.active_connections
属性 |
Type |
説明 |
例 |
プレゼンス |
network.transport |
string |
OSI のトランスポート層またはプロセス間通信方法。 |
$ |
常時 |
network.type |
string |
OSI のネットワーク層または OSI 以外で同等のもの。 |
$ |
トランスポートが tcp または udp の場合。 |
server.address |
string |
逆引き DNS 参照をしないでわかる場合は、サーバー アドレス ドメイン名。それ以外の場合は、IP アドレスまたは Unix ドメイン ソケット名。 |
example.com |
常時 |
server.port |
int |
サーバーのポート番号 |
|
トランスポートが tcp または udp の場合。 |
利用開始になる対象: .NET 8.0
メトリック: kestrel.connection.duration
属性 |
Type |
説明 |
例 |
プレゼンス |
error.type |
string |
例外の型の完全な名前。 |
$ |
例外がスローされた場合。 |
network.protocol.name |
string |
OSI のアプリケーション層または OSI 以外で同等のもの。 |
$ |
常時 |
network.protocol.version |
string |
network.protocol.name で指定されているプロトコルのバージョン。 |
$ |
常時 |
network.transport |
string |
OSI のトランスポート層またはプロセス間通信方法。 |
$ |
常時 |
network.type |
string |
OSI のネットワーク層または OSI 以外で同等のもの。 |
$ |
トランスポートが tcp または udp の場合。 |
server.address |
string |
逆引き DNS 参照をしないでわかる場合は、サーバー アドレス ドメイン名。それ以外の場合は、IP アドレスまたは Unix ドメイン ソケット名。 |
example.com |
常時 |
server.port |
int |
サーバーのポート番号 |
|
トランスポートが tcp または udp の場合。 |
tls.protocol.version |
string |
TLS プロトコルのバージョン。 |
$ |
接続が TLS でセキュリティ保護されている場合。 |
このメトリックは接続期間を追跡していて、理想的には http 接続が複数の要求に使用されるため、バケットは要求期間に使用されるものより長くする必要があります。 たとえば、[0.01, 0.02, 0.05, 0.1, 0.2, 0.5, 1, 2, 5, 10, 30, 60, 120, 300] を使用すると、5 分間のバケットの上限が提供されます。
利用開始になる対象: .NET 8.0
メトリック: kestrel.rejected_connections
属性 |
Type |
説明 |
例 |
プレゼンス |
network.transport |
string |
OSI のトランスポート層またはプロセス間通信方法。 |
$ |
常時 |
network.type |
string |
OSI のネットワーク層または OSI 以外で同等のもの。 |
$ |
トランスポートが tcp または udp の場合。 |
server.address |
string |
逆引き DNS 参照をしないでわかる場合は、サーバー アドレス ドメイン名。それ以外の場合は、IP アドレスまたは Unix ドメイン ソケット名。 |
example.com |
常時 |
server.port |
int |
サーバーのポート番号 |
|
トランスポートが tcp または udp の場合。 |
現在アクティブな数が MaxConcurrentConnections
で構成されている値を超えると、接続は拒否されます。
利用開始になる対象: .NET 8.0
メトリック: kestrel.queued_connections
属性 |
Type |
説明 |
例 |
プレゼンス |
network.transport |
string |
OSI のトランスポート層またはプロセス間通信方法。 |
$ |
常時 |
network.transport |
string |
OSI のネットワーク層または OSI 以外で同等のもの。 |
$ |
トランスポートが tcp または udp の場合。 |
server.address |
string |
逆引き DNS 参照をしないでわかる場合は、サーバー アドレス ドメイン名。それ以外の場合は、IP アドレスまたは Unix ドメイン ソケット名。 |
example.com |
常時 |
server.port |
int |
サーバーのポート番号 |
|
トランスポートが 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 以外で同等のもの。 |
$ |
常時 |
network.protocol.version |
string |
network.protocol.name で指定されているプロトコルのバージョン。 |
$ |
常時 |
network.transport |
string |
OSI のトランスポート層またはプロセス間通信方法。 |
$ |
常時 |
network.transport |
string |
OSI のネットワーク層または OSI 以外で同等のもの。 |
$ |
トランスポートが tcp または udp の場合。 |
server.address |
string |
逆引き DNS 参照をしないでわかる場合は、サーバー アドレス ドメイン名。それ以外の場合は、IP アドレスまたは Unix ドメイン ソケット名。 |
example.com |
常時 |
server.port |
int |
サーバーのポート番号 |
|
トランスポートが tcp または udp の場合。 |
利用開始になる対象: .NET 8.0
メトリック: kestrel.upgraded_connections
属性 |
Type |
説明 |
例 |
プレゼンス |
network.transport |
string |
OSI のトランスポート層またはプロセス間通信方法。 |
$ |
常時 |
network.transport |
string |
OSI のネットワーク層または OSI 以外で同等のもの。 |
$ |
トランスポートが tcp または udp の場合。 |
server.address |
string |
逆引き DNS 参照をしないでわかる場合は、サーバー アドレス ドメイン名。それ以外の場合は、IP アドレスまたは Unix ドメイン ソケット名。 |
example.com |
常時 |
server.port |
int |
サーバーのポート番号 |
|
トランスポートが tcp または udp の場合。 |
カウンターは HTTP/1.1 接続のみを追跡します。
利用開始になる対象: .NET 8.0
メトリック: kestrel.tls_handshake.duration
属性 |
Type |
説明 |
例 |
プレゼンス |
error.type |
string |
例外の型の完全な名前。 |
$ |
例外がスローされた場合。 |
network.transport |
string |
OSI のトランスポート層またはプロセス間通信方法。 |
$ |
常時 |
network.transport |
string |
OSI のネットワーク層または OSI 以外で同等のもの。 |
$ |
トランスポートが tcp または udp の場合。 |
server.address |
string |
逆引き DNS 参照をしないでわかる場合は、サーバー アドレス ドメイン名。それ以外の場合は、IP アドレスまたは Unix ドメイン ソケット名。 |
example.com |
常時 |
server.port |
int |
サーバーのポート番号 |
|
トランスポートが tcp または udp の場合。 |
tls.protocol.version |
string |
TLS プロトコルのバージョン。 |
$ |
接続が 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
属性 |
Type |
説明 |
例 |
プレゼンス |
network.transport |
string |
OSI のトランスポート層またはプロセス間通信方法。 |
$ |
常時 |
network.transport |
string |
OSI のネットワーク層または OSI 以外で同等のもの。 |
$ |
トランスポートが tcp または udp の場合。 |
server.address |
string |
逆引き DNS 参照をしないでわかる場合は、サーバー アドレス ドメイン名。それ以外の場合は、IP アドレスまたは Unix ドメイン ソケット名。 |
example.com |
常時 |
server.port |
int |
サーバーのポート番号 |
|
トランスポートが tcp または udp の場合。 |
利用開始になる対象: .NET 8.0
Microsoft.AspNetCore.Http.Connections
Microsoft.AspNetCore.Http.Connections
メトリックでは、ASP.NET Core SignalR からの接続情報を報告します。
メトリック: signalr.server.connection.duration
属性 |
Type |
説明 |
例 |
プレゼンス |
signalr.connection.status |
string |
SignalR HTTP 接続の終了状態。 |
$ |
常時 |
signalr.transport |
string |
SignalR トランスポートの種類 |
$ |
Always (常に) |
利用開始になる対象: .NET 8.0
Value |
説明 |
normal_closure |
接続は、正常に閉じられました。 |
timeout |
接続は、タイムアウトのために閉じられました。 |
app_shutdown |
接続は、アプリがシャットダウンしているために閉じられました。 |
signalr.transport
は次のいずれかになります。
このメトリックは接続期間を追跡していて、理想的には 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
属性 |
Type |
説明 |
例 |
プレゼンス |
signalr.connection.status |
string |
SignalR HTTP 接続の終了状態。 |
$ |
常時 |
signalr.transport |
string |
SignalR トランスポートの種類 |
$ |
Always (常に) |
利用開始になる対象: .NET 8.0