この記事は英語の原文を日本語に翻訳したものです。原文: https://opentelemetry.io/docs/specs/semconv/dotnet/dotnet-kestrel-metrics/
翻訳元: open-telemetry/semantic-conventions v1.44.0(コミット e10a930)
Kestrel Webサーバーメトリクスに関するセマンティック規約
ステータス: Stable
この記事では、Kestrel Webサーバーに関するセマンティック規約を定義します。
Kestrelエンドポイント
Kestrelエンドポイントは、System.Net.EndPointクラスで表現されますが、これは常にサーバーアドレスやポートに関する情報を提供するわけではありません。
計装はIPEndPoint、UnixDomainSocketEndPoint、NamedPipeEndPointをサポートし、Kestrelメトリクス上で対応するエンドポイントからserver.address属性、server.port属性(IPエンドポイントの場合)、network.type属性、network.transport属性を設定します。
計装がEndPointの実装を認識できない場合、server.address属性をendpoint.ToString()の値に、network.transportの値を対応するendpoint.AddressFamilyプロパティに設定します。
メトリクス: kestrel.active_connections
| Name | Instrument Type | Unit (UCUM) | Description | Stability | Entity Associations |
|---|---|---|---|---|---|
kestrel.active_connections | UpDownCounter | {connection} | サーバー上で現在アクティブな接続数。[1] |
[1]: Meterの名前: Microsoft.AspNetCore.Server.Kestrel; 追加されたバージョン: ASP.NET Core 8.0
Attributes:
| Key | Stability | Requirement Level | Value Type | Description | Example Values |
|---|---|---|---|---|---|
network.transport | Recommended | string | OSIトランスポート層またはプロセス間通信の方式。[1] | tcp; unix | |
network.type | Recommended if the transport is tcp or udp | string | OSIネットワーク層、または非OSIの同等の概念。[2] | ipv4; ipv6 | |
server.address | Recommended | string | 逆引きDNSルックアップなしで利用可能な場合のサーバーのドメイン名。そうでない場合はIPアドレスまたはUNIXドメインソケット名。[3] | example.com; 10.1.2.80; /tmp/my.sock | |
server.port | Recommended | int | サーバーのポート番号。[4] | 80; 8080; 443 |
[1] network.transport: この値は小文字に正規化されるべきです(SHOULD)。
ポート番号を設定する際は、常にトランスポートも設定することを検討してください。トランスポートが分からなければ、ポート番号は曖昧になるためです。たとえば、異なるプロセスがTCPポート12345とUDPポート12345の両方でリスンしている場合があります。
[2] network.type: この値は小文字に正規化されるべきです(SHOULD)。
[3] server.address: クライアント側から観測し、かつ中間サーバーを介して通信している場合、server.addressは、(利用可能であれば)プロキシなどの中間サーバーの背後にあるサーバーのアドレスを表すべきです(SHOULD)。
[4] server.port: クライアント側から観測し、かつ中間サーバーを介して通信している場合、server.portは、(利用可能であれば)プロキシなどの中間サーバーの背後にあるサーバーのポートを表すべきです(SHOULD)。
network.transportには、次のよく知られた値の一覧があります。これらのいずれかが該当する場合は、対応する値を使用しなければなりません(MUST)。そうでない場合は、独自の値を使用してもかまいません(MAY)。
| Value | Description | Stability |
|---|---|---|
pipe | 名前付き、または匿名のパイプ。 | |
quic | QUIC | |
tcp | TCP | |
udp | UDP | |
unix | UNIXドメインソケット |
network.typeには、次のよく知られた値の一覧があります。これらのいずれかが該当する場合は、対応する値を使用しなければなりません(MUST)。そうでない場合は、独自の値を使用してもかまいません(MAY)。
| Value | Description | Stability |
|---|---|---|
ipv4 | IPv4 | |
ipv6 | IPv6 |
メトリクス: kestrel.connection.duration
このメトリクスは、[ 0.01, 0.02, 0.05, 0.1, 0.2, 0.5, 1, 2, 5, 10, 30, 60, 120, 300 ] のExplicitBucketBoundaries advisoryパラメータを指定すべきです(SHOULD)。
| Name | Instrument Type | Unit (UCUM) | Description | Stability | Entity Associations |
|---|---|---|---|---|---|
kestrel.connection.duration | Histogram | s | サーバー上の接続の持続時間。[1] |
[1]: Meterの名前: Microsoft.AspNetCore.Server.Kestrel; 追加されたバージョン: ASP.NET Core 8.0
Attributes:
| Key | Stability | Requirement Level | Value Type | Description | Example Values |
|---|---|---|---|---|---|
error.type | Conditionally Required if and only if an error has occurred. | string | 例外型の完全な名前。[1] | connection_reset; invalid_handshake | |
network.protocol.name | Recommended | string | OSIアプリケーション層、または非OSIの同等の概念。[2] | http; web_sockets | |
network.protocol.version | Recommended | string | ネットワーク通信に使用されるプロトコルの実際のバージョン。[3] | 1.1; 2 | |
network.transport | Recommended | string | OSIトランスポート層またはプロセス間通信の方式。[4] | tcp; unix | |
network.type | Recommended if the transport is tcp or udp | string | OSIネットワーク層、または非OSIの同等の概念。[5] | ipv4; ipv6 | |
server.address | Recommended | string | 逆引きDNSルックアップなしで利用可能な場合のサーバーのドメイン名。そうでない場合はIPアドレスまたはUNIXドメインソケット名。[6] | example.com; 10.1.2.80; /tmp/my.sock | |
server.port | Recommended | int | サーバーのポート番号。[7] | 80; 8080; 443 | |
tls.protocol.version | Recommended | string | ネゴシエーションされたSSL/TLSプロトコルバージョンの元の文字列から解析された、バージョンの数値部分。 | 1.2; 3 |
[1] error.type: .NET 9以降、Kestrelのkestrel.connection.durationメトリクスは、対応するエラーが発生した際に次のエラー型を報告します(原文の英語表記のまま掲載します)。
| Value | Description |
|---|---|
aborted_by_app | The HTTP/1.1 connection was aborted when app code aborted an HTTP request with HttpContext.Abort(). |
app_shutdown_timeout | The connection was aborted during app shutdown. During shutdown, the server stops accepting new connections and HTTP requests, and it is given time for active requests to complete. If the app shutdown timeout is exceeded, all remaining connections are aborted. |
closed_critical_stream | A critical control stream for an HTTP/3 connection was closed. |
connection_reset | The connection was reset while there were active HTTP/2 or HTTP/3 streams on the connection. |
error_after_starting_response | An error such as an unhandled application exception or invalid request body occurred after the response was started, causing an abort of the HTTP/1.1 connection. |
error_reading_headers | An error occurred when decoding HPACK headers in an HTTP/2 HEADERS frame. |
error_writing_headers | An error occurred when encoding HPACK headers in an HTTP/2 HEADERS frame. |
flow_control_queue_size_exceeded | The connection exceeded the outgoing flow control maximum queue size and was closed with INTERNAL_ERROR. This can be caused by an excessive number of HTTP/2 stream resets. For more information, see Microsoft Security Advisory CVE-2023-44487. |
flow_control_window_exceeded | The client sent more data than allowed by the current flow-control window. |
frame_after_stream_close | An HTTP/2 frame was received on a closed stream. |
insufficient_tls_version | The connection doesn’t have TLS 1.2 or greater, as required by HTTP/2. |
invalid_body_reader_state | An error occurred when draining the request body, aborting the HTTP/1.1 connection. This could be caused by app code reading the request body and missing a call to PipeReader.AdvanceTo in a finally block. |
invalid_data_padding | An HTTP/2 HEADER or DATA frame has an invalid amount of padding. |
invalid_frame_length | An HTTP/2 frame was received with an invalid frame payload length. The frame could contain a payload that is not valid for the type, or a DATA frame payload does not match the length specified in the frame header. |
invalid_handshake | An invalid HTTP/2 handshake was received. |
invalid_http_version | The connection received an HTTP request with the wrong version. For example, a browser sends an HTTP/1.1 request to a plain-text HTTP/2 connection. |
invalid_request_headers | The HTTP request contains invalid headers. This error can occur in a number of scenarios: a header might not be allowed by the HTTP protocol, such as a pseudo-header in the HEADERS frame of an HTTP/2 request. A header could also have an invalid value, such as a non-integer content-length, or a header name or value might contain invalid characters. |
invalid_request_line | The first line of an HTTP/1.1 request was invalid, potentially due to invalid content or exceeding the allowed limit. Configured by KestrelServerLimits.MaxRequestLineSize. |
invalid_settings | The connection received an HTTP/2 or HTTP/3 SETTINGS frame with invalid settings. |
invalid_stream_id | An HTTP/2 stream with an invalid stream ID was received. |
invalid_window_update_size | The server received an HTTP/2 WINDOW_UPDATE frame with a zero increment, or an increment that caused a flow-control window to exceed the maximum size. |
io_error | An IOException occurred while reading or writing HTTP/2 or HTTP/3 connection data. |
keep_alive_timeout | There was no activity on the connection, and the keep-alive timeout configured by KestrelServerLimits.KeepAliveTimeout was exceeded. |
max_concurrent_connections_exceeded | The connection exceeded the maximum concurrent connection limit. Configured by KestrelServerLimits.MaxConcurrentConnections. |
max_frame_length_exceeded | The connection received an HTTP/2 frame that exceeded the size limit specified by Http2Limits.MaxFrameSize. |
max_request_body_size_exceeded | The HTTP request body exceeded the maximum request body size limit. Configured by KestrelServerLimits.MaxRequestBodySize. |
max_request_header_count_exceeded | The HTTP request headers exceeded the maximum count limit. Configured by KestrelServerLimits.MaxRequestHeaderCount. |
max_request_headers_total_size_exceeded | The HTTP request headers exceeded the maximum total size limit. Configured by KestrelServerLimits.MaxRequestHeadersTotalSize. |
min_request_body_data_rate | Reading the request body timed out due to data arriving too slowly. Configured by KestrelServerLimits.MinRequestBodyDataRate. |
min_response_data_rate | Writing the response timed out because the client did not read it at the specified minimum data rate. Configured by KestrelServerLimits.MinResponseDataRate. |
missing_stream_end | The connection received an HTTP/2 HEADERS frame for trailers without a stream end flag. |
output_queue_size_exceeded | The connection exceeded the output queue size and was closed with INTERNAL_ERROR. This can be caused by an excessive number of HTTP/2 stream resets. For more information, see Microsoft Security Advisory CVE-2023-44487. |
request_headers_timeout | Request headers timed out while waiting for headers to be received after the request started. Configured by KestrelServerLimits.RequestHeadersTimeout. |
response_content_length_mismatch | The HTTP response body sent data that didn’t match the response’s content-length header. |
server_timeout | The connection timed out with the IConnectionTimeoutFeature. |
stream_creation_error | The HTTP/3 connection received a stream that it wouldn’t accept. For example, the client created duplicate control streams. |
stream_reset_limit_exceeded | The connection received an excessive number of HTTP/2 stream resets and was closed with ENHANCE_YOUR_CALM. For more information, see Microsoft Security Advisory CVE-2023-44487. |
stream_self_dependency | The connection received an HTTP/2 frame that caused a frame to depend on itself. |
tls_handshake_failed | An error occurred during the TLS handshake for a connection. Only reported for HTTP/1.1 and HTTP/2 connections. The TLS handshake for HTTP/3 is internal to QUIC transport. |
tls_not_supported | A TLS handshake was received by an endpoint that isn’t configured to support TLS. |
unexpected_end_of_request_content | The HTTP/1.1 request body ended before the data specified by the content-length header or chunked transfer encoding mechanism was received. |
unexpected_frame | An unexpected HTTP/2 or HTTP/3 frame type was received. The frame type is either unknown, unsupported, or invalid for the current stream state. |
unknown_stream | An HTTP/2 frame was received on an unknown stream. |
write_canceled | The cancellation of a response body write aborted the HTTP/1.1 connection. |
それ以外の場合、error.typeには例外の完全修飾型名が含まれます。
[2] network.protocol.name: この値は小文字に正規化されるべきです(SHOULD)。
[3] network.protocol.version: プロトコルバージョンがネゴシエーションの対象となる場合(ALPNを使用する場合など)、この属性はネゴシエーションされたバージョンに設定されるべきです(SHOULD)。実際のプロトコルバージョンが不明な場合、この属性は設定すべきではありません(SHOULD NOT)。
[4] network.transport: この値は小文字に正規化されるべきです(SHOULD)。
ポート番号を設定する際は、常にトランスポートも設定することを検討してください。トランスポートが分からなければ、ポート番号は曖昧になるためです。たとえば、異なるプロセスがTCPポート12345とUDPポート12345の両方でリスンしている場合があります。
[5] network.type: この値は小文字に正規化されるべきです(SHOULD)。
[6] server.address: クライアント側から観測し、かつ中間サーバーを介して通信している場合、server.addressは、(利用可能であれば)プロキシなどの中間サーバーの背後にあるサーバーのアドレスを表すべきです(SHOULD)。
[7] server.port: クライアント側から観測し、かつ中間サーバーを介して通信している場合、server.portは、(利用可能であれば)プロキシなどの中間サーバーの背後にあるサーバーのポートを表すべきです(SHOULD)。
error.typeには、次のよく知られた値の一覧があります。これらのいずれかが該当する場合は、対応する値を使用しなければなりません(MUST)。そうでない場合は、独自の値を使用してもかまいません(MAY)。
| Value | Description | Stability |
|---|---|---|
_OTHER | 計装が独自の値を定義していない場合に使用するフォールバック用のエラー値。 |
network.transportには、次のよく知られた値の一覧があります。これらのいずれかが該当する場合は、対応する値を使用しなければなりません(MUST)。そうでない場合は、独自の値を使用してもかまいません(MAY)。
| Value | Description | Stability |
|---|---|---|
pipe | 名前付き、または匿名のパイプ。 | |
quic | QUIC | |
tcp | TCP | |
udp | UDP | |
unix | UNIXドメインソケット |
network.typeには、次のよく知られた値の一覧があります。これらのいずれかが該当する場合は、対応する値を使用しなければなりません(MUST)。そうでない場合は、独自の値を使用してもかまいません(MAY)。
| Value | Description | Stability |
|---|---|---|
ipv4 | IPv4 | |
ipv6 | IPv6 |
メトリクス: kestrel.rejected_connections
| Name | Instrument Type | Unit (UCUM) | Description | Stability | Entity Associations |
|---|---|---|---|---|---|
kestrel.rejected_connections | Counter | {connection} | サーバーによって拒否された接続数。[1] |
[1]: 現在のアクティブ数がMaxConcurrentConnectionsで設定された値を超えると、接続は拒否されます。
Meterの名前: Microsoft.AspNetCore.Server.Kestrel; 追加されたバージョン: ASP.NET Core 8.0
Attributes:
| Key | Stability | Requirement Level | Value Type | Description | Example Values |
|---|---|---|---|---|---|
network.transport | Recommended | string | OSIトランスポート層またはプロセス間通信の方式。[1] | tcp; unix | |
network.type | Recommended if the transport is tcp or udp | string | OSIネットワーク層、または非OSIの同等の概念。[2] | ipv4; ipv6 | |
server.address | Recommended | string | 逆引きDNSルックアップなしで利用可能な場合のサーバーのドメイン名。そうでない場合はIPアドレスまたはUNIXドメインソケット名。[3] | example.com; 10.1.2.80; /tmp/my.sock | |
server.port | Recommended | int | サーバーのポート番号。[4] | 80; 8080; 443 |
[1] network.transport: この値は小文字に正規化されるべきです(SHOULD)。
ポート番号を設定する際は、常にトランスポートも設定することを検討してください。トランスポートが分からなければ、ポート番号は曖昧になるためです。たとえば、異なるプロセスがTCPポート12345とUDPポート12345の両方でリスンしている場合があります。
[2] network.type: この値は小文字に正規化されるべきです(SHOULD)。
[3] server.address: クライアント側から観測し、かつ中間サーバーを介して通信している場合、server.addressは、(利用可能であれば)プロキシなどの中間サーバーの背後にあるサーバーのアドレスを表すべきです(SHOULD)。
[4] server.port: クライアント側から観測し、かつ中間サーバーを介して通信している場合、server.portは、(利用可能であれば)プロキシなどの中間サーバーの背後にあるサーバーのポートを表すべきです(SHOULD)。
network.transportには、次のよく知られた値の一覧があります。これらのいずれかが該当する場合は、対応する値を使用しなければなりません(MUST)。そうでない場合は、独自の値を使用してもかまいません(MAY)。
| Value | Description | Stability |
|---|---|---|
pipe | 名前付き、または匿名のパイプ。 | |
quic | QUIC | |
tcp | TCP | |
udp | UDP | |
unix | UNIXドメインソケット |
network.typeには、次のよく知られた値の一覧があります。これらのいずれかが該当する場合は、対応する値を使用しなければなりません(MUST)。そうでない場合は、独自の値を使用してもかまいません(MAY)。
| Value | Description | Stability |
|---|---|---|
ipv4 | IPv4 | |
ipv6 | IPv6 |
メトリクス: kestrel.queued_connections
| Name | Instrument Type | Unit (UCUM) | Description | Stability | Entity Associations |
|---|---|---|---|---|---|
kestrel.queued_connections | UpDownCounter | {connection} | 現在キューに入っており、開始を待っている接続数。[1] |
[1]: Meterの名前: Microsoft.AspNetCore.Server.Kestrel; 追加されたバージョン: ASP.NET Core 8.0
Attributes:
| Key | Stability | Requirement Level | Value Type | Description | Example Values |
|---|---|---|---|---|---|
network.transport | Recommended | string | OSIトランスポート層またはプロセス間通信の方式。[1] | tcp; unix | |
network.type | Recommended if the transport is tcp or udp | string | OSIネットワーク層、または非OSIの同等の概念。[2] | ipv4; ipv6 | |
server.address | Recommended | string | 逆引きDNSルックアップなしで利用可能な場合のサーバーのドメイン名。そうでない場合はIPアドレスまたはUNIXドメインソケット名。[3] | example.com; 10.1.2.80; /tmp/my.sock | |
server.port | Recommended | int | サーバーのポート番号。[4] | 80; 8080; 443 |
[1] network.transport: この値は小文字に正規化されるべきです(SHOULD)。
ポート番号を設定する際は、常にトランスポートも設定することを検討してください。トランスポートが分からなければ、ポート番号は曖昧になるためです。たとえば、異なるプロセスがTCPポート12345とUDPポート12345の両方でリスンしている場合があります。
[2] network.type: この値は小文字に正規化されるべきです(SHOULD)。
[3] server.address: クライアント側から観測し、かつ中間サーバーを介して通信している場合、server.addressは、(利用可能であれば)プロキシなどの中間サーバーの背後にあるサーバーのアドレスを表すべきです(SHOULD)。
[4] server.port: クライアント側から観測し、かつ中間サーバーを介して通信している場合、server.portは、(利用可能であれば)プロキシなどの中間サーバーの背後にあるサーバーのポートを表すべきです(SHOULD)。
network.transportには、次のよく知られた値の一覧があります。これらのいずれかが該当する場合は、対応する値を使用しなければなりません(MUST)。そうでない場合は、独自の値を使用してもかまいません(MAY)。
| Value | Description | Stability |
|---|---|---|
pipe | 名前付き、または匿名のパイプ。 | |
quic | QUIC | |
tcp | TCP | |
udp | UDP | |
unix | UNIXドメインソケット |
network.typeには、次のよく知られた値の一覧があります。これらのいずれかが該当する場合は、対応する値を使用しなければなりません(MUST)。そうでない場合は、独自の値を使用してもかまいません(MAY)。
| Value | Description | Stability |
|---|---|---|
ipv4 | IPv4 | |
ipv6 | IPv6 |
メトリクス: kestrel.queued_requests
| Name | Instrument Type | Unit (UCUM) | Description | Stability | Entity Associations |
|---|---|---|---|---|---|
kestrel.queued_requests | UpDownCounter | {request} | 多重化された接続(HTTP/2とHTTP/3)上で、現在キューに入っており開始を待っているHTTPリクエスト数。[1] |
[1]: Meterの名前: Microsoft.AspNetCore.Server.Kestrel; 追加されたバージョン: ASP.NET Core 8.0
Attributes:
| Key | Stability | Requirement Level | Value Type | Description | Example Values |
|---|---|---|---|---|---|
network.protocol.name | Recommended | string | OSIアプリケーション層、または非OSIの同等の概念。[1] | http; web_sockets | |
network.protocol.version | Recommended | string | ネットワーク通信に使用されるプロトコルの実際のバージョン。[2] | 1.1; 2 | |
network.transport | Recommended | string | OSIトランスポート層またはプロセス間通信の方式。[3] | tcp; unix | |
network.type | Recommended if the transport is tcp or udp | string | OSIネットワーク層、または非OSIの同等の概念。[4] | ipv4; ipv6 | |
server.address | Recommended | string | 逆引きDNSルックアップなしで利用可能な場合のサーバーのドメイン名。そうでない場合はIPアドレスまたはUNIXドメインソケット名。[5] | example.com; 10.1.2.80; /tmp/my.sock | |
server.port | Recommended | int | サーバーのポート番号。[6] | 80; 8080; 443 |
[1] network.protocol.name: この値は小文字に正規化されるべきです(SHOULD)。
[2] network.protocol.version: プロトコルバージョンがネゴシエーションの対象となる場合(ALPNを使用する場合など)、この属性はネゴシエーションされたバージョンに設定されるべきです(SHOULD)。実際のプロトコルバージョンが不明な場合、この属性は設定すべきではありません(SHOULD NOT)。
[3] network.transport: この値は小文字に正規化されるべきです(SHOULD)。
ポート番号を設定する際は、常にトランスポートも設定することを検討してください。トランスポートが分からなければ、ポート番号は曖昧になるためです。たとえば、異なるプロセスがTCPポート12345とUDPポート12345の両方でリスンしている場合があります。
[4] network.type: この値は小文字に正規化されるべきです(SHOULD)。
[5] server.address: クライアント側から観測し、かつ中間サーバーを介して通信している場合、server.addressは、(利用可能であれば)プロキシなどの中間サーバーの背後にあるサーバーのアドレスを表すべきです(SHOULD)。
[6] server.port: クライアント側から観測し、かつ中間サーバーを介して通信している場合、server.portは、(利用可能であれば)プロキシなどの中間サーバーの背後にあるサーバーのポートを表すべきです(SHOULD)。
network.transportには、次のよく知られた値の一覧があります。これらのいずれかが該当する場合は、対応する値を使用しなければなりません(MUST)。そうでない場合は、独自の値を使用してもかまいません(MAY)。
| Value | Description | Stability |
|---|---|---|
pipe | 名前付き、または匿名のパイプ。 | |
quic | QUIC | |
tcp | TCP | |
udp | UDP | |
unix | UNIXドメインソケット |
network.typeには、次のよく知られた値の一覧があります。これらのいずれかが該当する場合は、対応する値を使用しなければなりません(MUST)。そうでない場合は、独自の値を使用してもかまいません(MAY)。
| Value | Description | Stability |
|---|---|---|
ipv4 | IPv4 | |
ipv6 | IPv6 |
メトリクス: kestrel.upgraded_connections
| Name | Instrument Type | Unit (UCUM) | Description | Stability | Entity Associations |
|---|---|---|---|---|---|
kestrel.upgraded_connections | UpDownCounter | {connection} | 現在アップグレードされている(WebSockets)接続数。[1] |
[1]: このカウンターはHTTP/1.1接続のみを追跡します。
Meterの名前: Microsoft.AspNetCore.Server.Kestrel; 追加されたバージョン: ASP.NET Core 8.0
Attributes:
| Key | Stability | Requirement Level | Value Type | Description | Example Values |
|---|---|---|---|---|---|
network.transport | Recommended | string | OSIトランスポート層またはプロセス間通信の方式。[1] | tcp; unix | |
network.type | Recommended if the transport is tcp or udp | string | OSIネットワーク層、または非OSIの同等の概念。[2] | ipv4; ipv6 | |
server.address | Recommended | string | 逆引きDNSルックアップなしで利用可能な場合のサーバーのドメイン名。そうでない場合はIPアドレスまたはUNIXドメインソケット名。[3] | example.com; 10.1.2.80; /tmp/my.sock | |
server.port | Recommended | int | サーバーのポート番号。[4] | 80; 8080; 443 |
[1] network.transport: この値は小文字に正規化されるべきです(SHOULD)。
ポート番号を設定する際は、常にトランスポートも設定することを検討してください。トランスポートが分からなければ、ポート番号は曖昧になるためです。たとえば、異なるプロセスがTCPポート12345とUDPポート12345の両方でリスンしている場合があります。
[2] network.type: この値は小文字に正規化されるべきです(SHOULD)。
[3] server.address: クライアント側から観測し、かつ中間サーバーを介して通信している場合、server.addressは、(利用可能であれば)プロキシなどの中間サーバーの背後にあるサーバーのアドレスを表すべきです(SHOULD)。
[4] server.port: クライアント側から観測し、かつ中間サーバーを介して通信している場合、server.portは、(利用可能であれば)プロキシなどの中間サーバーの背後にあるサーバーのポートを表すべきです(SHOULD)。
network.transportには、次のよく知られた値の一覧があります。これらのいずれかが該当する場合は、対応する値を使用しなければなりません(MUST)。そうでない場合は、独自の値を使用してもかまいません(MAY)。
| Value | Description | Stability |
|---|---|---|
pipe | 名前付き、または匿名のパイプ。 | |
quic | QUIC | |
tcp | TCP | |
udp | UDP | |
unix | UNIXドメインソケット |
network.typeには、次のよく知られた値の一覧があります。これらのいずれかが該当する場合は、対応する値を使用しなければなりません(MUST)。そうでない場合は、独自の値を使用してもかまいません(MAY)。
| Value | Description | Stability |
|---|---|---|
ipv4 | IPv4 | |
ipv6 | IPv6 |
メトリクス: kestrel.tls_handshake.duration
このメトリクスは、[ 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 ] のExplicitBucketBoundaries advisoryパラメータを指定すべきです(SHOULD)。
| Name | Instrument Type | Unit (UCUM) | Description | Stability | Entity Associations |
|---|---|---|---|---|---|
kestrel.tls_handshake.duration | Histogram | s | サーバー上のTLSハンドシェイクの持続時間。[1] |
[1]: Meterの名前: Microsoft.AspNetCore.Server.Kestrel; 追加されたバージョン: ASP.NET Core 8.0
Attributes:
| Key | Stability | Requirement Level | Value Type | Description | Example Values |
|---|---|---|---|---|---|
error.type | Conditionally Required if and only if an error has occurred. | string | 例外型の完全な名前。[1] | System.OperationCanceledException; Contoso.MyException | |
network.transport | Recommended | string | OSIトランスポート層またはプロセス間通信の方式。[2] | tcp; unix | |
network.type | Recommended if the transport is tcp or udp | string | OSIネットワーク層、または非OSIの同等の概念。[3] | ipv4; ipv6 | |
server.address | Recommended | string | 逆引きDNSルックアップなしで利用可能な場合のサーバーのドメイン名。そうでない場合はIPアドレスまたはUNIXドメインソケット名。[4] | example.com; 10.1.2.80; /tmp/my.sock | |
server.port | Recommended | int | サーバーのポート番号。[5] | 80; 8080; 443 | |
tls.protocol.version | Recommended | string | ネゴシエーションされたSSL/TLSプロトコルバージョンの元の文字列から解析された、バージョンの数値部分。 | 1.2; 3 |
[1] error.type: TLSハンドシェイクが失敗した際の例外型を記録します。
[2] network.transport: この値は小文字に正規化されるべきです(SHOULD)。
ポート番号を設定する際は、常にトランスポートも設定することを検討してください。トランスポートが分からなければ、ポート番号は曖昧になるためです。たとえば、異なるプロセスがTCPポート12345とUDPポート12345の両方でリスンしている場合があります。
[3] network.type: この値は小文字に正規化されるべきです(SHOULD)。
[4] server.address: クライアント側から観測し、かつ中間サーバーを介して通信している場合、server.addressは、(利用可能であれば)プロキシなどの中間サーバーの背後にあるサーバーのアドレスを表すべきです(SHOULD)。
[5] server.port: クライアント側から観測し、かつ中間サーバーを介して通信している場合、server.portは、(利用可能であれば)プロキシなどの中間サーバーの背後にあるサーバーのポートを表すべきです(SHOULD)。
error.typeには、次のよく知られた値の一覧があります。これらのいずれかが該当する場合は、対応する値を使用しなければなりません(MUST)。そうでない場合は、独自の値を使用してもかまいません(MAY)。
| Value | Description | Stability |
|---|---|---|
_OTHER | 計装が独自の値を定義していない場合に使用するフォールバック用のエラー値。 |
network.transportには、次のよく知られた値の一覧があります。これらのいずれかが該当する場合は、対応する値を使用しなければなりません(MUST)。そうでない場合は、独自の値を使用してもかまいません(MAY)。
| Value | Description | Stability |
|---|---|---|
pipe | 名前付き、または匿名のパイプ。 | |
quic | QUIC | |
tcp | TCP | |
udp | UDP | |
unix | UNIXドメインソケット |
network.typeには、次のよく知られた値の一覧があります。これらのいずれかが該当する場合は、対応する値を使用しなければなりません(MUST)。そうでない場合は、独自の値を使用してもかまいません(MAY)。
| Value | Description | Stability |
|---|---|---|
ipv4 | IPv4 | |
ipv6 | IPv6 |
メトリクス: kestrel.active_tls_handshakes
| Name | Instrument Type | Unit (UCUM) | Description | Stability | Entity Associations |
|---|---|---|---|---|---|
kestrel.active_tls_handshakes | UpDownCounter | {handshake} | サーバー上で現在進行中のTLSハンドシェイク数。[1] |
[1]: Meterの名前: Microsoft.AspNetCore.Server.Kestrel; 追加されたバージョン: ASP.NET Core 8.0
Attributes:
| Key | Stability | Requirement Level | Value Type | Description | Example Values |
|---|---|---|---|---|---|
network.transport | Recommended | string | OSIトランスポート層またはプロセス間通信の方式。[1] | tcp; unix | |
network.type | Recommended if the transport is tcp or udp | string | OSIネットワーク層、または非OSIの同等の概念。[2] | ipv4; ipv6 | |
server.address | Recommended | string | 逆引きDNSルックアップなしで利用可能な場合のサーバーのドメイン名。そうでない場合はIPアドレスまたはUNIXドメインソケット名。[3] | example.com; 10.1.2.80; /tmp/my.sock | |
server.port | Recommended | int | サーバーのポート番号。[4] | 80; 8080; 443 |
[1] network.transport: この値は小文字に正規化されるべきです(SHOULD)。
ポート番号を設定する際は、常にトランスポートも設定することを検討してください。トランスポートが分からなければ、ポート番号は曖昧になるためです。たとえば、異なるプロセスがTCPポート12345とUDPポート12345の両方でリスンしている場合があります。
[2] network.type: この値は小文字に正規化されるべきです(SHOULD)。
[3] server.address: クライアント側から観測し、かつ中間サーバーを介して通信している場合、server.addressは、(利用可能であれば)プロキシなどの中間サーバーの背後にあるサーバーのアドレスを表すべきです(SHOULD)。
[4] server.port: クライアント側から観測し、かつ中間サーバーを介して通信している場合、server.portは、(利用可能であれば)プロキシなどの中間サーバーの背後にあるサーバーのポートを表すべきです(SHOULD)。
network.transportには、次のよく知られた値の一覧があります。これらのいずれかが該当する場合は、対応する値を使用しなければなりません(MUST)。そうでない場合は、独自の値を使用してもかまいません(MAY)。
| Value | Description | Stability |
|---|---|---|
pipe | 名前付き、または匿名のパイプ。 | |
quic | QUIC | |
tcp | TCP | |
udp | UDP | |
unix | UNIXドメインソケット |
network.typeには、次のよく知られた値の一覧があります。これらのいずれかが該当する場合は、対応する値を使用しなければなりません(MUST)。そうでない場合は、独自の値を使用してもかまいません(MAY)。
| Value | Description | Stability |
|---|---|---|
ipv4 | IPv4 | |
ipv6 | IPv6 |