Skip to content

Every metric Arion emits, by family, with types and labels, and where to scrape them.

This page lists the metrics Arion emits when built with the metrics feature, grouped by family.

Metrics are exposed three ways: in Prometheus text format at the admin endpoint /stats/prometheus (requires the prometheus build feature and the admin listener), in Envoy-style text at admin /stats, and pushed over OTLP when envoy_bootstrap.stats_sinks and stats_flush_interval are configured. Prometheus names join the family and metric name with an underscore (http_downstream_rq_total); the /stats output prints family.<label values>.name: value. Histograms use millisecond buckets 5, 10, 50, 100, 500, 1000, 5000, 10000, +Inf (bytes buckets for mcp_tool_response_bytes) and export _bucket, _sum and _count series in Prometheus format. Any built-in metric can be renamed with the top-level metrics.rename map; see metrics.

Listener (listeners_*)

NameTypeLabelsDescription
downstream_cx_totalcounterlistenerConnections accepted.
downstream_cx_destroycounterlistenerConnections destroyed.
downstream_cx_activegaugelistenerActive connections.
downstream_cx_length_mshistogramlistenerConnection lifetime in milliseconds.
no_filter_chain_matchcounterlistenerConnections that matched no filter chain.

HTTP (http_*)

Emitted by the HTTP connection manager.

NameTypeLabelsDescription
downstream_cx_totalcounterlistenerHTTP connections.
downstream_cx_ssl_totalcounterlistenerHTTP connections over TLS.
downstream_cx_ssl_activegaugelistenerActive TLS HTTP connections.
downstream_cx_destroycounterlistenerHTTP connections destroyed.
downstream_cx_activegaugelistenerActive HTTP connections.
downstream_cx_length_mshistogramlistenerHTTP connection lifetime in milliseconds.
downstream_cx_rx_bytes_totalcounterlistenerBytes received on HTTP connections.
downstream_cx_tx_bytes_totalcounterlistenerBytes sent on HTTP connections.
downstream_rq_totalcounterlistenerRequests received.
downstream_rq_activegaugelistenerRequests in flight.
downstream_rq_1xx … downstream_rq_5xxcounterlistenerResponses by status class (five metrics).
downstream_cx_ws_upgrades_totalcounterlistenerSuccessful WebSocket upgrades.
downstream_cx_ws_upgrades_activegaugelistenerActive upgraded connections.
downstream_rq_ws_on_non_ws_routecounterlistenerUpgrade requests rejected by non-upgrade routes.

TCP proxy (tcp_*)

NameTypeLabelsDescription
downstream_cx_totalcounterlistenerTCP connections.
downstream_cx_destroycounterlistenerTCP connections destroyed.
downstream_cx_activegaugelistenerActive TCP connections.
downstream_cx_length_mshistogramlistenerTCP connection lifetime in milliseconds.
cx_rx_bytes_receivedcounterlistenerBytes received on proxied TCP connections.
cx_tx_bytes_sentcounterlistenerBytes sent on proxied TCP connections.

TLS (tls_*)

NameTypeLabelsDescription
handshakecounterlistenerSuccessful TLS handshakes.

Cluster (cluster_*)

NameTypeLabelsDescription
upstream_rq_totalcounterclusterUpstream requests.
upstream_rq_activegaugeclusterUpstream requests in flight.
upstream_rq_timehistogramclusterUpstream request time in milliseconds.
upstream_rq_timeoutcounterclusterRequests that hit the route timeout.
upstream_rq_per_try_timeoutcounterclusterAttempts that hit the per-try timeout.
upstream_rq_retrycounterclusterRequest retries.
upstream_cx_totalcounterclusterUpstream connections.
upstream_client_exec_totalcounterclusterHTTP client executor spawns (connection dispatchers and HTTP/1 idle waiters).
upstream_cx_activegaugeclusterActive upstream connections.
upstream_cx_destroycounterclusterUpstream connections destroyed.
upstream_cx_idle_timeoutcounterclusterUpstream connections closed by idle timeout.
upstream_cx_connect_failcounterclusterFailed upstream connection attempts.
upstream_cx_connect_timeoutcounterclusterUpstream connection attempts that timed out.
upstream_cx_rx_bytes_totalcounterclusterBytes received from upstreams.
upstream_cx_tx_bytes_totalcounterclusterBytes sent to upstreams.
upstream_cx_overflowcounterclusterConnections rejected by the circuit breaker.
upstream_rq_overflowcounterclusterRequests rejected by the circuit breaker.
upstream_rq_retry_overflowcounterclusterRetries rejected by the circuit breaker.

