Alerts and monitoring

Prometheus metrics

Available since

  • HAProxy 2.0
  • HAProxy Enterprise 2.0r1
  • HAProxy ALOHA 11.5

The load balancer exposes a Prometheus endpoint that publishes metrics that you can scrape with a Prometheus-compatible agent such as the Prometheus server, Fluentd, Telegraf, and Metricbeat. It is enabled by default, so you only need to configure the IP address and port where it listens.

Configure the Prometheus exporter Jump to heading

To configure the Prometheus exporter:

  1. Add a new frontend section to your configuration file. In it, include the http-request use-service prometheus-exporter directive. In the following example, the Prometheus exporter page becomes available on all IP addresses at port 8405:

    haproxy
    frontend prometheus
    bind :8405
    mode http
    http-request use-service prometheus-exporter
    no log
    haproxy
    frontend prometheus
    bind :8405
    mode http
    http-request use-service prometheus-exporter
    no log

    The no log directive disables logging for these requests.

  2. Optional: Add a conditional statement to the end of the line to show the metrics page only on a certain URL path. In the next example, the metrics become available at the URL path /metrics on port 8405:

    haproxy
    frontend prometheus
    bind *:8405
    mode http
    http-request use-service prometheus-exporter if { path /metrics }
    no log
    haproxy
    frontend prometheus
    bind *:8405
    mode http
    http-request use-service prometheus-exporter if { path /metrics }
    no log

Configure the Prometheus server Jump to heading

The Prometheus server collects your load balancer metrics and stores them in its database. From there, you can use software like Grafana to graph them. To configure your Prometheus server to scrape the metrics page:

  1. Follow the First Steps with Prometheus guide to install the Prometheus server.

  2. Edit its prometheus.yml file so that it includes a job for scraping load balancer metrics. Add the following to the scrape_configs section, replacing localhost with your load balancer’s address. If you run multiple load balancer servers, include them in the targets array.

    prometheus.yml
    yaml
    - job_name: 'load-balancer-metrics'
    static_configs:
    - targets: ['localhost:8405']
    prometheus.yml
    yaml
    - job_name: 'load-balancer-metrics'
    static_configs:
    - targets: ['localhost:8405']

    By default, the Prometheus server scrapes the URL /metrics. To change this path, set the metrics_path parameter in the scrape_configs section of the Prometheus configuration file.

Host over HTTPS Jump to heading

To serve the Prometheus endpoint over HTTPS:

  1. Edit the load balancer configuration and add the ssl parameter to the bind line to enable HTTPS. Also, set the crt parameter to the path where you’ve stored your TLS key and certificate file:

    haproxy
    frontend prometheus
    bind :8405 ssl crt /certs/site.pem
    mode http
    http-request use-service prometheus-exporter
    no log
    haproxy
    frontend prometheus
    bind :8405 ssl crt /certs/site.pem
    mode http
    http-request use-service prometheus-exporter
    no log
  2. On the Prometheus server, edit the prometheus.yml configuration file. Set scheme to https:

    prometheus.yml
    yaml
    - job_name: 'load-balancer-metrics'
    scheme: https
    static_configs:
    - targets: ['localhost:8405']
    prometheus.yml
    yaml
    - job_name: 'load-balancer-metrics'
    scheme: https
    static_configs:
    - targets: ['localhost:8405']
  3. Optional: You can also configure the tls_config block to set a CA certificate for verifying the load balancer’s certificate, enable client certificates, set a ServerName extension, or disable validation of the load balancer’s certificate. See the Prometheus configuration documentation for details.

    Below, we skip validation of the certificate.

    prometheus.yml
    yaml
    - job_name: 'load-balancer-metrics'
    scheme: https
    static_configs:
    - targets: ['localhost:8405']
    tls_config:
    # Disable validation of server certificate
    insecure_skip_verify: true
    prometheus.yml
    yaml
    - job_name: 'load-balancer-metrics'
    scheme: https
    static_configs:
    - targets: ['localhost:8405']
    tls_config:
    # Disable validation of server certificate
    insecure_skip_verify: true

Filter metrics Jump to heading

To reduce the volume of metrics Prometheus scrapes from the load balancer, you can specify filter parameters in the Prometheus configuration file. The filters are applied on the load balancer, thereby reducing the load on the network and the Prometheus server.

In the following section, we describe several use cases.

Specify metrics scope Jump to heading

Use the scope parameter to specify which categories of metrics to scrape. Categories include:

  • global
  • frontend
  • listener
  • backend
  • server
  • sticktable
  • asterisk (*) = all scopes
  • empty = no metrics

In the load balancer job shown below, we are scraping only frontend and sticktable metrics:

prometheus.yml
yaml
global:
scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
scrape_configs:
- job_name: 'load-balancer-metrics'
static_configs:
- targets: ['192.168.56.31:8405']
params:
scope:
- frontend
- sticktable
prometheus.yml
yaml
global:
scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
scrape_configs:
- job_name: 'load-balancer-metrics'
static_configs:
- targets: ['192.168.56.31:8405']
params:
scope:
- frontend
- sticktable

