HA Proxy Metrics
HA Proxy exposes metrics at /metrics on port 1042.
These metrics describe the proxy process, incoming frontend traffic, backend traffic, individual servers and DNS resolvers.
Labels and states
Frontend and backend series use proxy to identify the configured frontend or backend.
Server series also have a server label.
DNS series use resolver and nameserver.
Status metrics use a state label. Frontend and backend status values are UP and DOWN.
Server states include UP, DOWN, MAINT, DRAIN, and NOLB.
A status indicator is 1 for the current state and 0 for other states.
Backend status aggregates count servers in each state.
The code label on HTTP response metrics groups responses as 1xx, 2xx, 3xx, 4xx, 5xx, or other.
Health-check result labels identify outcomes such as L4OK, L4TOUT, L6OK, L7OK, or L7STS.
Process
| Metric | Type | Unit | Meaning |
|---|---|---|---|
|
gauge |
threads |
Worker threads configured. |
|
gauge |
processes |
Legacy worker-process count, fixed at 1. |
|
gauge |
identifier |
Legacy worker number, fixed at 1. |
|
gauge |
seconds |
Time since this worker started. |
|
gauge |
Unix seconds |
Worker start timestamp. |
|
gauge |
bytes |
Configured worker memory ceiling. |
|
gauge |
bytes |
Memory reserved by HAProxy pools. |
|
gauge |
bytes |
Pool memory currently occupied. |
|
counter |
allocations |
Failed memory-pool allocations. |
|
gauge |
descriptors |
Worker file-descriptor ceiling. |
|
gauge |
sockets |
Worker socket ceiling. |
|
gauge |
connections |
Effective worker connection ceiling. |
|
gauge |
connections |
Resource-imposed connection ceiling. |
|
gauge |
connections |
Open worker connections. |
|
counter |
connections |
Accepted connections since worker start. |
|
counter |
requests |
Requests handled since worker start. |
|
gauge |
TLS endpoints |
TLS endpoint ceiling, 0 means unlimited. |
|
gauge |
TLS endpoints |
Open frontend and backend TLS endpoints. |
|
counter |
TLS endpoints |
TLS endpoints created since worker start. |
|
gauge |
pipes |
Splice-pipe ceiling, 0 means unlimited. |
|
counter |
pipes |
Pipes currently occupied. This value is a current count. |
|
counter |
pipes |
Allocated pipes currently available. This value is a current count. |
|
gauge |
connections/second |
Recent frontend connection arrival rate. |
|
gauge |
connections/second |
Configured connection-rate ceiling. |
|
gauge |
connections/second |
Highest connection arrival rate recorded. |
|
gauge |
sessions/second |
Recent session creation rate. |
|
gauge |
sessions/second |
Configured session-rate ceiling. |
|
gauge |
sessions/second |
Highest session creation rate recorded. |
|
gauge |
connections/second |
Recent TLS connection creation rate. |
|
gauge |
connections/second |
Configured TLS creation-rate ceiling. |
|
gauge |
connections/second |
Highest TLS connection creation rate recorded. |
|
gauge |
keys/second |
Recent frontend TLS key creation rate. |
|
gauge |
keys/second |
Highest frontend TLS key creation rate recorded. |
|
gauge |
percent |
Frontend TLS connections that avoided a new key. |
|
gauge |
keys/second |
Recent backend TLS key creation rate. |
|
gauge |
keys/second |
Highest backend TLS key creation rate recorded. |
|
counter |
lookups |
TLS session-cache lookup attempts. |
|
counter |
lookups |
TLS session-cache lookup misses. |
|
counter |
bytes/second |
Recent compressor input rate. This value is already a rate. |
|
counter |
bytes/second |
Recent compressor output rate. This value is already a rate. |
|
gauge |
bytes/second |
Output-rate ceiling at which compression is disabled. |
|
gauge |
bytes |
Memory occupied by zlib compression. |
|
gauge |
bytes |
Configured zlib memory ceiling. |
|
gauge |
tasks |
Allocated active and sleeping tasks. |
|
gauge |
tasks/tasklets |
Currently runnable tasks and tasklets. |
|
gauge |
percent |
Idle fraction of the reporting worker thread over the last second. |
|
gauge |
1 |
Identity marker with the |
|
gauge |
1 |
Description marker with the |
|
gauge |
0/1 |
Worker is shutting down. |
|
gauge |
jobs |
Active connection and listener jobs. |
|
gauge |
jobs |
Jobs that prevent worker termination, such as master connections. |
|
gauge |
listeners |
Active network listeners. |
|
gauge |
connections |
Verified peer connections. |
|
gauge |
connections |
Peers that completed the connection step. |
|
counter |
messages |
Log messages discarded. |
|
gauge |
0/1 |
Busy polling is enabled. |
|
counter |
failures |
Unsuccessful DNS resolutions. |
|
counter |
bytes |
All worker output traffic. |
|
counter |
bytes |
Output transferred through kernel pipes. |
|
gauge |
bytes/second |
Recent output throughput, measured in 32-byte increments. |
|
counter |
messages |
Messages accepted by log-forwarding listeners. |
|
gauge |
1 |
Build marker with the |
|
counter |
warnings |
Warnings raised by the worker. |
Process pipes_used_total and pipes_free_total report current counts. Process http_comp_bytes_in_total and http_comp_bytes_out_total report recent rates. Use these values directly.
Frontends
| Metric | Type | Unit | Meaning |
|---|---|---|---|
|
gauge |
sessions |
Currently active sessions. |
|
gauge |
sessions |
Highest simultaneous session count observed. |
|
gauge |
connections |
Frontend/server maxconn or backend fullconn threshold. |
|
counter |
sessions |
Sessions processed. |
|
counter |
bytes |
Request-direction traffic. |
|
counter |
bytes |
Response-direction traffic. |
|
counter |
requests |
Requests rejected by policy. |
|
counter |
responses |
Responses rejected by policy. |
|
counter |
requests |
Invalid requests received. |
|
gauge |
0/1 per state |
State indicator, labelled |
|
gauge |
events/second |
Recent sessions for frontends, requests for backends and servers. |
|
gauge |
sessions/second |
Configured frontend acceptance-rate ceiling. |
|
gauge |
events/second |
Peak observed session/request rate. |
|
counter |
responses |
HTTP responses grouped by |
|
gauge |
requests/second |
Highest HTTP request rate observed. |
|
counter |
requests |
HTTP requests processed. |
|
counter |
bytes |
Data submitted to response compression. |
|
counter |
bytes |
Compressed response output. |
|
counter |
bytes |
Response data left uncompressed due to resource limits. |
|
counter |
responses |
Responses compressed. |
|
gauge |
connections/second |
Highest frontend connection arrival rate. |
|
counter |
connections |
Accepted frontend connections. |
|
counter |
requests |
Requests handled locally, including redirects and exporter/service requests. |
|
counter |
connections |
Connections blocked by connection-stage rules. |
|
counter |
sessions |
Sessions blocked by session-stage rules. |
|
counter |
failures |
Unsuccessful HTTP header rewrites. |
|
counter |
requests |
Requests checked against HAProxy’s HTTP cache. |
|
counter |
requests |
Requests served from HAProxy’s HTTP cache. |
|
counter |
errors |
Failures internal to HAProxy. |
Backends
| Metric | Type | Unit | Meaning |
|---|---|---|---|
|
gauge |
connections |
Connections waiting for a server. |
|
gauge |
connections |
Largest queue observed. |
|
gauge |
sessions |
Currently active sessions. |
|
gauge |
sessions |
Highest simultaneous session count observed. |
|
gauge |
connections |
Frontend/server maxconn or backend fullconn threshold. |
|
counter |
sessions |
Sessions processed. |
|
counter |
bytes |
Request-direction traffic. |
|
counter |
bytes |
Response-direction traffic. |
|
counter |
requests |
Requests rejected by policy. |
|
counter |
responses |
Responses rejected by policy. |
|
counter |
connections |
Failed attempts to connect to servers. |
|
counter |
responses |
Invalid server responses. |
|
counter |
retries |
Retried server connections. |
|
counter |
redispatches |
Connections reassigned after connection failures. |
|
gauge |
0/1 per state |
State indicator, labelled |
|
gauge |
weight |
Effective load-balancing weight, summed over active backend servers. |
|
gauge |
servers |
Number of usable active servers. |
|
gauge |
servers |
Number of usable backup servers. |
|
counter |
transitions |
Transitions from UP to DOWN. |
|
gauge |
seconds |
Elapsed time since the last availability transition. |
|
counter |
seconds |
Accumulated time unavailable. Server needs health checks; backend needs servers. |
|
counter |
requests |
Requests selected by the load-balancer algorithm, excluding sticky routing and queue release. |
|
gauge |
events/second |
Recent sessions for frontends, requests for backends and servers. |
|
gauge |
events/second |
Peak observed session/request rate. |
|
counter |
responses |
HTTP responses grouped by |
|
counter |
requests |
HTTP requests processed. |
|
counter |
aborts |
Requests/connections terminated by clients. |
|
counter |
aborts |
Requests/connections terminated by servers. |
|
counter |
bytes |
Data submitted to response compression. |
|
counter |
bytes |
Compressed response output. |
|
counter |
bytes |
Response data left uncompressed due to resource limits. |
|
counter |
responses |
Responses compressed. |
|
gauge |
seconds |
Time since the last traffic, possibly NaN before any traffic. |
|
gauge |
seconds |
Smoothed queue wait over the latest 1024 samples. |
|
gauge |
seconds |
Smoothed connection setup time over the latest 1024 samples. |
|
gauge |
seconds |
Smoothed server response wait over the latest 1024 samples. |
|
gauge |
seconds |
Smoothed complete transaction time over the latest 1024 samples. |
|
counter |
failures |
Unsuccessful HTTP header rewrites. |
|
counter |
attempts |
Attempts to open backend connections. |
|
counter |
connections |
Backend connections reused. |
|
counter |
requests |
Requests checked against HAProxy’s HTTP cache. |
|
counter |
requests |
Requests served from HAProxy’s HTTP cache. |
|
gauge |
seconds |
Longest observed queue wait. |
|
gauge |
seconds |
Longest observed connection setup. |
|
gauge |
seconds |
Longest observed server response wait. |
|
gauge |
seconds |
Longest observed complete transaction. |
|
counter |
errors |
Failures internal to HAProxy. |
|
gauge |
weight |
Configured server weight, or backend sum of active servers' configured weights. |
|
gauge |
servers per state |
Deprecated duplicate of |
|
gauge |
servers per state |
Backend servers grouped by latest enabled, unpaused health-check result |
|
gauge |
servers per state |
Backend servers grouped by availability |
Servers
| Metric | Type | Unit | Meaning |
|---|---|---|---|
|
gauge |
connections |
Connections waiting for a server. |
|
gauge |
connections |
Largest queue observed. |
|
gauge |
sessions |
Currently active sessions. |
|
gauge |
sessions |
Highest simultaneous session count observed. |
|
gauge |
connections |
Frontend/server maxconn or backend fullconn threshold. |
|
counter |
sessions |
Sessions processed. |
|
counter |
bytes |
Request-direction traffic. |
|
counter |
bytes |
Response-direction traffic. |
|
counter |
responses |
Responses rejected by policy. |
|
counter |
connections |
Failed attempts to connect to servers. |
|
counter |
responses |
Invalid server responses. |
|
counter |
retries |
Retried server connections. |
|
counter |
redispatches |
Connections reassigned after connection failures. |
|
gauge |
0/1 per state |
State indicator, labelled |
|
gauge |
weight |
Effective load-balancing weight, summed over active backend servers. |
|
gauge |
0/1 |
Server role indicator: non-backup server. |
|
gauge |
0/1 |
Server role indicator: backup server. |
|
counter |
checks |
Failed individual health checks. |
|
counter |
transitions |
Transitions from UP to DOWN. |
|
gauge |
seconds |
Elapsed time since the last availability transition. |
|
counter |
seconds |
Accumulated time unavailable. Server needs health checks; backend needs servers. |
|
gauge |
connections |
Configured server queue ceiling; may be NaN if unset. |
|
gauge |
percent |
Slow-start multiplier applied to weight and connection capacity. |
|
counter |
requests |
Requests selected by the load-balancer algorithm, excluding sticky routing and queue release. |
|
gauge |
events/second |
Recent sessions for frontends, requests for backends and servers. |
|
gauge |
events/second |
Peak observed session/request rate. |
|
gauge |
0/1 per state |
Latest health-check result, labelled |
|
gauge |
protocol code |
Latest health-check response code, or 0 before a layer 5-7 code exists. |
|
gauge |
seconds |
Duration of the latest completed health check. |
|
counter |
responses |
HTTP responses grouped by |
|
counter |
requests |
HTTP requests processed. |
|
counter |
aborts |
Requests/connections terminated by clients. |
|
counter |
aborts |
Requests/connections terminated by servers. |
|
gauge |
seconds |
Time since the last traffic, possibly NaN before any traffic. |
|
gauge |
seconds |
Smoothed queue wait over the latest 1024 samples. |
|
gauge |
seconds |
Smoothed connection setup time over the latest 1024 samples. |
|
gauge |
seconds |
Smoothed server response wait over the latest 1024 samples. |
|
gauge |
seconds |
Smoothed complete transaction time over the latest 1024 samples. |
|
gauge |
0/1 per state |
Latest agent-check result, labelled |
|
gauge |
protocol code |
Latest agent-check response code; needs agent checks. |
|
gauge |
seconds |
Latest completed agent-check duration; needs agent checks. |
|
counter |
failures |
Unsuccessful HTTP header rewrites. |
|
counter |
attempts |
Attempts to open backend connections. |
|
counter |
connections |
Backend connections reused. |
|
gauge |
connections |
Idle server connections available for reuse. |
|
gauge |
connections |
Configured server idle-connection pool ceiling. |
|
gauge |
seconds |
Longest observed queue wait. |
|
gauge |
seconds |
Longest observed connection setup. |
|
gauge |
seconds |
Longest observed server response wait. |
|
gauge |
seconds |
Longest observed complete transaction. |
|
counter |
errors |
Failures internal to HAProxy. |
|
gauge |
connections |
Idle connections considered unsafe for reuse in all contexts. |
|
gauge |
connections |
Idle connections marked safe for reuse. |
|
gauge |
connections |
Server connections currently in use. |
|
gauge |
connections |
Estimated server connection demand. |
|
gauge |
weight |
Configured server weight, or backend sum of active servers' configured weights. |
Average timing metrics use a smoothed 1024-sample estimate. Durations are expressed in seconds.
The haproxy_server_active and haproxy_server_backup metrics identify server roles. Use haproxy_server_status with state="UP" to measure server availability.
DNS resolution
DNS metrics have resolver and nameserver labels. They contain cumulative event counts and are exposed as gauges.
| Metric | Meaning |
|---|---|
|
DNS requests sent. |
|
Errors sending DNS requests. |
|
Valid DNS responses. |
|
Server address updates following resolution. |
|
CNAME responses processed. |
|
CNAME-processing failures. |
|
DNS responses with an empty answer section. |
|
NXDOMAIN results. |
|
DNS resolution timeouts. |
|
Refused DNS queries. |
|
Other DNS response errors. |
|
Invalid DNS responses. |
|
DNS responses exceeding supported size. |
|
Truncated DNS responses. |
|
Responses no longer matching an active resolution. |