Server (server_*)

Unlabelled gauges, refreshed when the stats endpoints are read.

NameTypeLabelsDescription
uptimegauge—Server uptime in seconds.
concurrencygauge—Number of worker threads.
memory_heap_sizegauge—Reserved heap size in bytes (requires the jemalloc build feature; falls back to physical memory).
memory_physical_sizegauge—Physical memory of the process in bytes.
memory_allocatedgauge—Allocated heap bytes (requires jemalloc; falls back to physical memory).

Filter (filter_*)

The result label is ok, rate_limited or not_applicable; filter is the filter's stat_prefix.

NameTypeLabelsDescription
connection_rate_limitcounterfilter, resultListener local rate limit decisions.
local_rate_limitcounterfilter, resultHTTP local rate limit decisions.
user_rate_limitcounterfilter, user, resultUser rate limit decisions.

User (user_*)

Per-caller metrics, partitioned by the identity configured in metrics.user_key (a request header or the TLS SNI). The label name is the configured attribute_name — user in the examples below.

NameTypeLabelsDescription
invocationscounteruserAPI calls.
throttlescounteruserAPI calls that were rate limited.
system_errorscounteruserAPI calls that ended in a server-side error.
user_errorscounteruserAPI calls that ended in a client-side error.
total_errorscounteruserAPI calls that ended in any error.
latencyhistogramuserAPI call latency in milliseconds.
upstream_rq_timehistogramuserUpstream request time in milliseconds.
bytes_txcounteruser, listenerBytes sent to the caller.
bytes_rxcounteruser, listenerBytes received from the caller.
inbound_streaming_bytes_processedcounteruserInbound WebSocket bytes.
outbound_streaming_bytes_processedcounteruserOutbound WebSocket bytes.
connectionscounteruserConnections established.
connections_activegaugeuserActive connections.
http_1xx_response … http_5xx_responsecounteruserResponses by status class (five metrics).
http_404_responsecounteruser404 responses.
http_502_responsecounteruser502 responses.
http_504_responsecounteruser504 responses.

MCP gateway (mcp_*)

Emitted by the MCP gateway filter and exported through the OTLP pipeline; they are not listed by the admin /stats endpoints. Tools are identified by their qualified name, namespace.name. In code mode, every tool call a script makes is counted under that tool, the same as a direct tools/call.

NameTypeLabelsDescription
tool_rq_totalcountermcp.tool.name, mcp.backend, mcp.upstreamTool invocations dispatched to a backend.
tool_rq_failures_totalcountermcp.tool.name, mcp.backend, mcp.upstream, mcp.error.codeTool invocations that produced a tool error.
tool_rq_timehistogrammcp.tool.name, mcp.backend, mcp.upstreamTool invocation time in milliseconds.
tool_response_byteshistogrammcp.tool.name, mcp.backend, mcp.upstreamUpstream tool response payload size in bytes.
embedding_failures_totalcounter—Failed embeddings requests for tool search, counted once per failed batch.

Custom metrics (custom_*)

User-defined counters, histograms and gauges declared under the top-level metrics.custom_metrics map extract values from request or response headers at six hook points and appear alongside the built-in families. Their names and labels are whatever the configuration declares; see metrics for the configuration.

Continue

Start typing to search the site.

↑ ↓ to move Enter to open Esc to close