Omit servers in maintenance mode Jump to heading

To reduce the volume of metrics returned, omit results from servers in maintenance mode. Add the no-maint key. The no-maint key is particularly useful with load balancer configurations using server-template to define servers dynamically, wherein unused server slots are left in maintenance mode.

There is no consistency check on server state. So if the state of a server changes while the exporter is running, only a portion of the metrics for this server will be reported.

Below, we define no-maint to omit metrics from servers in maintenance mode:

prometheus.yml
yaml
global:
scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
scrape_configs:
- job_name: 'load-balancer-metrics'
static_configs:
- targets: ['192.168.56.31:8405']
params:
scope:
- frontend
- sticktable
no-maint:
- empty
prometheus.yml
yaml
global:
scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
scrape_configs:
- job_name: 'load-balancer-metrics'
static_configs:
- targets: ['192.168.56.31:8405']
params:
scope:
- frontend
- sticktable
no-maint:
- empty

Scrape health status only Jump to heading

To scrape only server health status without other server metrics, configure the job with a metric_relabel_configs section, as follows:

prometheus.yml
yaml
global:
scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
scrape_configs:
- job_name: "prometheus"
static_configs:
- targets: ["localhost:9090"]
- job_name: 'load-balancer-metrics'
static_configs:
- targets: ['192.168.56.31:8405']
metric_relabel_configs:
- source_labels: [__name__]
regex: 'haproxy_(process_|frontend_|listener_|backend_|server_check_status).*'
action: keep
prometheus.yml
yaml
global:
scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
scrape_configs:
- job_name: "prometheus"
static_configs:
- targets: ["localhost:9090"]
- job_name: 'load-balancer-metrics'
static_configs:
- targets: ['192.168.56.31:8405']
metric_relabel_configs:
- source_labels: [__name__]
regex: 'haproxy_(process_|frontend_|listener_|backend_|server_check_status).*'
action: keep

Exported metrics Jump to heading

The Prometheus exporter generates the metrics shown in the following sections.

Some of these metrics require you to enable the extra-counters URL parameter when scraping the HAProxy Prometheus endpoint. This parameter was added in HAProxy 3.0. In your prometheus.yml file, add the extra-counters parameter:

prometheus.yml
yaml
- job_name: 'load-balancer-metrics'
static_configs:
- targets: ['localhost:8405']
params:
extra-counters: ["on"]
prometheus.yml
yaml
- job_name: 'load-balancer-metrics'
static_configs:
- targets: ['localhost:8405']
params:
extra-counters: ["on"]

Socket listener metrics Jump to heading

To enable these metrics, add option socket-stats to your Prometheus frontend in the load balancer configuration.

Name Description Type
haproxy_listener_bytes_in_total Total number of request bytes since process started counter
haproxy_listener_bytes_out_total Total number of response bytes since process started counter
haproxy_listener_current_sessions Number of current sessions on the frontend, backend or server gauge
haproxy_listener_denied_connections_total Total number of incoming connections blocked on a listener/frontend by a tcp-request connection rule since the worker process started counter
haproxy_listener_denied_sessions_total Total number of incoming sessions blocked on a listener/frontend by a tcp-request connection rule since the worker process started counter
haproxy_listener_failed_header_rewriting_total Total number of failed HTTP header rewrites since the worker process started counter
haproxy_listener_internal_errors_total Total number of internal errors since process started counter
haproxy_listener_limit_sessions Frontend/listener/server’s maxconn, backend’s fullconn gauge
haproxy_listener_max_sessions Highest value of current sessions encountered since process started gauge
haproxy_listener_request_errors_total Total number of invalid requests since process started counter
haproxy_listener_requests_denied_total Total number of denied requests since process started counter
haproxy_listener_responses_denied_total Total number of denied responses since process started counter
haproxy_listener_sessions_total Total number of sessions since process started counter
haproxy_listener_ssl_failed_handshake Total number of failed handshake counter
haproxy_listener_ssl_reused_sess Total number of ssl sessions reused counter
haproxy_listener_ssl_sess Total number of ssl sessions established counter
haproxy_listener_status Current status of the service, per state label value gauge

Global metrics Jump to heading

