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 操作が終了したエラーのクラスを示します。 要求がエラーで終了した場合。
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
名前 インストルメントの種類 単位 (UCUM) 説明
http.server.active_requests UpDownCounter {request} 現在処理されている同時 HTTP 要求の数を測定します。
属性 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
名前 インストルメントの種類 単位 (UCUM) 説明
aspnetcore.routing.match_attempts カウンタ {match_attempt} エンドポイントとの照合が試みられた要求の数。
属性 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
名前 インストルメントの種類 単位 (UCUM) 説明
aspnetcore.diagnostics.exceptions カウンタ {exception} 例外処理ミドルウェアによってキャッチされた例外の数。
属性 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
名前 インストルメントの種類 単位 (UCUM) 説明
aspnetcore.rate_limiting.active_request_leases UpDownCounter {request} レート制限リースを保持しているサーバーで現在アクティブになっている要求の数。
属性 Type 説明 プレゼンス
aspnetcore.rate_limiting.policy string レート制限ポリシーの名前。 要求に一致したエンドポイントにレート制限ポリシーがある場合。

利用開始になる対象: .NET 8.0

メトリック: aspnetcore.rate_limiting.request_lease.duration
名前 インストルメントの種類 単位 (UCUM) 説明
aspnetcore.rate_limiting.request_lease.duration ヒストグラム s サーバー上の要求によって保持されているレート制限リースの継続時間。
属性 Type 説明 プレゼンス
aspnetcore.rate_limiting.policy string レート制限ポリシーの名前。 要求に一致したエンドポイントにレート制限ポリシーがある場合。

利用開始になる対象: .NET 8.0

メトリック: aspnetcore.rate_limiting.queued_requests
名前 インストルメントの種類 単位 (UCUM) 説明
aspnetcore.rate_limiting.queued_requests UpDownCounter {request} レート制限リースの取得を待機して現在キューに登録されている要求の数。
属性 Type 説明 プレゼンス
aspnetcore.rate_limiting.policy string レート制限ポリシーの名前。 要求に一致したエンドポイントにレート制限ポリシーがある場合。

利用開始になる対象: .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 レート制限ポリシーの名前。 要求に一致したエンドポイントにレート制限ポリシーがある場合。
aspnetcore.rate_limiting.result string レート制限の結果は、リースが取得されたかどうかを示すか、または拒否された理由を含みます。 $ Always (常に)

利用開始になる対象: .NET 8.0

メトリック: aspnetcore.rate_limiting.requests
名前 インストルメントの種類 単位 (UCUM) 説明
aspnetcore.rate_limiting.requests カウンタ {request} レート制限リースの取得を試みた要求の数。
属性 Type 説明 プレゼンス
aspnetcore.rate_limiting.policy string レート制限ポリシーの名前。 要求に一致したエンドポイントにレート制限ポリシーがある場合。
aspnetcore.rate_limiting.result string レート制限の結果は、リースが取得されたかどうかを示すか、または拒否された理由を含みます。 $ 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 ヘッダーの値がキャッシュにあるかどうかを示す値。 $ Always (常に)

利用開始になる対象: .NET 8.0

Microsoft.AspNetCore.Server.Kestrel

Microsoft.AspNetCore.Server.Kestrel メトリックでは、ASP.NET Core Kestrel Web サーバーからの HTTP 接続情報を報告します。

メトリック: kestrel.active_connections
名前 インストルメントの種類 単位 (UCUM) 説明
kestrel.active_connections UpDownCounter {connection} サーバーで現在アクティブになっている接続の数。
属性 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
名前 インストルメントの種類 単位 (UCUM) 説明
kestrel.connection.duration ヒストグラム s サーバーでの接続の継続時間。
属性 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
名前 インストルメントの種類 単位 (UCUM) 説明
kestrel.rejected_connections カウンタ {connection} サーバーによって拒否された接続の数。
属性 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
名前 インストルメントの種類 単位 (UCUM) 説明
kestrel.queued_connections UpDownCounter {connection} 現在キューに登録され、開始を待機している接続の数。
属性 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
名前 インストルメントの種類 単位 (UCUM) 説明
kestrel.upgraded_connections UpDownCounter {connection} 現在アップグレードされている接続の数 (WebSocket)。
属性 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
名前 インストルメントの種類 単位 (UCUM) 説明
kestrel.tls_handshake.duration ヒストグラム s サーバーでの TLS ハンドシェイクの継続時間。
属性 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
名前 インストルメントの種類 単位 (UCUM) 説明
kestrel.active_tls_handshakes UpDownCounter {handshake} サーバーで現在進行中の TLS ハンドシェイクの数。
属性 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
名前 インストルメントの種類 単位 (UCUM) 説明
signalr.server.connection.duration ヒストグラム s サーバーでの接続の継続時間。
属性 Type 説明 プレゼンス
signalr.connection.status string SignalR HTTP 接続の終了状態。 $ 常時
signalr.transport string SignalR トランスポートの種類 $ 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 接続の終了状態。 $ 常時
signalr.transport string SignalR トランスポートの種類 $ Always (常に)

利用開始になる対象: .NET 8.0