Statistics
Every connection manager has a statistics tree rooted at http.<stat_prefix>. with the following statistics:
Name | Type | Description |
---|---|---|
downstream_cx_total | Counter | Total connections |
downstream_cx_ssl_total | Counter | Total TLS connections |
downstream_cx_http1_total | Counter | Total HTTP/1.1 connections |
downstream_cx_upgrades_total | Counter | Total successfully upgraded connections. These are also counted as total http1/http2 connections. |
downstream_cx_http2_total | Counter | Total HTTP/2 connections |
downstream_cx_http3_total | Counter | Total HTTP/3 connections |
downstream_cx_destroy | Counter | Total connections destroyed |
downstream_cx_destroy_remote | Counter | Total connections destroyed due to remote close |
downstream_cx_destroy_local | Counter | Total connections destroyed due to local close |
downstream_cx_destroy_active_rq | Counter | Total connections destroyed with 1+ active request |
downstream_cx_destroy_local_active_rq | Counter | Total connections destroyed locally with 1+ active request |
downstream_cx_destroy_remote_active_rq | Counter | Total connections destroyed remotely with 1+ active request |
downstream_cx_active | Gauge | Total active connections |
downstream_cx_ssl_active | Gauge | Total active TLS connections |
downstream_cx_http1_active | Gauge | Total active HTTP/1.1 connections |
downstream_cx_upgrades_active | Gauge | Total active upgraded connections. These are also counted as active http1/http2 connections. |
downstream_cx_http2_active | Gauge | Total active HTTP/2 connections |
downstream_cx_http3_active | Gauge | Total active HTTP/3 connections |
downstream_cx_protocol_error | Counter | Total protocol errors |
downstream_cx_length_ms | Histogram | Connection length milliseconds |
downstream_cx_rx_bytes_total | Counter | Total bytes received |
downstream_cx_rx_bytes_buffered | Gauge | Total received bytes currently buffered |
downstream_cx_tx_bytes_total | Counter | Total bytes sent |
downstream_cx_tx_bytes_buffered | Gauge | Total sent bytes currently buffered |
downstream_cx_drain_close | Counter | Total connections closed due to draining |
downstream_cx_idle_timeout | Counter | Total connections closed due to idle timeout |
downstream_cx_max_duration_reached | Counter | Total connections closed due to max connection duration |
downstream_cx_max_requests_reached | Counter | Total connections closed due to max requests per connection |
downstream_cx_overload_disable_keepalive | Counter | Total connections for which HTTP 1.x keepalive has been disabled due to Envoy overload |
downstream_flow_control_paused_reading_total | Counter | Total number of times reads were disabled due to flow control |
downstream_flow_control_resumed_reading_total | Counter | Total number of times reads were enabled on the connection due to flow control |
downstream_rq_total | Counter | Total requests |
downstream_rq_http1_total | Counter | Total HTTP/1.1 requests |
downstream_rq_http2_total | Counter | Total HTTP/2 requests |
downstream_rq_http3_total | Counter | Total HTTP/3 requests |
downstream_rq_active | Gauge | Total active requests |
downstream_rq_rejected_via_ip_detection | Counter | Total requests rejected because the original IP detection failed |
downstream_rq_response_before_rq_complete | Counter | Total responses sent before the request was complete |
downstream_rq_rx_reset | Counter | Total request resets received |
downstream_rq_tx_reset | Counter | Total request resets sent |
downstream_rq_non_relative_path | Counter | Total requests with a non-relative HTTP path |
downstream_rq_too_large | Counter | Total requests resulting in a 413 due to buffering an overly large body |
downstream_rq_completed | Counter | Total requests that resulted in a response (e.g. does not include aborted requests) |
downstream_rq_failed_path_normalization | Counter | Total requests redirected due to different original and normalized URL paths or when path normalization failed. This action is configured by setting the path_with_escaped_slashes_action config option. |
downstream_rq_1xx | Counter | Total 1xx responses |
downstream_rq_2xx | Counter | Total 2xx responses |
downstream_rq_3xx | Counter | Total 3xx responses |
downstream_rq_4xx | Counter | Total 4xx responses |
downstream_rq_5xx | Counter | Total 5xx responses |
downstream_rq_ws_on_non_ws_route | Counter | Total upgrade requests rejected by non upgrade routes. This now applies both to WebSocket and non-WebSocket upgrades |
downstream_rq_time | Histogram | Total time for request and response (milliseconds) |
downstream_rq_idle_timeout | Counter | Total requests closed due to idle timeout |
downstream_rq_max_duration_reached | Counter | Total requests closed due to max duration reached |
downstream_rq_timeout | Counter | Total requests closed due to a timeout on the request path |
downstream_rq_overload_close | Counter | Total requests closed due to Envoy overload |
downstream_rq_redirected_with_normalized_path | Counter | Total requests redirected due to different original and normalized URL paths. This action is configured by setting the path_with_escaped_slashes_action config option. |
rs_too_large | Counter | Total response errors due to buffering an overly large body |
Per user agent statistics
Additional per user agent statistics are rooted at http.<stat_prefix>.user_agent.<user_agent>. Currently Envoy matches user agent for both iOS (ios) and Android (android) and produces the following statistics:
Name | Type | Description |
---|---|---|
downstream_cx_total | Counter | Total connections |
downstream_cx_destroy_remote_active_rq | Counter | Total connections destroyed remotely with 1+ active requests |
downstream_rq_total | Counter | Total requests |
Per listener statistics
Per listener statistics are rooted at listener.<address>.
HTTP per listener statistics
Additional HTTP statistics are of the form http.<stat_prefix>. with the following statistics:
Name | Type | Description |
---|---|---|
downstream_rq_completed | Counter | Total responses |
downstream_rq_1xx | Counter | Total 1xx responses |
downstream_rq_2xx | Counter | Total 2xx responses |
downstream_rq_3xx | Counter | Total 3xx responses |
downstream_rq_4xx | Counter | Total 4xx responses |
downstream_rq_5xx | Counter | Total 5xx responses |
HTTP/3 per listener statistics
HTTP/3 statistics with the form of http3.downstream.<stat_prefix>.:
Name | Type | Description |
---|---|---|
<tx/rx>.quicconnection_close_error_code<errorcode> | Counter | A collection of counters that are lazily initialized to record each quic connection close error code that’s present. |
<tx/rx>.quic_reset_stream_error_code<error_code> | Counter | A collection of counters that that lazily initialized to record quic stream reset error codes. |
Per codec statistics
Each codec has the option of adding per-codec statistics. http1, http2, and http3 all have codec stats.
HTTP/1 codec statistics
On the downstream side all http1 statistics are rooted at http1.
On the upstream side all http1 statistics are rooted at cluster.<name>.http1.
Name | Type | Description |
---|---|---|
dropped_headers_with_underscores | Counter | Total number of dropped headers with names containing underscores. This action is configured by setting the headers_with_underscores_action config setting. |
metadata_not_supported_error | Counter | Total number of metadata dropped during HTTP/1 encoding |
response_flood | Counter | Total number of connections closed due to response flooding |
requests_rejected_with_underscores_in_headers | Counter | Total numbers of rejected requests due to header names containing underscores. This action is configured by setting the headers_with_underscores_action config setting. |
HTTP/2 codec statistics
On the downstream side all http2 statistics are rooted at http2.
On the upstream side all http2 statistics are rooted at cluster.<name>.http2.
Name | Type | Description |
---|---|---|
dropped_headers_with_underscores | Counter | Total number of dropped headers with names containing underscores. This action is configured by setting the headers_with_underscores_action config setting. |
header_overflow | Counter | Total number of connections reset due to the headers being larger than the configured value. |
headers_cb_no_stream | Counter | Total number of errors where a header callback is called without an associated stream. This tracks an unexpected occurrence due to an as yet undiagnosed bug |
inbound_empty_frames_flood | Counter | Total number of connections terminated for exceeding the limit on consecutive inbound frames with an empty payload and no end stream flag. The limit is configured by setting the max_consecutive_inbound_frames_with_empty_payload config setting. |
inbound_priority_frames_flood | Counter | Total number of connections terminated for exceeding the limit on inbound frames of type PRIORITY. The limit is configured by setting the max_inbound_priority_frames_per_stream config setting. |
inbound_window_update_frames_flood | Counter | Total number of connections terminated for exceeding the limit on inbound frames of type WINDOW_UPDATE. The limit is configured by setting the max_inbound_window_updateframes_per_data_frame_sent config setting. |
metadata_empty_frames | Counter | Total number of metadata frames that were received and contained empty maps. |
outbound_flood | Counter | Total number of connections terminated for exceeding the limit on outbound frames of all types. The limit is configured by setting the max_outbound_frames config setting. |
outbound_control_flood | Counter | Total number of connections terminated for exceeding the limit on outbound frames of types PING, SETTINGS and RST_STREAM. The limit is configured by setting the max_outbound_control_frames config setting. |
requests_rejected_with_underscores_in_headers | Counter | Total numbers of rejected requests due to header names containing underscores. This action is configured by setting the headers_with_underscores_action config setting. |
rx_messaging_error | Counter | Total number of invalid received frames that violated section 8 of the HTTP/2 spec. This will result in a tx_reset |
rx_reset | Counter | Total number of reset stream frames received by Envoy |
stream_refused_errors | Counter | Total number of invalid frames received by Envoy with a REFUSED_STREAM error code |
trailers | Counter | Total number of trailers seen on requests coming from downstream |
tx_flush_timeout | Counter | Total number of stream idle timeouts waiting for open stream window to flush the remainder of a stream |
tx_reset | Counter | Total number of reset stream frames transmitted by Envoy |
keepalive_timeout | Counter | Total number of connections closed due to keepalive timeout |
streams_active | Gauge | Active streams as observed by the codec |
pending_send_bytes | Gauge | Currently buffered body data in bytes waiting to be written when stream/connection window is opened. |
deferred_stream_close | Gauge | Number of HTTP/2 streams where the stream has been closed but processing of the stream close has been deferred due to network backup. This is expected to be incremented when a downstream stream is backed up and the corresponding upstream stream has received end stream but we defer processing of the upstream stream close due to downstream backup. This is decremented as we finally delete the stream when either the deferred close stream has its buffered data drained or receives a reset. |
Attention
The HTTP/2 streams_active gauge may be greater than the HTTP connection manager downstream_rq_active gauge due to differences in stream accounting between the codec and the HTTP connection manager.
HTTP/3 codec statistics
On the downstream side all http3 statistics are rooted at http3.
On the upstream side all http3 statistics are rooted at cluster.<name>.http3.
Name | Type | Description |
---|---|---|
dropped_headers_with_underscores | Counter | Total number of dropped headers with names containing underscores. This action is configured by setting the headers_with_underscores_action config setting. |
requests_rejected_with_underscores_in_headers | Counter | Total numbers of rejected requests due to header names containing underscores. This action is configured by setting the headers_with_underscores_action config setting. |
rx_reset | Counter | Total number of reset stream frames received by Envoy |
tx_reset | Counter | Total number of reset stream frames transmitted by Envoy |
metadata_not_supported_error | Counter | Total number of metadata dropped during HTTP/3 encoding |
quic_version_h3_29 | Counter | Total number of quic connections that use transport version h3-29. QUIC h3-29 is unsupported by default and this counter will be removed when h3-29 support is completely removed. |
quic_version_rfc_v1 | Counter | Total number of quic connections that use transport version rfc-v1. |
Tracing statistics
Tracing statistics are emitted when tracing decisions are made. All tracing statistics are rooted at http.<stat_prefix>.tracing. with the following statistics:
Name | Type | Description |
---|---|---|
random_sampling | Counter | Total number of traceable decisions by random sampling |
service_forced | Counter | Total number of traceable decisions by server runtime flag tracing.global_enabled |
client_enabled | Counter | Total number of traceable decisions by request header x-envoy-force-trace |
not_traceable | Counter | Total number of non-traceable decisions by request id |
health_check | Counter | Total number of non-traceable decisions by health check |