Name Description Type
haproxy_process_active_peers Current number of verified active peers connections on the current worker process gauge
haproxy_process_build_info Build info gauge
haproxy_process_busy_polling_enabled 1 if busy-polling is currently in use on the worker process, otherwise zero (config.busy-polling) gauge
haproxy_process_bytes_out_rate Number of bytes emitted by current worker process over the last second gauge
haproxy_process_bytes_out_total Total number of bytes emitted by current worker process since started counter
haproxy_process_connected_peers Current number of peers having passed the connection step on the current worker process gauge
haproxy_process_connections_total Total number of connections on this worker process since started counter
haproxy_process_current_backend_ssl_key_rate Number of SSL keys created on backends in this worker process over the last second gauge
haproxy_process_current_connection_rate Number of front connections created on this worker process over the last second gauge
haproxy_process_current_connections Current number of connections on this worker process gauge
haproxy_process_current_frontend_ssl_key_rate Number of SSL keys created on frontends in this worker process over the last second gauge
haproxy_process_current_run_queue Total number of active tasks+tasklets in the current worker process gauge
haproxy_process_current_session_rate Number of sessions created on this worker process over the last second gauge
haproxy_process_current_ssl_connections Current number of SSL endpoints on this worker process (front+back) gauge
haproxy_process_current_ssl_rate Number of SSL connections created on this worker process over the last second gauge
haproxy_process_current_tasks Total number of tasks in the current worker process (active + sleeping) gauge
haproxy_process_current_zlib_memory Amount of memory currently used by HTTP compression on the current worker process (in bytes) gauge
haproxy_process_dropped_logs_total Total number of dropped logs for current worker process since started counter
haproxy_process_failed_resolutions Total number of failed DNS resolutions in current worker process since started counter
haproxy_process_frontend_ssl_reuse Percent of frontend SSL connections which did not require a new key gauge
haproxy_process_hard_max_connections Hard limit on the number of per-process connections (imposed by Memmax_MB or ulimit -n) gauge
haproxy_process_http_comp_bytes_in_total Number of bytes submitted to the HTTP compressor in this worker process over the last second counter
haproxy_process_http_comp_bytes_out_total Number of bytes emitted by the HTTP compressor in this worker process over the last second counter
haproxy_process_idle_time_percent Percentage of last second spent waiting in the current worker thread gauge
haproxy_process_jobs Current number of active jobs on the current worker process (frontend connections, master connections, listeners) gauge
haproxy_process_limit_connection_rate Hard limit for ConnRate (global.maxconnrate) gauge
haproxy_process_limit_http_comp Limit of CompressBpsOut beyond which HTTP compression is automatically disabled gauge
haproxy_process_limit_session_rate Hard limit for SessRate (global.maxsessrate) gauge
haproxy_process_limit_ssl_rate Hard limit for SslRate (global.maxsslrate) gauge
haproxy_process_listeners Current number of active listeners on the current worker process gauge
haproxy_process_max_backend_ssl_key_rate Highest SslBackendKeyRate reached on this worker process since started (in SSL keys per second) gauge
haproxy_process_max_connection_rate Highest ConnRate reached on this worker process since started (in connections per second) gauge
haproxy_process_max_connections Hard limit on the number of per-process connections (configured or imposed by ulimit -n) gauge
haproxy_process_max_fds Hard limit on the number of per-process file descriptors gauge
haproxy_process_max_frontend_ssl_key_rate Highest SslFrontendKeyRate reached on this worker process since started (in SSL keys per second) gauge
haproxy_process_max_memory_bytes Worker process’s hard limit on memory usage in byes (-m on command line) gauge
haproxy_process_max_pipes Hard limit on the number of pipes for splicing, 0=unlimited gauge
haproxy_process_max_session_rate Highest SessRate reached on this worker process since started (in sessions per second) gauge
haproxy_process_max_sockets Hard limit on the number of per-process sockets gauge
haproxy_process_max_ssl_connections Hard limit on the number of per-process SSL endpoints (front+back), 0=unlimited gauge
haproxy_process_max_ssl_rate Highest SslRate reached on this worker process since started (in connections per second) gauge
haproxy_process_max_zlib_memory Limit on the amount of memory used by HTTP compression above which it is automatically disabled (in bytes, see global.maxzlibmem) gauge
haproxy_process_nbthread Number of started threads (global.nbthread) gauge
haproxy_process_pipes_free_total Current number of allocated and available pipes in this worker process counter
haproxy_process_pipes_used_total Current number of pipes in use in this worker process counter
haproxy_process_pool_allocated_bytes Amount of memory allocated in pools (in bytes) gauge
haproxy_process_pool_failures_total Number of failed pool allocations since this worker was started counter
haproxy_process_pool_used_bytes Amount of pool memory currently used (in bytes) gauge
haproxy_process_recv_logs_total Total number of log messages received by log-forwarding listeners on this worker process since started counter
haproxy_process_relative_process_id Relative worker process number (1) gauge
haproxy_process_requests_total Total number of requests on this worker process since started counter
haproxy_process_spliced_bytes_out_total Total number of bytes emitted by current worker process through a kernel pipe since started counter
haproxy_process_ssl_cache_lookups_total Total number of SSL session ID lookups in the SSL session cache on this worker since the process started counter
haproxy_process_ssl_cache_misses_total Total number of SSL session ID lookups that didn’t find a session in the SSL session cache on this worker since started counter
haproxy_process_ssl_connections_total Total number of SSL endpoints on this worker process since the process started (front+back) counter
haproxy_process_start_time_seconds Start time in seconds gauge
haproxy_process_stopping 1 if the worker process is currently stopping, otherwise zero gauge
haproxy_process_unstoppable_jobs Current number of unstoppable jobs on the current worker process (master connections) gauge
haproxy_process_uptime_seconds How long ago this worker process was started (seconds) gauge

Frontend metrics Jump to heading

