When you set up a tracing session with Konnect Debugger, it collects and reports spans that are part of the request-response flow. The following sections describe the spans available in Konnect Debugger.
On this page, the term “3p” or “3rd party” refers to any network interaction outside the main client → Kong → upstream request flow, such as DNS lookups or calls from Kong to external services like auth providers, Redis, or metadata APIs.
kong
The root span.
This span has the following attributes:
|
Name |
Description |
|---|---|
url.full
|
Full url, without query parameters |
client.address
|
Remote address of the actual client making the request, including any client that is communicating through a proxy, if possible.
|
client.port
|
Remote port of the client making the request, including any client that is communicating through a proxy, if possible.
|
network.peer.address
|
IP of the network peer that is connecting to Kong |
network.peer.port
|
Port of the network peer that is connecting to Kong |
server.address
|
Kong Gateway can listen on multiple IP addresses. This is the IP address at which Kong received the request. |
server.port
|
The port at which Kong received the request. |
network.protocol.name
|
Name of the network protocol. Debugger only supports http.
|
http.request.method
|
HTTP request method |
proxy.kong.request.id
|
Unique ID created by Kong Gateway for each request. Useful for debugging. |
proxy.kong.request.time
|
Time taken to process this request as measured from reading the first byte from the client, to writing the last byte to the client. Logging handler time is not part of this calculation. |
proxy.kong.http.request.body.size
|
Request body length in bytes. Request header size is not included. |
http.request.size
|
Request body size and request headers size in bytes. |
proxy.kong.http.response.body.size
|
Response body length in bytes. Response header size is not included. |
http.response.size
|
Response body size and response headers size in bytes. |
url.scheme
|
Protocol identifier |
network.protocol.version
|
Version of the HTTP protocol used in establishing connection [1.2, 2.0]. |
proxy.kong.request.host
|
The value of Host as determined by Kong Gateway in the following order of precedence:
|
proxy.kong.consumer.id
|
Authenticated Consumer ID, if present. |
proxy.kong.upstream.id
|
Resolved Upstream ID. |
proxy.kong.upstream.status_code
|
Status code returned by the upstream to Kong Gateway. |
http.response.status_code
|
Status code sent back by Kong Gateway to client. |
proxy.kong.latency.3p.dns.total_io
|
Time spent performing synchronous DNS I/O operations. |
proxy.kong.latency.3p.http_client.total_io
|
Time spent on third party HTTP calls (for example, talking to an auth server or fetching metadata from a external HTTP API). |
proxy.kong.latency.3p.redis.total_io
|
Time spent on executing Redis operations and performing network I/O to redis |
proxy.kong.latency.3p.tcpsock.total_io
|
Time spent performing raw TCP socket I/O operations that are not using the internal instrumented DNS, HTTP or Redis clients. |
proxy.kong.latency.3p.total_io
|
Total time spent performing all third-party I/O operations (DNS + Redis + HTTP + Raw) |
proxy.kong.latency.client
|
Time spent waiting for the client to send or receive data. This attribute includes time spent waiting for client to finish TLS handshake (span tls_handshake), send all HTTP headers (span read_client_http_headers), send the request body (span read_client_http_body) and the time taken for the client to read the full response (span wait_for_client_read).
|
proxy.kong.latency.upstream.read_headers_duration
|
Time spent reading response headers from the upstream. |
proxy.kong.latency.upstream.read_body_duration
|
Time spent reading the response body from the upstream. |
proxy.kong.latency.upstream
|
Time between the connection to the upstream and the last byte of the response.
This factors in attempts to connect to a healthy upstream if multiple upstreams were configured.
See the span upstream.selection to see a breakdown of each failed attempt and the successful attempt.
|
proxy.kong.latency.total
|
Time between the first byte into Kong and the last byte out of Kong |
proxy.kong.latency.internal
|
Time taken by Kong Gateway to process the request. Excludes client and upstream read/write times, and third party I/O. This is the actual contribution of Kong Gateway itself to the latency of the request. |
http.request.header.connection
|
The value of the Connection header if present.
A value of close implies that the client does not want to use KeepAlive.
|
proxy.kong.client.connection.request_count
|
The total number of HTTP requests sent by the client over the same reused underlying TCP connection. |
tls.resumed
|
Whether the TLS session was resumed.
A value of true implies that the client is reusing an existing TLS (and TCP) connection.
|
tls.client.subject
|
x509 client DN (if mTLS). |
tls.server.subject
|
x509 DN for cert Kong presented. |
tls.cipher
|
Negotiated cipher. |
kong.phase.certificate
A span capturing the execution of the certificate phase of request processing. Any plugins configured for running in this phase will show up as individual child spans.
This phase runs before the TLS handshake. Plugins usually use this phase to set up the server certificate they want to present to clients.
kong.certificate.plugin.plugin_name
A span capturing the execution of a plugin configured to run in the certificate phase. Multiple such spans can occur in a trace.
This span has the following attributes:
|
Name |
Description |
|---|---|
proxy.kong.plugin.id
|
ID of the plugin configuration that ran. |
proxy.kong.plugin.http.response.status_code v3.14+
|
HTTP status code set by the plugin when exiting early via kong.response.exit(). Only present when the plugin terminates the request.
|
proxy.kong.plugin.http.response.status_message v3.14+
|
HTTP status message set by the plugin when exiting early via kong.response.exit(). Only present when the plugin terminates the request.
|