Name Description Type
haproxy_frontend_bytes_in_total Total number of request bytes since process started counter
haproxy_frontend_bytes_out_total Total number of response bytes since process started counter
haproxy_frontend_connections_rate_max Highest value of connections per second observed since the worker process started gauge
haproxy_frontend_connections_total Total number of new connections accepted on this frontend since the worker process started counter
haproxy_frontend_current_sessions Number of current sessions on the frontend, backend, or server gauge
haproxy_frontend_denied_connections_total Total number of incoming connections blocked on a listener/frontend by a tcp-request connection rule since the worker process started counter
haproxy_frontend_denied_sessions_total Total number of incoming sessions blocked on a listener/frontend by a tcp-request connection rule since the worker process started counter
haproxy_frontend_failed_header_rewriting_total Total number of failed HTTP header rewrites since the worker process started counter
haproxy_frontend_h1_bytes_in Total number of bytes received counter
haproxy_frontend_h1_bytes_out Total number of bytes send counter
haproxy_frontend_h1_open_connections Count of currently open connections counter
haproxy_frontend_h1_open_streams Count of currently open streams counter
haproxy_frontend_h1_spliced_bytes_in Total number of bytes received using kernel splicing counter
haproxy_frontend_h1_spliced_bytes_out Total number of bytes sent using kernel splicing counter
haproxy_frontend_h1_total_connections Total number of connections counter
haproxy_frontend_h1_total_streams Total number of streams counter
haproxy_frontend_h2_backend_open_streams Count of currently open streams counter
haproxy_frontend_h2_backend_total_streams Total number of streams counter
haproxy_frontend_h2_data_rcvd Total number of received DATA frames counter
haproxy_frontend_h2_detected_conn_protocol_errors Total number of connection protocol errors counter
haproxy_frontend_h2_detected_strm_protocol_errors Total number of stream protocol errors counter
haproxy_frontend_h2_goaway_rcvd Total number of received GOAWAY frames counter
haproxy_frontend_h2_goaway_resp Total number of GOAWAY sent on detected error counter
haproxy_frontend_h2_headers_rcvd Total number of received HEADERS frames counter
haproxy_frontend_h2_open_connections Count of currently open connections counter
haproxy_frontend_h2_rst_stream_rcvd Total number of received RST_STREAM frames counter
haproxy_frontend_h2_rst_stream_resp Total number of RST_STREAM sent on detected error counter
haproxy_frontend_h2_settings_rcvd Total number of received SETTINGS frames counter
haproxy_frontend_h2_total_connections Total number of connections counter
haproxy_frontend_h3_cancel_push Total number of CANCEL_PUSH frames received counter
haproxy_frontend_h3_closed_critical_stream Total number of H3_CLOSED_CRITICAL_STREAM errors received counter
haproxy_frontend_h3_connect_error Total number of H3_CONNECT_ERROR errors received counter
haproxy_frontend_h3_data Total number of DATA frames received counter
haproxy_frontend_h3_excessive_load Total number of H3_EXCESSIVE_LOAD errors received counter
haproxy_frontend_h3_frame_error Total number of H3_FRAME_ERROR errors received counter
haproxy_frontend_h3_frame_unexpected Total number of H3_FRAME_UNEXPECTED errors received counter
haproxy_frontend_h3_general_protocol_error Total number of H3_GENERAL_PROTOCOL_ERROR errors received counter
haproxy_frontend_h3_goaway Total number of GOAWAY frames received counter
haproxy_frontend_h3_headers Total number of HEADERS frames received counter
haproxy_frontend_h3_id_error Total number of H3_ID_ERROR errors received counter
haproxy_frontend_h3_internal_error Total number of H3_INTERNAL_ERROR errors received counter
haproxy_frontend_h3_max_push_id Total number of MAX_PUSH_ID frames received counter
haproxy_frontend_h3_message_error Total number of H3_MESSAGE_ERROR errors received counter
haproxy_frontend_h3_missing_settings Total number of H3_MISSING_SETTINGS errors received counter
haproxy_frontend_h3_no_error Total number of H3_NO_ERROR errors received counter
haproxy_frontend_h3_push_promise Total number of PUSH_PROMISE frames received counter
haproxy_frontend_h3_request_cancelled Total number of H3_REQUEST_CANCELLED errors received counter
haproxy_frontend_h3_request_incomplete Total number of H3_REQUEST_INCOMPLETE errors received counter
haproxy_frontend_h3_request_rejected Total number of H3_REQUEST_REJECTED errors received counter
haproxy_frontend_h3_settings Total number of SETTINGS frames received counter
haproxy_frontend_h3_settings_error Total number of H3_SETTINGS_ERROR errors received counter
haproxy_frontend_h3_stream_creation_error Total number of H3_STREAM_CREATION_ERROR errors received counter
haproxy_frontend_h3_version_fallback Total number of H3_VERSION_FALLBACK errors received counter
haproxy_frontend_http_cache_hits_total Total number of HTTP requests not found in the cache on this frontend/backend since the worker process started counter
haproxy_frontend_http_cache_lookups_total Total number of HTTP request lookups in the cache on this frontend/backend since the worker process started counter
haproxy_frontend_http_comp_bytes_bypassed_total Total number of bytes that bypassed HTTP compression for this object since the worker process started (CPU/memory/bandwidth limitation) counter
haproxy_frontend_http_comp_bytes_in_total Total number of bytes submitted to the HTTP compressor for this object since the worker process started counter
haproxy_frontend_http_comp_bytes_out_total Total number of bytes emitted by the HTTP compressor for this object since the worker process started counter
haproxy_frontend_http_comp_responses_total Total number of HTTP responses that were compressed for this object since the worker process started counter
haproxy_frontend_http_requests_rate_max Highest value of http requests observed since the worker process started gauge
haproxy_frontend_http_requests_total Total number of HTTP requests processed by this object since the worker process started counter
haproxy_frontend_http_responses_total Total number of HTTP responses with status 100-199 returned by this object since the worker process started counter
haproxy_frontend_intercepted_requests_total Total number of HTTP requests intercepted on the frontend (redirects/stats/services) since the worker process started counter
haproxy_frontend_internal_errors_total Total number of internal errors since process started counter
haproxy_frontend_limit_session_rate Limit on the number of sessions accepted in a second (frontend only, ‘rate-limit sessions’ setting) gauge
haproxy_frontend_limit_sessions Frontend/listener/server’s maxconn, backend’s fullconn gauge
haproxy_frontend_max_session_rate Highest value of sessions per second observed since the worker process started gauge
haproxy_frontend_max_sessions Highest value of current sessions encountered since process started gauge
haproxy_frontend_pack_decompression_failed Total number of QPACK_DECOMPRESSION_FAILED errors received counter
haproxy_frontend_qpack_decoder_stream_error Total number of QPACK_DECODER_STREAM_ERROR errors received counter
haproxy_frontend_qpack_encoder_stream_error Total number of QPACK_ENCODER_STREAM_ERROR errors received counter
haproxy_frontend_quic_conn_migration_done Total number of connection migration proceeded counter
haproxy_frontend_quic_data_blocked Total number of received DATA_BLOCKED frames counter
haproxy_frontend_quic_dropped_parsing_pkt Total number of dropped packets upon parsing error counter
haproxy_frontend_quic_dropped_pkt Total number of dropped packets counter
haproxy_frontend_quic_dropped_pkt_bufoverrun Total number of dropped packets because of buffer overrun counter
haproxy_frontend_quic_half_open_conn Total number of half-open connections counter
haproxy_frontend_quic_hdshk_fail Total number of handshake failures counter
haproxy_frontend_quic_lost_pkt Total number of lost sent packets counter
haproxy_frontend_quic_retry_error Total number of Retry tokens errors counter
haproxy_frontend_quic_retry_sent Total number of Retry sent counter
haproxy_frontend_quic_retry_validated Total number of validated Retry tokens counter
haproxy_frontend_quic_rxbuf_full Total number of cancelled reception due to full receiver buffer counter
haproxy_frontend_quic_sendto_err Total number of errors on sendto() calls, EAGAIN excepted counter
haproxy_frontend_quic_sendto_err_unknwn Total number of errors on sendto() calls not explicitly listed counter
haproxy_frontend_quic_sent_pkt Total number of sent packets counter
haproxy_frontend_quic_socket_full Total number of EAGAIN error on sendto() calls counter
haproxy_frontend_quic_stless_rst_sent Total number of stateless reset packets sent counter
haproxy_frontend_quic_stream_data_blocked Total number of received STREAM_DATA_BLOCKED frames counter
haproxy_frontend_quic_streams_blocked_bidi Total number of received STREAMS_BLOCKED_BIDI frames counter
haproxy_frontend_quic_streams_blocked_uni Total number of received STREAMS_BLOCKED_UNI frames counter
haproxy_frontend_quic_too_short_dgram Total number of too short dgrams with initial packets counter
haproxy_frontend_quic_transp_err_aead_limit_reached Total number of AEAD_LIMIT_REACHED errors received counter
haproxy_frontend_quic_transp_err_application_error Total number of APPLICATION_ERROR errors received counter
haproxy_frontend_quic_transp_err_connection_id_limit Total number of CONNECTION_ID_LIMIT_ERROR errors received counter
haproxy_frontend_quic_transp_err_connection_refused Total number of CONNECTION_REFUSED errors received counter
haproxy_frontend_quic_transp_err_crypto_buffer_exceeded Total number of CRYPTO_BUFFER_EXCEEDED errors received counter
haproxy_frontend_quic_transp_err_crypto_error Total number of CRYPTO_ERROR errors received counter
haproxy_frontend_quic_transp_err_final_size_error Total number of FINAL_SIZE_ERROR errors received counter
haproxy_frontend_quic_transp_err_flow_control_error Total number of FLOW_CONTROL_ERROR errors received counter
haproxy_frontend_quic_transp_err_frame_encoding_error Total number of FRAME_ENCODING_ERROR errors received counter
haproxy_frontend_quic_transp_err_internal_error Total number of INTERNAL_ERROR errors received counter
haproxy_frontend_quic_transp_err_invalid_token Total number of INVALID_TOKEN errors received counter
haproxy_frontend_quic_transp_err_key_update_error Total number of KEY_UPDATE_ERROR errors received counter
haproxy_frontend_quic_transp_err_no_error Total number of NO_ERROR errors received counter
haproxy_frontend_quic_transp_err_no_viable_path Total number of NO_VIABLE_PATH errors received counter
haproxy_frontend_quic_transp_err_protocol_violation_error Total number of PROTOCOL_VIOLATION errors received counter
haproxy_frontend_quic_transp_err_stream_limit_error Total number of STREAM_LIMIT_ERROR errors received counter
haproxy_frontend_quic_transp_err_stream_state_error Total number of STREAM_STATE_ERROR errors received counter
haproxy_frontend_quic_transp_err_transport_parameter_error Total number of TRANSPORT_PARAMETER_ERROR errors received counter
haproxy_frontend_quic_transp_err_unknown_error Total number of UNKNOWN_ERROR errors received counter
haproxy_frontend_request_errors_total Total number of invalid requests since process started counter
haproxy_frontend_requests_denied_total Total number of denied requests since process started counter
haproxy_frontend_responses_denied_total Total number of denied responses since process started counter
haproxy_frontend_sessions_total Total number of sessions since process started counter
haproxy_frontend_ssl_failed_handshake Total number of failed handshake counter
haproxy_frontend_ssl_reused_sess Total number of ssl sessions reused counter
haproxy_frontend_ssl_sess Total number of ssl sessions established counter
haproxy_frontend_status Current status of the service, per state label value gauge

Backend metrics Jump to heading

Name Description Type
haproxy_backend_active_servers Total number of active UP servers with a non-zero weight gauge
haproxy_backend_agg_check_status Backend’s aggregated gauge of servers’ state check status gauge
haproxy_backend_agg_server_check_status Deprecated. Backend’s aggregated gauge of servers’ status gauge
haproxy_backend_agg_server_status Backend’s aggregated gauge of servers’ status gauge
haproxy_backend_backup_servers Total number of backup UP servers with a non-zero weight gauge
haproxy_backend_bytes_in_total Total number of request bytes since process started counter
haproxy_backend_bytes_out_total Total number of response bytes since process started counter
haproxy_backend_check_last_change_seconds How long ago the last server state changed, in seconds gauge
haproxy_backend_check_up_down_total Total number of failed checks causing UP to DOWN server transitions, per server/backend, since the worker process started counter
haproxy_backend_client_aborts_total Total number of requests or connections aborted by the client since the worker process started counter
haproxy_backend_connect_time_average_seconds Avg. connect time for last 1024 successful connections gauge
haproxy_backend_connection_attempts_total Total number of outgoing connection attempts on this backend/server since the worker process started counter
haproxy_backend_connection_errors_total Total number of failed connections to server since the worker process started counter
haproxy_backend_connection_reuses_total Total number of reused connection on this backend/server since the worker process started counter
haproxy_backend_current_queue Number of current queued connections gauge
haproxy_backend_current_sessions Number of current sessions on the frontend, backend, or server gauge
haproxy_backend_downtime_seconds_total Total time spent in DOWN state, for server or backend counter
haproxy_backend_failed_header_rewriting_total Total number of failed HTTP header rewrites since the worker process started counter
haproxy_backend_h1_bytes_in Total number of bytes received counter
haproxy_backend_h1_bytes_out Total number of bytes sent counter
haproxy_backend_h1_open_connections Count of currently open connections counter
haproxy_backend_h1_open_streams Count of currently open streams counter
haproxy_backend_h1_spliced_bytes_in Total number of bytes received using kernel splicing counter
haproxy_backend_h1_spliced_bytes_out Total number of bytes sent using kernel splicing counter
haproxy_backend_h1_total_connections Total number of connections counter
haproxy_backend_h1_total_streams Total number of streams counter
haproxy_backend_h2_backend_open_streams Count of currently open streams counter
haproxy_backend_h2_backend_open_streams Count of currently open streams counter
haproxy_backend_h2_backend_total_streams Total number of streams counter
haproxy_backend_h2_data_rcvd Total number of received DATA frames counter
haproxy_backend_h2_data_rcvd Total number of received DATA frames counter
haproxy_backend_h2_detected_conn_protocol_errors Total number of connection protocol errors counter
haproxy_backend_h2_detected_conn_protocol_errors Total number of connection protocol errors counter
haproxy_backend_h2_detected_strm_protocol_errors Total number of stream protocol errors counter
haproxy_backend_h2_detected_strm_protocol_errors Total number of stream protocol errors counter
haproxy_backend_h2_goaway_rcvd Total number of received GOAWAY frames counter
haproxy_backend_h2_goaway_rcvd Total number of received GOAWAY frames counter
haproxy_backend_h2_goaway_resp Total number of GOAWAY sent on detected error counter
haproxy_backend_h2_goaway_resp Total number of GOAWAY sent on detected error counter
haproxy_backend_h2_headers_rcvd Total number of received HEADERS frames counter
haproxy_backend_h2_headers_rcvd Total number of received HEADERS frames counter
haproxy_backend_h2_open_connections Count of currently open connections counter
haproxy_backend_h2_open_connections Count of currently open connections counter
haproxy_backend_h2_rst_stream_rcvd Total number of received RST_STREAM frames counter
haproxy_backend_h2_rst_stream_rcvd Total number of received RST_STREAM frames counter
haproxy_backend_h2_rst_stream_resp Total number of RST_STREAM sent on detected error counter
haproxy_backend_h2_rst_stream_resp Total number of RST_STREAM sent on detected error counter
haproxy_backend_h2_settings_rcvd Total number of received SETTINGS frames counter
haproxy_backend_h2_settings_rcvd Total number of received SETTINGS frames counter
haproxy_backend_h2_total_connections Total number of connections counter
haproxy_backend_http_cache_hits_total Total number of HTTP requests not found in the cache on this frontend/backend since the worker process started counter
haproxy_backend_http_cache_lookups_total Total number of HTTP requests looked up in the cache on this frontend/backend since the worker process started counter
haproxy_backend_http_comp_bytes_bypassed_total Total number of bytes that bypassed HTTP compression for this object since the worker process started (CPU/memory/bandwidth limitation) counter
haproxy_backend_http_comp_bytes_in_total Total number of bytes submitted to the HTTP compressor for this object since the worker process started counter
haproxy_backend_http_comp_bytes_out_total Total number of bytes emitted by the HTTP compressor for this object since the worker process started counter
haproxy_backend_http_comp_responses_total Total number of HTTP responses that were compressed for this object since the worker process started counter
haproxy_backend_http_requests_total Total number of HTTP requests processed by this object since the worker process started counter
haproxy_backend_http_responses_total Total number of HTTP responses with status 100-199 returned by this object since the worker process started counter
haproxy_backend_internal_errors_total Total number of internal errors since process started counter
haproxy_backend_last_session_seconds How long ago some traffic was seen on this object on this worker process, in seconds gauge
haproxy_backend_limit_sessions Frontend/listener/server’s maxconn, backend’s fullconn gauge
haproxy_backend_loadbalanced_total Total number of requests routed by load balancing since the worker process started (ignores queue pop and stickiness) counter
haproxy_backend_max_connect_time_seconds Maximum observed time spent waiting for a connection to complete gauge
haproxy_backend_max_queue Highest value of queued connections encountered since process started gauge
haproxy_backend_max_queue_time_seconds Maximum observed time spent in the queue gauge
haproxy_backend_max_response_time_seconds Maximum observed time spent waiting for a server response gauge
haproxy_backend_max_session_rate Highest value of sessions per second observed since the worker process started gauge
haproxy_backend_max_sessions Highest value of current sessions encountered since process started gauge
haproxy_backend_max_total_time_seconds Maximum observed total request+response time (request+queue+connect+response+processing) gauge
haproxy_backend_queue_time_average_seconds Avg. queue time for last 1024 successful connections gauge
haproxy_backend_redispatch_warnings_total Total number of server redispatches due to connection failures since the worker process started counter
haproxy_backend_requests_denied_total Total number of denied requests since process started counter
haproxy_backend_response_errors_total Total number of invalid responses since the worker process started counter
haproxy_backend_response_time_average_seconds Avg. response time for last 1024 successful connections gauge
haproxy_backend_responses_denied_total Total number of denied responses since process started counter
haproxy_backend_retry_warnings_total Total number of server connection retries since the worker process started counter
haproxy_backend_server_aborts_total Total number of requests or connections aborted by the server since the worker process started counter
haproxy_backend_sessions_total Total number of sessions since process started counter
haproxy_backend_ssl_failed_handshake Total number of failed handshake counter
haproxy_backend_ssl_failed_handshake Total number of failed handshake counter
haproxy_backend_ssl_reused_sess Total number of ssl sessions reused counter
haproxy_backend_ssl_reused_sess Total number of ssl sessions reused counter
haproxy_backend_ssl_sess Total number of ssl sessions established counter
haproxy_backend_ssl_sess Total number of ssl sessions established counter
haproxy_backend_status Current status of the service, per state label value gauge
haproxy_backend_total_time_average_seconds Avg. total time for last 1024 successful connections gauge
haproxy_backend_uweight Server’s user weight, or sum of active servers’ user weights for a backend gauge
haproxy_backend_weight Server’s effective weight, or sum of active servers’ effective weights for a backend gauge

Server metrics Jump to heading

Name Description Type
haproxy_server_active Total number of active UP servers with a non-zero weight gauge
haproxy_server_backup Total number of backup UP servers with a non-zero weight gauge
haproxy_server_bytes_in_total Total number of request bytes since process started counter
haproxy_server_bytes_out_total Total number of response bytes since process started counter
haproxy_server_check_code layer5-7 code, if available of the last health check gauge
haproxy_server_check_duration_seconds Total duration of the latest server health check, in seconds gauge
haproxy_server_check_failures_total Total number of failed individual health checks per server/backend, since the worker process started counter
haproxy_server_check_last_change_seconds How long ago the last server state changed, in seconds gauge
haproxy_server_check_status Status of last health check, per state label value gauge
haproxy_server_check_up_down_total Total number of failed checks causing UP to DOWN server transitions, per server/backend, since the worker process started counter
haproxy_server_client_aborts_total Total number of requests or connections aborted by the client since the worker process started counter
haproxy_server_connect_time_average_seconds Avg. connect time for last 1024 successful connections gauge
haproxy_server_connection_attempts_total Total number of outgoing connection attempts on this backend/server since the worker process started counter
haproxy_server_connection_errors_total Total number of failed connections to server since the worker process started counter
haproxy_server_connection_reuses_total Total number of reused connection on this backend/server since the worker process started counter
haproxy_server_current_queue Number of current queued connections gauge
haproxy_server_current_sessions Number of current sessions on the frontend, backend or server gauge
haproxy_server_current_throttle Throttling ratio applied to a server’s maxconn and weight during the slowstart period (0 to 100%) gauge
haproxy_server_downtime_seconds_total Total time spent in DOWN state, for server or backend counter
haproxy_server_failed_header_rewriting_total Total number of failed HTTP header rewrites since the worker process started counter
haproxy_server_http_responses_total Total number of HTTP responses with status 100-199 returned by this object since the worker process started counter
haproxy_server_idle_connections_current Current number of idle connections available for reuse on this server gauge
haproxy_server_idle_connections_limit Limit on the number of available idle connections on this server (server pool_max_conn directive) gauge
haproxy_server_internal_errors_total Total number of internal errors since process started counter
haproxy_server_last_session_seconds How long ago some traffic was seen on this object on this worker process, in seconds gauge
haproxy_server_limit_sessions Frontend/listener/server’s maxconn, backend’s fullconn gauge
haproxy_server_loadbalanced_total Total number of requests routed by load balancing since the worker process started (ignores queue pop and stickiness) counter
haproxy_server_max_connect_time_seconds Maximum observed time spent waiting for a connection to complete gauge
haproxy_server_max_queue Highest value of queued connections encountered since process started gauge
haproxy_server_max_queue_time_seconds Maximum observed time spent in the queue gauge
haproxy_server_max_response_time_seconds Maximum observed time spent waiting for a server response gauge
haproxy_server_max_session_rate Highest value of sessions per second observed since the worker process started gauge
haproxy_server_max_sessions Highest value of current sessions encountered since process started gauge
haproxy_server_max_total_time_seconds Maximum observed total request+response time (request+queue+connect+response+processing) gauge
haproxy_server_need_connections_current Estimated needed number of connections gauge
haproxy_server_queue_limit Limit on the number of connections in queue, for servers only (maxqueue argument) gauge
haproxy_server_queue_time_average_seconds Avg. queue time for last 1024 successful connections gauge
haproxy_server_redispatch_warnings_total Total number of server redispatches due to connection failures since the worker process started counter
haproxy_server_response_errors_total Total number of invalid responses since the worker process started counter
haproxy_server_response_time_average_seconds Avg. response time for last 1024 successful connections gauge
haproxy_server_responses_denied_total Total number of denied responses since process started counter
haproxy_server_retry_warnings_total Total number of server connection retries since the worker process started counter
haproxy_server_safe_idle_connections_current Current number of safe idle connections gauge
haproxy_server_server_aborts_total Total number of requests or connections aborted by the server since the worker process started counter
haproxy_server_sessions_total Total number of sessions since process started counter
haproxy_server_ssl_failed_handshake Total number of failed handshake counter
haproxy_server_ssl_reused_sess Total number of ssl sessions reused counter
haproxy_server_ssl_sess Total number of ssl sessions established counter
haproxy_server_status Current status of the service, per state label value gauge
haproxy_server_total_time_average_seconds Avg. total time for last 1024 successful connections gauge
haproxy_server_unsafe_idle_connections_current Current number of unsafe idle connections gauge
haproxy_server_used_connections_current Current number of connections in use gauge
haproxy_server_uweight Server’s user weight, or sum of active servers’ user weights for a backend gauge
haproxy_server_weight Server’s effective weight, or sum of active servers’ effective weights for a backend gauge

DNS resolver metrics Jump to heading

Name Description Type
haproxy_resolver_any_err Any errors gauge
haproxy_resolver_cname CNAME gauge
haproxy_resolver_cname_error CNAME error gauge
haproxy_resolver_invalid Invalid gauge
haproxy_resolver_nx NX gauge
haproxy_resolver_other Other gauge
haproxy_resolver_outdated Outdated gauge
haproxy_resolver_refused Refused gauge
haproxy_resolver_send_error Send error gauge
haproxy_resolver_sent Sent gauge
haproxy_resolver_timeout Timeout gauge
haproxy_resolver_too_big Too big gauge
haproxy_resolver_truncated Truncated gauge
haproxy_resolver_update Update gauge
haproxy_resolver_valid Valid gauge

Stick table metrics Jump to heading

Name Description Type
haproxy_sticktable_size Stick table size gauge
haproxy_sticktable_used Number of entries used in this stick table gauge

See also Jump to heading

Do you have any suggestions on how we can improve the content of this page?