HAProxy

Supported OS Linux Windows Mac OS

Integration version7.0.0

HAProxy Out of the box Dashboard

Overview

Capture HAProxy activity in Datadog to:

  • Visualize HAProxy load-balancing performance.
  • Know when a server goes down.
  • Correlate the performance of HAProxy with the rest of your applications.

Setup

This integration can collect metrics from a Prometheus endpoint (recommended) or from a socket-based integration through the stats endpoint (deprecated). Using the Prometheus endpoint requires HAProxy version 2 (enterprise version 1.9rc1) or later.

When using the Prometheus endpoint, starting with version 4.0.0, this OpenMetrics-based integration has a latest mode (use_openmetrics: true) and a legacy mode (use_openmetrics: false and use_prometheus: true). To get all the most up-to-date features, Datadog recommends enabling the latest mode. For more information, see Latest and Legacy Versioning For OpenMetrics-based Integrations.

To use the socket-based integration, set both use_openmetrics and use_prometheus to false and follow the corresponding instructions on the Configuration section.

The use_openmetrics option uses the latest mode of OpenMetrics, which requires Agent v7.35 or later, or for you to enable Python 3 in Agent v6.35 or later for metric collection. For hosts that are unable to use Python 3 or are on Agent v7.34 or earlier, use the legacy mode of OpenMetrics or the socket-based legacy integration.

Metrics marked as [OpenMetrics V1] or [OpenMetrics V2] are only available using the corresponding mode of the HAProxy integration. Metrics marked as [OpenMetrics V1 and V2] are collected by both modes.

Installation

The HAProxy check is included in the Datadog Agent package, so you don’t need to install anything else on your HAProxy server.

Configuration

Using Prometheus

The recommended way to set up this integration is by enabling the Prometheus endpoint on HAProxy. This endpoint is built into HAProxy starting with version 2 (enterprise version 1.9rc1). If you are using an older version, consider setting up the HAProxy Prometheus exporter, or alternatively set up the legacy socket-based integration described in the next section.

To use the legacy OpenMetrics mode instead of the latest one, change the use_openmetrics option to use_prometheus, and change the openmetrics_endpoint option to prometheus_url. For more information, see the Prometheus and OpenMetrics metrics collection from a host documentation.

Prepare HAProxy

  1. Configure your haproxy.conf using the official guide.
  2. Restart HAProxy to enable the Prometheus endpoint.

Configure the Agent

Host

Metric collection

To configure this check for an Agent running on a host:

  1. Edit the haproxy.d/conf.yaml file in the conf.d/ folder at the root of your Agent’s configuration directory to start collecting your HAProxy metrics. See the sample haproxy.d/conf.yaml for all available configuration options.

    instances:
    
      ## @param use_openmetrics - boolean - optional - default: false
      ## Enable to preview the new version of the check which supports HAProxy version 2 or later
      ## or environments using the HAProxy exporter.
      ##
      ## OpenMetrics-related options take effect only when this is set to `true`. 
      ##
      ## Uses the latest OpenMetrics V2 implementation for more features and better performance.
      ## Note: To see the configuration options for the OpenMetrics V1 implementation (Agent v7.33 or earlier),
      ## https://github.com/DataDog/integrations-core/blob/7.33.x/haproxy/datadog_checks/haproxy/data/conf.yaml.example
      #
    - use_openmetrics: true  # Enables OpenMetrics V2
    
      ## @param openmetrics_endpoint - string - optional
      ## The URL exposing metrics in the OpenMetrics format.
      #
      openmetrics_endpoint: http://localhost:<PORT>/metrics
    

    To view configuration options for the legacy implementation, see the sample haproxy.d/conf.yaml file for Agent v7.34 or earlier.

  2. Restart the Agent.

Containerized

For containerized environments, see the Autodiscovery Integration Templates for guidance on applying the parameters below.

Metric collection
ParameterValue
<INTEGRATION_NAME>haproxy
<INIT_CONFIG>blank or {}
<INSTANCE_CONFIG>{"openmetrics_endpoint": "http://%%host%%:<PORT>/metrics", "use_openmetrics": "true"}
Kubernetes Deployment example

Add pod annotations under .spec.template.metadata for a Deployment:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: haproxy
spec:
  template:
    metadata:
      labels:
        name: haproxy
      annotations:
        ad.datadoghq.com/haproxy.check_names: '["haproxy"]'
        ad.datadoghq.com/haproxy.init_configs: '[{}]'
        ad.datadoghq.com/haproxy.instances: |
          [
            {
              "openmetrics_endpoint": "http://%%host%%:<PORT>/metrics", "use_openmetrics": "true"
            }
          ]          
    spec:
      containers:
        - name: haproxy

Using the stats endpoint

This configuration strategy is provided as a reference for legacy users. If you are setting up the integration for the first time, consider using the Prometheus-based strategy described in the previous section.

The Agent collects metrics using a stats endpoint:

  1. Configure one in your haproxy.conf:

      listen stats # Define a listen section called "stats"
      bind :9000 # Listen on localhost:9000
      mode http
      stats enable  # Enable stats page
      stats hide-version  # Hide HAProxy version
      stats realm Haproxy\ Statistics  # Title text for popup window
      stats uri /haproxy_stats  # Stats URI
      stats auth Username:Password  # Authentication credentials
    
  2. Restart HAProxy to enable the stats endpoint.

Host

To configure this check for an Agent running on a host:

Edit the haproxy.d/conf.yaml file, in the conf.d/ folder at the root of your Agent’s configuration directory to start collecting your HAProxy metrics and logs. See the sample haproxy.d/conf.yaml for all available configuration options.

Metric collection
  1. Add this configuration block to your haproxy.d/conf.yaml file to start gathering your HAProxy Metrics:

    init_config:
    
    instances:
      ## @param url - string - required
      ## Haproxy URL to connect to gather metrics.
      ## Set the according <USERNAME> and <PASSWORD> or use directly a unix stats
      ## or admin socket: unix:///var/run/haproxy.sock
      #
      - url: http://localhost/admin?stats
    
  2. Restart the Agent.

Log collection

By default Haproxy sends logs over UDP to port 514. The Agent can listen for these logs on this port, however, binding to a port number under 1024 requires elevated permissions. Follow the instructions below to set this up. Alternatively, you can use a different port and skip step 3.

  1. Collecting logs is disabled by default in the Datadog Agent, enable it in your datadog.yaml file:

    logs_enabled: true
    
  2. Add this configuration block to your haproxy.d/conf.yaml file to start collecting your Haproxy Logs:

    logs:
      - type: udp
        port: 514
        service: <SERVICE_NAME>
        source: haproxy
    

    Change the service parameter value and configure it for your environment. See the sample haproxy.d/conf.yaml for all available configuration options.

  3. Grant access to port 514 using the setcap command:

    sudo setcap CAP_NET_BIND_SERVICE=+ep /opt/datadog-agent/bin/agent/agent
    

    Verify the setup is correct by running the getcap command:

    sudo getcap /opt/datadog-agent/bin/agent/agent
    

    With the expected output:

    /opt/datadog-agent/bin/agent/agent = cap_net_bind_service+ep
    

    Note: Re-run this setcap command every time you upgrade the Agent.

  4. Restart the Agent.

Docker

To configure this check for an Agent running on a container:

Metric collection

Set Autodiscovery Integrations Templates as Docker labels on your application container:

LABEL "com.datadoghq.ad.check_names"='["haproxy"]'
LABEL "com.datadoghq.ad.init_configs"='[{}]'
LABEL "com.datadoghq.ad.instances"='[{"url": "https://%%host%%/admin?stats"}]'
Log collection

Collecting logs is disabled by default in the Datadog Agent. To enable it, see Docker Log Collection.

Then, set Log Integrations as Docker labels:

LABEL "com.datadoghq.ad.logs"='[{"source":"haproxy","service":"<SERVICE_NAME>"}]'

Kubernetes

To configure this check for an Agent running on Kubernetes:

Metric collection

Set Autodiscovery Integrations Templates as pod annotations on your application container. Aside from this, templates can also be configured with a file, a configmap, or a key-value store.

Annotations v1 (for Datadog Agent v7.36 or earlier)

apiVersion: v1
kind: Pod
metadata:
  name: haproxy
  annotations:
    ad.datadoghq.com/haproxy.check_names: '["haproxy"]'
    ad.datadoghq.com/haproxy.init_configs: '[{}]'
    ad.datadoghq.com/haproxy.instances: |
      [
        {
          "url": "https://%%host%%/admin?stats"
        }
      ]      
spec:
  containers:
    - name: haproxy

Annotations v2 (for Datadog Agent v7.36 or later)

apiVersion: v1
kind: Pod
metadata:
  name: haproxy
  annotations:
    ad.datadoghq.com/haproxy.checks: |
      {
        "haproxy": {
          "init_config": {},
          "instances": [
            {
              "url": "https://%%host%%/admin?stats"
            }
          ]
        }
      }      
spec:
  containers:
    - name: haproxy
Log collection

Available for Agent versions >6.0

Collecting logs is disabled by default in the Datadog Agent. To enable it, see Kubernetes Log Collection.

Then, set Log Integrations as pod annotations. This can also be configured with a file, a configmap, or a key-value store.

Annotations v1/v2

apiVersion: v1
kind: Pod
metadata:
  name: haproxy
  annotations:
    ad.datadoghq.com/haproxy.logs: '[{"source":"haproxy","service":"<SERVICE_NAME>"}]'
spec:
  containers:
    - name: haproxy

ECS

To configure this check for an Agent running on ECS:

Metric collection

Set Autodiscovery Integrations Templates as Docker labels on your application container:

{
  "containerDefinitions": [{
    "name": "haproxy",
    "image": "haproxy:latest",
    "dockerLabels": {
      "com.datadoghq.ad.check_names": "[\"haproxy\"]",
      "com.datadoghq.ad.init_configs": "[{}]",
      "com.datadoghq.ad.instances": "[{\"url\": \"https://%%host%%/admin?stats\"}]"
    }
  }]
}
Log collection

Available for Agent versions 6.0 or later

Collecting logs is disabled by default in the Datadog Agent. To enable it, see ECS Log Collection.

Then, set Log Integrations as Docker labels:

{
  "containerDefinitions": [{
    "name": "haproxy",
    "image": "haproxy:latest",
    "dockerLabels": {
      "com.datadoghq.ad.logs": "[{\"source\":\"haproxy\",\"service\":\"<SERVICE_NAME>\"}]"
    }
  }]
}

Validation

Run the Agent’s status subcommand and look for haproxy under the Checks section.

Data Collected

Metrics

haproxy.backend.active.servers
(gauge)
[OpenMetrics V1 and V2] Current number of active servers.
haproxy.backend.agg.check.status
(gauge)
[OpenMetrics V1 and V2] Backend's aggregated gauge of servers' state check status (since >= 2.4).
haproxy.backend.agg.server.check.status
(gauge)
[OpenMetrics V1 and V2] Backend's aggregated gauge of servers' state check status (deprecated).
haproxy.backend.agg.server.status
(gauge)
[OpenMetrics V1 and V2] Backend's aggregated gauge of servers' status (since >= 2.4).
haproxy.backend.backup.servers
(gauge)
[OpenMetrics V1 and V2] Current number of backup servers.
haproxy.backend.bytes.in.count
(count)
[OpenMetrics V2] Current total of incoming bytes. By default, submitted as count if using Prometheus.
Shown as byte
haproxy.backend.bytes.in.total
(count)
[OpenMetrics V1] Current total of incoming bytes. By default, submitted as count if using Prometheus.
Shown as byte
haproxy.backend.bytes.in_rate
(gauge)
[Legacy] Rate of bytes in on backend hosts.
Shown as byte
haproxy.backend.bytes.out.count
(count)
[OpenMetrics V2] Current total of outgoing bytes. By default, submitted as count if using Prometheus.
Shown as byte
haproxy.backend.bytes.out.total
(count)
[OpenMetrics V1] Current total of outgoing bytes. By default, submitted as count if using Prometheus.
Shown as byte
haproxy.backend.bytes.out_rate
(gauge)
[Legacy] Rate of bytes out on backend hosts.
Shown as byte
haproxy.backend.check.last.change.seconds
(gauge)
[OpenMetrics V1 and V2] Number of seconds since the last UP<->DOWN transition.
haproxy.backend.check.up.down.count
(count)
[OpenMetrics V2] Total number of UP->DOWN transitions.
haproxy.backend.check.up.down.total
(count)
[OpenMetrics V1] Total number of UP->DOWN transitions.
haproxy.backend.client.aborts.count
(count)
[OpenMetrics V2] Total number of data transfers aborted by the client.
haproxy.backend.client.aborts.total
(count)
[OpenMetrics V1] Total number of data transfers aborted by the client.
haproxy.backend.connect.time
(gauge)
[Legacy] Average connect time over the last 1024 backend requests.
Shown as millisecond
haproxy.backend.connect.time.average.seconds
(gauge)
[OpenMetrics V1 and V2] Avg. connect time for last 1024 successful connections.
haproxy.backend.connection.attempts.count
(count)
[OpenMetrics V2] Total number of connection establishment attempts.
haproxy.backend.connection.attempts.total
(count)
[OpenMetrics V1] Total number of connection establishment attempts.
haproxy.backend.connection.errors.count
(count)
[OpenMetrics V2] Total number of connection errors.
haproxy.backend.connection.errors.total
(count)
[OpenMetrics V1] Total number of connection errors.
haproxy.backend.connection.reuses.count
(count)
[OpenMetrics V2] Total number of connection reuses.
haproxy.backend.connection.reuses.total
(count)
[OpenMetrics V1] Total number of connection reuses.
haproxy.backend.count.time.average.seconds
(gauge)
[OpenMetrics V1 and V2] Avg. total time for last 1024 successful connections.
haproxy.backend.current.queue
(gauge)
[OpenMetrics V1 and V2] Current number of queued requests.
haproxy.backend.current.sessions
(gauge)
[OpenMetrics V1 and V2] Current number of active sessions.
haproxy.backend.denied.req_rate
(gauge)
[Legacy] Number of backend requests denied due to security concerns.
Shown as request
haproxy.backend.denied.resp_rate
(gauge)
[Legacy] Number of backend responses denied due to security concerns.
Shown as response
haproxy.backend.downtime.seconds.count
(count)
[OpenMetrics V2] Total downtime (in seconds) for the service.
haproxy.backend.downtime.seconds.total
(count)
[OpenMetrics V1] Total downtime (in seconds) for the service.
haproxy.backend.errors.con_rate
(gauge)
[Legacy] Rate of backend requests that encountered an error trying to connect to a backend server.
Shown as error
haproxy.backend.errors.resp_rate
(gauge)
[Legacy] Rate of backend responses aborted due to error.
Shown as error
haproxy.backend.failed.header.rewriting.count
(count)
[OpenMetrics V2] Total number of failed header rewriting warnings.
haproxy.backend.failed.header.rewriting.total
(count)
[OpenMetrics V1] Total number of failed header rewriting warnings.
haproxy.backend.http.cache.hits.count
(count)
[OpenMetrics V2] Total number of HTTP cache hits.
haproxy.backend.http.cache.hits.total
(count)
[OpenMetrics V1] Total number of HTTP cache hits.
haproxy.backend.http.cache.lookups.count
(count)
[OpenMetrics V2] Total number of HTTP cache lookups.
haproxy.backend.http.cache.lookups.total
(count)
[OpenMetrics V1] Total number of HTTP cache lookups.
haproxy.backend.http.comp.bytes.bypassed.count
(count)
[OpenMetrics V2] Total number of bytes that bypassed the HTTP compressor (CPU/BW limit).
Shown as byte
haproxy.backend.http.comp.bytes.bypassed.total
(count)
[OpenMetrics V1] Total number of bytes that bypassed the HTTP compressor (CPU/BW limit).
Shown as byte
haproxy.backend.http.comp.bytes.in.count
(count)
[OpenMetrics V2] Total number of HTTP response bytes fed to the compressor.
Shown as byte
haproxy.backend.http.comp.bytes.in.total
(count)
[OpenMetrics V1] Total number of HTTP response bytes fed to the compressor.
Shown as byte
haproxy.backend.http.comp.bytes.out.count
(count)
[OpenMetrics V2] Total number of HTTP response bytes emitted by the compressor.
Shown as byte
haproxy.backend.http.comp.bytes.out.total
(count)
[OpenMetrics V1] Total number of HTTP response bytes emitted by the compressor.
Shown as byte
haproxy.backend.http.comp.responses.count
(count)
[OpenMetrics V2] Total number of HTTP responses that were compressed.
haproxy.backend.http.comp.responses.total
(count)
[OpenMetrics V1] Total number of HTTP responses that were compressed.
haproxy.backend.http.requests.count
(count)
[OpenMetrics V2] Total number of HTTP requests received.
haproxy.backend.http.requests.total
(count)
[OpenMetrics V1] Total number of HTTP requests received.
haproxy.backend.http.responses.count
(count)
[OpenMetrics V2] Total number of HTTP responses.
haproxy.backend.http.responses.total
(count)
[OpenMetrics V1] Total number of HTTP responses.
haproxy.backend.internal.errors.count
(count)
[OpenMetrics V2] Total number of internal errors since process started (since >= 2.2).
haproxy.backend.internal.errors.total
(count)
[OpenMetrics V1] Total number of internal errors since process started (since >= 2.2).
haproxy.backend.last.session.seconds
(gauge)
[OpenMetrics V1 and V2] Number of seconds since last session assigned to server/backend.
haproxy.backend.limit.sessions
(gauge)
[OpenMetrics V1 and V2] Configured session limit.
haproxy.backend.loadbalanced.count
(count)
[OpenMetrics V2] Total number of times a service was selected, either for new sessions, or when redispatching.
haproxy.backend.loadbalanced.total
(count)
[OpenMetrics V1] Total number of times a service was selected, either for new sessions, or when redispatching.
haproxy.backend.max.connect.time.seconds
(gauge)
[OpenMetrics V1 and V2] Maximum observed time spent waiting for a connection to complete
haproxy.backend.max.count.time.seconds
(gauge)
[OpenMetrics V1 and V2] Maximum observed total request+response time (request+queue+connect+response+processing)
haproxy.backend.max.queue
(gauge)
[OpenMetrics V1 and V2] Maximum observed number of queued requests.
haproxy.backend.max.queue.time.seconds
(gauge)
[OpenMetrics V1 and V2] Maximum observed time spent in the queue
haproxy.backend.max.response.time.seconds
(gauge)
[OpenMetrics V1 and V2] Maximum observed time spent waiting for a server response
haproxy.backend.max.session.rate
(gauge)
[OpenMetrics V1 and V2] Maximum observed number of sessions per second.
haproxy.backend.max.sessions
(gauge)
[OpenMetrics V1 and V2] Maximum observed number of active sessions.
haproxy.backend.max.total.time.seconds
(gauge)
[OpenMetrics V1 and V2] Maximum observed total request+response time (request+queue+connect+response+processing)
haproxy.backend.queue.current
(gauge)
[Legacy] Number of backend requests without an assigned backend.
Shown as request
haproxy.backend.queue.time
(gauge)
[Legacy] Average queue time over the last 1024 backend requests.
Shown as millisecond
haproxy.backend.queue.time.average.seconds
(gauge)
[OpenMetrics V1 and V2] Avg. queue time for last 1024 successful connections.
haproxy.backend.redispatch.warnings.count
(count)
[OpenMetrics V2] Total number of redispatch warnings.
haproxy.backend.redispatch.warnings.total
(count)
[OpenMetrics V1] Total number of redispatch warnings.
haproxy.backend.requests.denied.count
(count)
[OpenMetrics V2] Total number of denied requests.
haproxy.backend.requests.denied.total
(count)
[OpenMetrics V1] Total number of denied requests.
haproxy.backend.requests.tot_rate
(gauge)
[Legacy] Rate of total number of backend HTTP requests.
Shown as request
haproxy.backend.response.1xx
(gauge)
[Legacy] Backend HTTP responses with 1xx code per second.
Shown as response
haproxy.backend.response.2xx
(gauge)
[Legacy] Backend HTTP responses with 2xx code per second.
Shown as response
haproxy.backend.response.3xx
(gauge)
[Legacy] Backend HTTP responses with 3xx code per second.
Shown as response
haproxy.backend.response.4xx
(gauge)
[Legacy] Backend HTTP responses with 4xx code per second.
Shown as response
haproxy.backend.response.5xx
(gauge)
[Legacy] Backend HTTP responses with 5xx code per second.
Shown as response
haproxy.backend.response.errors.count
(count)
[OpenMetrics V2] Total number of response errors.
haproxy.backend.response.errors.total
(count)
[OpenMetrics V1] Total number of response errors.
haproxy.backend.response.other
(gauge)
[Legacy] Backend HTTP responses with other code (protocol error).
Shown as response
haproxy.backend.response.time
(gauge)
[Legacy] Average response time over the last 1024 backend requests (0 for TCP).
Shown as millisecond
haproxy.backend.response.time.average.seconds
(gauge)
[OpenMetrics V1 and V2] Avg. response time for last 1024 successful connections.
haproxy.backend.responses.denied.count
(count)
[OpenMetrics V2] Total number of denied responses.
haproxy.backend.responses.denied.total
(count)
[OpenMetrics V1] Total number of denied responses.
haproxy.backend.retry.warnings.count
(count)
[OpenMetrics V2] Total number of retry warnings.
haproxy.backend.retry.warnings.total
(count)
[OpenMetrics V1] Total number of retry warnings.
haproxy.backend.server.aborts.count
(count)
[OpenMetrics V2] Total number of data transfers aborted by the server.
haproxy.backend.server.aborts.total
(count)
[OpenMetrics V1] Total number of data transfers aborted by the server.
haproxy.backend.session.current
(gauge)
[Legacy] Number of active backend sessions.
Shown as connection
haproxy.backend.session.limit
(gauge)
[Legacy] Configured backend session limit.
Shown as connection
haproxy.backend.session.pct
(gauge)
[Legacy] Percentage of sessions in use (backend.session.current/backend.session.limit * 100).
Shown as percent
haproxy.backend.session.rate
(gauge)
[Legacy] Number of backend sessions created per second.
Shown as connection
haproxy.backend.session.time
(gauge)
[Legacy] Average total session time over the last 1024 requests.
Shown as millisecond
haproxy.backend.sessions.count
(count)
[OpenMetrics V2] Total number of sessions.
haproxy.backend.sessions.total
(count)
[OpenMetrics V1] Total number of sessions.
haproxy.backend.status
(gauge)
[OpenMetrics V1 and V2] Current status of the service. <= 2.3: gauge value determines state (frontend: 0=STOP, 1=UP, 2=FULL - backend: 0=DOWN, 1=UP - server: 0=DOWN, 1=UP, 2=MAINT, 3=DRAIN, 4=NOLB). >= 2.4 per state label value.
haproxy.backend.total.time.average.seconds
(gauge)
[OpenMetrics V1 and V2] Avg. total time for last 1024 successful connections.
haproxy.backend.uptime
(gauge)
[Legacy] Number of seconds since the last UP<->DOWN transition
Shown as second
haproxy.backend.uweight
(gauge)
[OpenMetrics V1 and V2] Server's user weight or sum of active servers' user weights for a backend (>= 2.4).
haproxy.backend.warnings.redis_rate
(gauge)
[Legacy] Number of times a request was redispatched to another server.
Shown as error
haproxy.backend.warnings.retr_rate
(gauge)
[Legacy] Number of times a connection to a server was retried.
Shown as error
haproxy.backend.weight
(gauge)
[OpenMetrics V1 and V2] Service weight.
haproxy.backend_hosts
(gauge)
[Legacy] Number of backend hosts.
Shown as host
haproxy.count_per_status
(gauge)
[Legacy] Number of hosts by status (UP/DOWN/NOLB/MAINT).
Shown as host
haproxy.frontend.bytes.in.count
(count)
[OpenMetrics V2] Current total of incoming bytes. By default, submitted as count if using Prometheus.
Shown as byte
haproxy.frontend.bytes.in.total
(count)
[OpenMetrics V1] Current total of incoming bytes. By default, submitted as count if using Prometheus.
Shown as byte
haproxy.frontend.bytes.in_rate
(gauge)
[Legacy] Rate of bytes in on frontend hosts.
Shown as byte
haproxy.frontend.bytes.out.count
(count)
[OpenMetrics V2] Current total of outgoing bytes. By default, submitted as count if using Prometheus.
Shown as byte
haproxy.frontend.bytes.out.total
(count)
[OpenMetrics V1] Current total of outgoing bytes. By default, submitted as count if using Prometheus.
Shown as byte
haproxy.frontend.bytes.out_rate
(gauge)
[Legacy] Rate of bytes out on frontend hosts.
Shown as byte
haproxy.frontend.connections.count
(count)
[OpenMetrics V2] Total number of connections.
haproxy.frontend.connections.rate
(gauge)
[Legacy] Number of connections per second.
Shown as connection
haproxy.frontend.connections.rate.max
(gauge)
[OpenMetrics V1 and V2] Maximum observed number of connections per second.
haproxy.frontend.connections.tot_rate
(gauge)
[Legacy] Rate of total number of frontend connections.
Shown as connection
haproxy.frontend.connections.total
(count)
[OpenMetrics V1] Total number of connections.
haproxy.frontend.current.sessions
(gauge)
[OpenMetrics V1 and V2] Current number of active sessions.
haproxy.frontend.denied.connections.count
(count)
[OpenMetrics V2] Total number of requests denied by 'tcp-request connection' rules.
haproxy.frontend.denied.connections.total
(count)
[OpenMetrics V1] Total number of requests denied by 'tcp-request connection' rules.
haproxy.frontend.denied.req_rate
(gauge)
[Legacy] Number of frontend requests denied due to security concerns.
Shown as request
haproxy.frontend.denied.resp_rate
(gauge)
[Legacy] Number of frontend responses denied due to security concerns.
Shown as response
haproxy.frontend.denied.sessions.count
(count)
[OpenMetrics V2] Total number of requests denied by 'tcp-request session' rules.
haproxy.frontend.denied.sessions.total
(count)
[OpenMetrics V1] Total number of requests denied by 'tcp-request session' rules.
haproxy.frontend.errors.req_rate
(gauge)
[Legacy] Rate of frontend request errors.
Shown as error
haproxy.frontend.failed.header.rewriting.count
(count)
[OpenMetrics V2] Total number of failed header rewriting warnings.
haproxy.frontend.failed.header.rewriting.total
(count)
[OpenMetrics V1] Total number of failed header rewriting warnings.
haproxy.frontend.http.cache.hits.count
(count)
[OpenMetrics V2] Total number of HTTP cache hits.
haproxy.frontend.http.cache.hits.total
(count)
[OpenMetrics V1] Total number of HTTP cache hits.
haproxy.frontend.http.cache.lookups.count
(count)
[OpenMetrics V2] Total number of HTTP cache lookups.
haproxy.frontend.http.cache.lookups.total
(count)
[OpenMetrics V1] Total number of HTTP cache lookups.
haproxy.frontend.http.comp.bytes.bypassed.count
(count)
[OpenMetrics V2] Total number of bytes that bypassed the HTTP compressor (CPU/BW limit).
Shown as byte
haproxy.frontend.http.comp.bytes.bypassed.total
(count)
[OpenMetrics V1] Total number of bytes that bypassed the HTTP compressor (CPU/BW limit).
Shown as byte
haproxy.frontend.http.comp.bytes.in.count
(count)
[OpenMetrics V2] Total number of HTTP response bytes fed to the compressor.
Shown as byte
haproxy.frontend.http.comp.bytes.in.total
(count)
[OpenMetrics V1] Total number of HTTP response bytes fed to the compressor.
Shown as byte
haproxy.frontend.http.comp.bytes.out.count
(count)
[OpenMetrics V2] Total number of HTTP response bytes emitted by the compressor.
Shown as byte
haproxy.frontend.http.comp.bytes.out.total
(count)
[OpenMetrics V1] Total number of HTTP response bytes emitted by the compressor.
Shown as byte
haproxy.frontend.http.comp.responses.count
(count)
[OpenMetrics V2] Total number of HTTP responses that were compressed.
haproxy.frontend.http.comp.responses.total
(count)
[OpenMetrics V1] Total number of HTTP responses that were compressed.
haproxy.frontend.http.requests.count
(count)
[OpenMetrics V2] Total number of HTTP requests received.
haproxy.frontend.http.requests.rate.max
(gauge)
[OpenMetrics V1 and V2] Maximum observed number of HTTP requests per second.
haproxy.frontend.http.requests.total
(count)
[OpenMetrics V1] Total number of HTTP requests received.
haproxy.frontend.http.responses.count
(count)
[OpenMetrics V2] Total number of HTTP responses.
haproxy.frontend.http.responses.total
(count)
[OpenMetrics V1] Total number of HTTP responses.
haproxy.frontend.intercepted.requests.count
(count)
[OpenMetrics V2] Total number of intercepted HTTP requests.
haproxy.frontend.intercepted.requests.total
(count)
[OpenMetrics V1] Total number of intercepted HTTP requests.
haproxy.frontend.internal.errors.count
(count)
[OpenMetrics V2] Total number of internal errors since process started (since >= 2.2).
haproxy.frontend.internal.errors.total
(count)
[OpenMetrics V1] Total number of internal errors since process started (since >= 2.2).
haproxy.frontend.limit.session.rate
(gauge)
[OpenMetrics V1 and V2] Configured limit on new sessions per second.
haproxy.frontend.limit.sessions
(gauge)
[OpenMetrics V1 and V2] Configured session limit.
haproxy.frontend.max.session.rate
(gauge)
[OpenMetrics V1 and V2] Maximum observed number of sessions per second.
haproxy.frontend.max.sessions
(gauge)
[OpenMetrics V1 and V2] Maximum observed number of active sessions.
haproxy.frontend.request.errors.count
(count)
[OpenMetrics V2] Total number of request errors.
haproxy.frontend.request.errors.total
(count)
[OpenMetrics V1] Total number of request errors.
haproxy.frontend.requests.denied.count
(count)
[OpenMetrics V2] Total number of denied requests.
haproxy.frontend.requests.denied.total
(count)
[OpenMetrics V1] Total number of denied requests.
haproxy.frontend.requests.intercepted
(gauge)
[Legacy] Number of intercepted frontend requests per second.
Shown as request
haproxy.frontend.requests.rate
(gauge)
[Legacy] Number of frontend HTTP requests per second.
Shown as request
haproxy.frontend.requests.tot_rate
(gauge)
[Legacy] Rate of total number of frontend HTTP requests.
Shown as request
haproxy.frontend.response.1xx
(gauge)
[Legacy] Frontend HTTP responses with 1xx code.
Shown as response
haproxy.frontend.response.2xx
(gauge)
[Legacy] Frontend HTTP responses with 2xx code.
Shown as response
haproxy.frontend.response.3xx
(gauge)
[Legacy] Frontend HTTP responses with 3xx code.
Shown as response
haproxy.frontend.response.4xx
(gauge)
[Legacy] Frontend HTTP responses with 4xx code.
Shown as response
haproxy.frontend.response.5xx
(gauge)
[Legacy] Frontend HTTP responses with 5xx code.
Shown as response
haproxy.frontend.response.other
(gauge)
[Legacy] Frontend HTTP responses with other code (protocol error).
Shown as response
haproxy.frontend.responses.denied.count
(count)
[OpenMetrics V2] Total number of denied responses.
haproxy.frontend.responses.denied.total
(count)
[OpenMetrics V1] Total number of denied responses.
haproxy.frontend.session.current
(gauge)
[Legacy] Number of active frontend sessions.
Shown as connection
haproxy.frontend.session.limit
(gauge)
[Legacy] Configured frontend session limit.
Shown as connection
haproxy.frontend.session.pct
(gauge)
[Legacy] Percentage of sessions in use (frontend.session.current/frontend.session.limit * 100.
Shown as percent
haproxy.frontend.session.rate
(gauge)
[Legacy] Number of frontend sessions created per second.
Shown as connection
haproxy.frontend.sessions.count
(count)
[OpenMetrics V2] Total number of sessions.
haproxy.frontend.sessions.total
(count)
[OpenMetrics V1] Total number of sessions.
haproxy.frontend.status
(gauge)
[OpenMetrics V1 and V2] Current status of the service. <= 2.3: gauge value determines state (frontend: 0=STOP, 1=UP, 2=FULL - backend: 0=DOWN, 1=UP - server: 0=DOWN, 1=UP, 2=MAINT, 3=DRAIN, 4=NOLB). >= 2.4 per state label value.
haproxy.listener.bytes.in.count
(count)
[OpenMetrics V2] Total number of request bytes since process started (>= 2.4).
haproxy.listener.bytes.in.total
(count)
[OpenMetrics V1] Total number of request bytes since process started (>= 2.4).
haproxy.listener.bytes.out.count
(count)
[OpenMetrics V2] Total number of response bytes since process started (>= 2.4).
haproxy.listener.bytes.out.total
(count)
[OpenMetrics V1] Total number of response bytes since process started (>= 2.4).
haproxy.listener.current.sessions
(gauge)
[OpenMetrics V1 and V2] Number of current sessions on the frontend, backend or server (>= 2.4).
haproxy.listener.denied.connections.count
(count)
[OpenMetrics V2] Total number of incoming connections blocked on a listener/frontend by a tcp-request connection rule since the worker process started (>= 2.4).
haproxy.listener.denied.connections.total
(count)
[OpenMetrics V1] Total number of incoming connections blocked on a listener/frontend by a tcp-request connection rule since the worker process started (>= 2.4).
haproxy.listener.denied.sessions.count
(count)
[OpenMetrics V2] Total number of incoming sessions blocked on a listener/frontend by a tcp-request connection rule since the worker process started
haproxy.listener.denied.sessions.total
(count)
[OpenMetrics V1] Total number of incoming sessions blocked on a listener/frontend by a tcp-request connection rule since the worker process started
haproxy.listener.failed.header.rewriting.count
(count)
[OpenMetrics V2] Total number of failed HTTP header rewrites since the worker process started (>= 2.4).
haproxy.listener.failed.header.rewriting.total
(count)
[OpenMetrics V1] Total number of failed HTTP header rewrites since the worker process started (>= 2.4).
haproxy.listener.internal.errors.count
(count)
[OpenMetrics V2] Total number of internal errors since process started (>= 2.4).
haproxy.listener.internal.errors.total
(count)
[OpenMetrics V1] Total number of internal errors since process started (>= 2.4).
haproxy.listener.limit.sessions
(gauge)
[OpenMetrics V1 and V2] Frontend/listener/server's maxconn, backend's fullconn (>= 2.4).
haproxy.listener.max.sessions
(gauge)
[OpenMetrics V1 and V2] Highest value of current sessions encountered since process started (>= 2.4).
haproxy.listener.request.errors.count
(count)
[OpenMetrics V2] Total number of invalid requests since process started (>= 2.4).
haproxy.listener.request.errors.total
(count)
[OpenMetrics V1] Total number of invalid requests since process started (>= 2.4).
haproxy.listener.requests.denied.count
(count)
[OpenMetrics V2] Total number of denied requests since process started (>= 2.4).
haproxy.listener.requests.denied.total
(count)
[OpenMetrics V1] Total number of denied requests since process started (>= 2.4).
haproxy.listener.responses.denied.count
(count)
[OpenMetrics V2] Total number of denied responses since process started (>= 2.4).
haproxy.listener.responses.denied.total
(count)
[OpenMetrics V1] Total number of denied responses since process started (>= 2.4).
haproxy.listener.sessions.count
(count)
[OpenMetrics V2] Total number of sessions since process started (>= 2.4).
haproxy.listener.sessions.total
(count)
[OpenMetrics V1] Total number of sessions since process started (>= 2.4).
haproxy.listener.status
(gauge)
[OpenMetrics V1 and V2] Current status of the service, per state label value (>= 2.4).
haproxy.process.active.peers
(gauge)
[OpenMetrics V1 and V2] Current number of active peers.
haproxy.process.build_info
(gauge)
[OpenMetrics V1 and V2] Build info.
haproxy.process.busy.polling.enabled
(gauge)
[OpenMetrics V1 and V2] Non zero if the busy polling is enabled.
haproxy.process.bytes.out.count
(count)
[OpenMetrics V2] Total number of bytes emitted by current worker process since started (>= 2.3).
haproxy.process.bytes.out.rate
(gauge)
[OpenMetrics V1 and V2] Number of bytes emitted by current worker process over the last second (>= 2.3).
haproxy.process.bytes.out.total
(count)
[OpenMetrics V1] Total number of bytes emitted by current worker process since started (>= 2.3).
haproxy.process.connected.peers
(gauge)
[OpenMetrics V1 and V2] Current number of connected peers.
haproxy.process.connections.count
(count)
[OpenMetrics V2] Total number of created sessions.
haproxy.process.connections.total
(count)
[OpenMetrics V1] Total number of created sessions.
haproxy.process.current.backend.ssl.key.rate
(gauge)
[OpenMetrics V1 and V2] Current backend SSL Key computation per second over last elapsed second.
haproxy.process.current.connection.rate
(gauge)
[OpenMetrics V1 and V2] Current number of connections per second over last elapsed second.
haproxy.process.current.connections
(gauge)
[OpenMetrics V1 and V2] Number of active sessions.
haproxy.process.current.frontend.ssl.key.rate
(gauge)
[OpenMetrics V1 and V2] Current frontend SSL Key computation per second over last elapsed second.
haproxy.process.current.run.queue
(gauge)
[OpenMetrics V1 and V2] Current number of tasks in the run-queue.
haproxy.process.current.session.rate
(gauge)
[OpenMetrics V1 and V2] Current number of sessions per second over last elapsed second.
haproxy.process.current.ssl.connections
(gauge)
[OpenMetrics V1 and V2] Number of opened SSL connections.
haproxy.process.current.ssl.rate
(gauge)
[OpenMetrics V1 and V2] Current number of SSL sessions per second over last elapsed second.
haproxy.process.current.tasks
(gauge)
[OpenMetrics V1 and V2] Current number of tasks.
haproxy.process.current.zlib.memory
(gauge)
[OpenMetrics V1 and V2] Current memory used for zlib in bytes (zlib is no longer the default since >= 2.4).
haproxy.process.dropped.logs.count
(count)
[OpenMetrics V2] Total number of dropped logs.
haproxy.process.dropped.logs.total
(count)
[OpenMetrics V1] Total number of dropped logs.
haproxy.process.failed.resolutions
(count)
[OpenMetrics V1] Total number of failed DNS resolutions in current worker process since started (>= 2.3).
haproxy.process.failed.resolutions.count
(count)
[OpenMetrics V2] Total number of failed DNS resolutions in current worker process since started (>= 2.3).
haproxy.process.frontend.ssl.reuse
(gauge)
[OpenMetrics V1 and V2] SSL session reuse ratio (percent).
haproxy.process.hard.max.connections
(gauge)
[OpenMetrics V1 and V2] Initial Maximum number of concurrent connections.
haproxy.process.http.comp.bytes.in.count
(count)
[OpenMetrics V2] Number of bytes per second over last elapsed second, before http compression.
Shown as byte
haproxy.process.http.comp.bytes.in.total
(count)
[OpenMetrics V1] Number of bytes per second over last elapsed second, before http compression.
Shown as byte
haproxy.process.http.comp.bytes.out.count
(count)
[OpenMetrics V2] Number of bytes per second over last elapsed second, after http compression.
Shown as byte
haproxy.process.http.comp.bytes.out.total
(count)
[OpenMetrics V1] Number of bytes per second over last elapsed second, after http compression.
Shown as byte
haproxy.process.idle.time.percent
(gauge)
[OpenMetrics V1 and V2] Idle to total ratio over last sample (percent).
haproxy.process.jobs
(gauge)
[OpenMetrics V1 and V2] Current number of active jobs (listeners, sessions, open devices).
haproxy.process.limit.connection.rate
(gauge)
[OpenMetrics V1 and V2] Configured maximum number of connections per second.
haproxy.process.limit.http.comp
(gauge)
[OpenMetrics V1 and V2] Configured maximum input compression rate in bytes.
haproxy.process.limit.session.rate
(gauge)
[OpenMetrics V1 and V2] Configured maximum number of sessions per second.
haproxy.process.limit.ssl.rate
(gauge)
[OpenMetrics V1 and V2] Configured maximum number of SSL sessions per second.
haproxy.process.listeners
(gauge)
[OpenMetrics V1 and V2] Current number of active listeners.
haproxy.process.max.backend.ssl.key.rate
(gauge)
[OpenMetrics V1 and V2] Maximum observed backend SSL Key computation per second.
haproxy.process.max.connection.rate
(gauge)
[OpenMetrics V1 and V2] Maximum observed number of connections per second.
haproxy.process.max.connections
(gauge)
[OpenMetrics V1 and V2] Maximum number of concurrent connections.
haproxy.process.max.fds
(gauge)
[OpenMetrics V1 and V2] Maximum number of open file descriptors; 0=unset.
haproxy.process.max.frontend.ssl.key.rate
(gauge)
[OpenMetrics V1 and V2] Maximum observed frontend SSL Key computation per second.
haproxy.process.max.memory.bytes
(gauge)
[OpenMetrics V1 and V2] Per-process memory limit (in bytes); 0=unset.
haproxy.process.max.pipes
(gauge)
[OpenMetrics V1 and V2] Configured maximum number of pipes.
haproxy.process.max.session.rate
(gauge)
[OpenMetrics V1 and V2] Maximum observed number of sessions per second.
haproxy.process.max.sockets
(gauge)
[OpenMetrics V1 and V2] Maximum number of open sockets.
haproxy.process.max.ssl.connections
(gauge)
[OpenMetrics V1 and V2] Configured maximum number of concurrent SSL connections.
haproxy.process.max.ssl.rate
(gauge)
[OpenMetrics V1 and V2] Maximum observed number of SSL sessions per second.
haproxy.process.max.zlib.memory
(gauge)
[OpenMetrics V1 and V2] Configured maximum amount of memory for zlib in bytes (zlib is no longer the default since >= 2.4).
haproxy.process.nbproc
(gauge)
[OpenMetrics V1 and V2] Configured number of processes.
haproxy.process.nbthread
(gauge)
[OpenMetrics V1 and V2] Configured number of threads.
haproxy.process.pipes.free.count
(count)
[OpenMetrics V2] Number of pipes unused.
haproxy.process.pipes.free.total
(count)
[OpenMetrics V1] Number of pipes unused.
haproxy.process.pipes.used.count
(count)
[OpenMetrics V2] Number of pipes in used.
haproxy.process.pipes.used.total
(count)
[OpenMetrics V1] Number of pipes in used.
haproxy.process.pool.allocated.bytes
(gauge)
[OpenMetrics V1 and V2] Total amount of memory allocated in pools (in bytes).
haproxy.process.pool.failures.count
(count)
[OpenMetrics V2] Total number of failed pool allocations.
haproxy.process.pool.failures.total
(count)
[OpenMetrics V1] Total number of failed pool allocations.
haproxy.process.pool.used.bytes
(gauge)
[OpenMetrics V1 and V2] Total amount of memory used in pools (in bytes).
haproxy.process.recv.logs.count
(count)
[OpenMetrics V2] Total number of log messages received by log-forwarding listeners on this worker process since started (>= 2.4).
haproxy.process.recv.logs.total
(count)
[OpenMetrics V1] Total number of log messages received by log-forwarding listeners on this worker process since started (>= 2.4).
haproxy.process.relative.process.id
(gauge)
[OpenMetrics V1 and V2] Relative process id, starting at 1.
haproxy.process.requests.count
(count)
[OpenMetrics V2] Total number of requests (TCP or HTTP).
haproxy.process.requests.total
(count)
[OpenMetrics V1] Total number of requests (TCP or HTTP).
haproxy.process.spliced.bytes.out.count
(count)
[OpenMetrics V2] Total number of bytes emitted by current worker process through a kernel pipe since started (>= 2.3).
haproxy.process.spliced.bytes.out.total
(count)
[OpenMetrics V1] Total number of bytes emitted by current worker process through a kernel pipe since started (>= 2.3).
haproxy.process.ssl.cache.lookups.count
(count)
[OpenMetrics V2] Total number of SSL session cache lookups.
haproxy.process.ssl.cache.lookups.total
(count)
[OpenMetrics V1] Total number of SSL session cache lookups.
haproxy.process.ssl.cache.misses.count
(count)
[OpenMetrics V2] Total number of SSL session cache misses.
haproxy.process.ssl.cache.misses.total
(count)
[OpenMetrics V1] Total number of SSL session cache misses.
haproxy.process.ssl.connections.count
(count)
[OpenMetrics V2] Total number of opened SSL connections.
haproxy.process.ssl.connections.total
(count)
[OpenMetrics V1] Total number of opened SSL connections.
haproxy.process.start.time.seconds
(gauge)
[OpenMetrics V1 and V2] Start time in seconds.
haproxy.process.stopping
(gauge)
[OpenMetrics V1 and V2] Non zero means stopping in progress.
haproxy.process.unstoppable.jobs
(gauge)
[OpenMetrics V1 and V2] Current number of active jobs that can't be stopped during a soft stop.
haproxy.process.uptime.seconds
(gauge)
[OpenMetrics V1 and V2] How long ago this worker process was started (>= 2.4).
haproxy.server.bytes.in.count
(count)
[OpenMetrics V2] Current total of incoming bytes.
Shown as byte
haproxy.server.bytes.in.total
(count)
[OpenMetrics V1] Current total of incoming bytes.
Shown as byte
haproxy.server.bytes.out.count
(count)
[OpenMetrics V2] Current total of outgoing bytes.
Shown as byte
haproxy.server.bytes.out.total
(count)
[OpenMetrics V1] Current total of outgoing bytes.
Shown as byte
haproxy.server.check.code
(gauge)
[OpenMetrics V1 and V2] layer5-7 code, if available of the last health check. (>= 2.0)
haproxy.server.check.duration.seconds
(gauge)
[OpenMetrics V1 and V2] Previously run health check duration (>= 2.0)
Shown as second
haproxy.server.check.failures.count
(count)
[OpenMetrics V2] Total number of failed check (Only counts checks failed when the server is up).
haproxy.server.check.failures.total
(count)
[OpenMetrics V1] Total number of failed check (Only counts checks failed when the server is up).
haproxy.server.check.last.change.seconds
(gauge)
[OpenMetrics V1 and V2] Number of seconds since the last UP<->DOWN transition. (>= 2.0)
Shown as second
haproxy.server.check.status
(gauge)
[OpenMetrics V1 and V2] Status of last health check, if enabled.. <= 2.3 HCHKSTATUS* values in haproxy doc. >= 2.4 per state label value.
haproxy.server.check.up.down.count
(count)
[OpenMetrics V2] Total number of UP->DOWN transitions.
haproxy.server.check.up.down.total
(count)
[OpenMetrics V1] Total number of UP->DOWN transitions.
haproxy.server.client.aborts.count
(count)
[OpenMetrics V2] Total number of data transfers aborted by the client.
haproxy.server.client.aborts.total
(count)
[OpenMetrics V1] Total number of data transfers aborted by the client.
haproxy.server.connect.time.average.seconds
(gauge)
[OpenMetrics V1 and V2] Avg. connect time for last 1024 successful connections.
haproxy.server.connection.attempts.count
(count)
[OpenMetrics V2] Total number of connection establishment attempts.
haproxy.server.connection.attempts.total
(count)
[OpenMetrics V1] Total number of connection establishment attempts.
haproxy.server.connection.errors.count
(count)
[OpenMetrics V2] Total number of connection errors.
haproxy.server.connection.errors.total
(count)
[OpenMetrics V1] Total number of connection errors.
haproxy.server.connection.reuses.count
(count)
[OpenMetrics V2] Total number of connection reuses.
haproxy.server.connection.reuses.total
(count)
[OpenMetrics V1] Total number of connection reuses.
haproxy.server.current.queue
(gauge)
[OpenMetrics V1 and V2] Current number of queued requests.
haproxy.server.current.sessions
(gauge)
[OpenMetrics V1 and V2] Current number of active sessions.
haproxy.server.current.throttle
(gauge)
[OpenMetrics V1 and V2] Current throttle percentage for the server, when slowstart is active, or no value if not in slowstart.
haproxy.server.downtime.seconds.count
(count)
[OpenMetrics V2] Total downtime (in seconds) for the service.
haproxy.server.downtime.seconds.total
(count)
[OpenMetrics V1] Total downtime (in seconds) for the service.
haproxy.server.failed.header.rewriting.count
(count)
[OpenMetrics V2] Total number of failed header rewriting warnings.
haproxy.server.failed.header.rewriting.total
(count)
[OpenMetrics V1] Total number of failed header rewriting warnings.
haproxy.server.http.responses.count
(count)
[OpenMetrics V2] Total number of HTTP responses.
haproxy.server.http.responses.total
(count)
[OpenMetrics V1] Total number of HTTP responses.
haproxy.server.idle.connections.current
(gauge)
[OpenMetrics V1 and V2] Current number of idle connections available for reuse.
haproxy.server.idle.connections.limit
(gauge)
[OpenMetrics V1 and V2] Limit on the number of available idle connections.
haproxy.server.internal.errors.count
(count)
[OpenMetrics V2] Total number of internal errors since process started (since >= 2.2).
haproxy.server.internal.errors.total
(count)
[OpenMetrics V1] Total number of internal errors since process started (since >= 2.2).
haproxy.server.last.session.seconds
(gauge)
[OpenMetrics V1 and V2] Number of seconds since last session assigned to server/backend.
haproxy.server.limit.sessions
(gauge)
[OpenMetrics V1 and V2] Configured session limit.
haproxy.server.loadbalanced.count
(count)
[OpenMetrics V2] Total number of times a service was selected, either for new sessions, or when redispatching.
haproxy.server.loadbalanced.total
(count)
[OpenMetrics V1] Total number of times a service was selected, either for new sessions, or when redispatching.
haproxy.server.max.connect.time.seconds
(gauge)
[OpenMetrics V1 and V2] Maximum observed time spent waiting for a connection to complete
haproxy.server.max.count.time.seconds
(gauge)
[OpenMetrics V1 and V2] Maximum observed total request+response time (request+queue+connect+response+processing)
haproxy.server.max.queue
(gauge)
[OpenMetrics V1 and V2] Maximum observed number of queued requests.
haproxy.server.max.queue.time.seconds
(gauge)
[OpenMetrics V1 and V2] Maximum observed time spent in the queue
haproxy.server.max.response.time.seconds
(gauge)
[OpenMetrics V1 and V2] Maximum observed time spent waiting for a server response
haproxy.server.max.session.rate
(gauge)
[OpenMetrics V1 and V2] Maximum observed number of sessions per second.
haproxy.server.max.sessions
(gauge)
[OpenMetrics V1 and V2] Maximum observed number of active sessions.
haproxy.server.max.total.time.seconds
(gauge)
[OpenMetrics V1 and V2] Maximum observed total request+response time (request+queue+connect+response+processing)
haproxy.server.need.connections.current
(gauge)
[OpenMetrics V1 and V2] Estimated needed number of connections (>= 2.3).
haproxy.server.queue.limit
(gauge)
[OpenMetrics V1 and V2] Configured maxqueue for the server (0 meaning no limit).
haproxy.server.queue.time.average.seconds
(gauge)
[OpenMetrics V1 and V2] Avg. queue time for last 1024 successful connections.
haproxy.server.redispatch.warnings.count
(count)
[OpenMetrics V2] Total number of redispatch warnings.
haproxy.server.redispatch.warnings.total
(count)
[OpenMetrics V1] Total number of redispatch warnings.
haproxy.server.response.errors.count
(count)
[OpenMetrics V2] Total number of response errors.
haproxy.server.response.errors.total
(count)
[OpenMetrics V1] Total number of response errors.
haproxy.server.response.time.average.seconds
(gauge)
[OpenMetrics V1 and V2] Avg. response time for last 1024 successful connections.
haproxy.server.responses.denied.count
(count)
[OpenMetrics V2] Total number of denied responses.
haproxy.server.responses.denied.total
(count)
[OpenMetrics V1] Total number of denied responses.
haproxy.server.retry.warnings.count
(count)
[OpenMetrics V2] Total number of retry warnings.
haproxy.server.retry.warnings.total
(count)
[OpenMetrics V1] Total number of retry warnings.
haproxy.server.safe.idle.connections.current
(gauge)
[OpenMetrics V1 and V2] Current number of safe idle connections (>= 2.3).
haproxy.server.server.aborts.count
(count)
[OpenMetrics V2] Total number of data transfers aborted by the server.
haproxy.server.server.aborts.total
(count)
[OpenMetrics V1] Total number of data transfers aborted by the server.
haproxy.server.server.idle.connections.current
(gauge)
[OpenMetrics V1 and V2] Current number of idle connections available for reuse
haproxy.server.server.idle.connections.limit
(gauge)
[OpenMetrics V1 and V2] Limit on the number of available idle connections
haproxy.server.sessions.count
(count)
[OpenMetrics V2] Total number of sessions.
haproxy.server.sessions.total
(count)
[OpenMetrics V1] Total number of sessions.
haproxy.server.status
(gauge)
[OpenMetrics V1 and V2] Current status of the service. <= 2.3: gauge value determines state (frontend: 0=STOP, 1=UP, 2=FULL - backend: 0=DOWN, 1=UP - server: 0=DOWN, 1=UP, 2=MAINT, 3=DRAIN, 4=NOLB). >= 2.4 per state label value.
haproxy.server.total.time.average.seconds
(gauge)
[OpenMetrics V1 and V2] Avg. total time for last 1024 successful connections.
haproxy.server.unsafe.idle.connections.current
(gauge)
[OpenMetrics V1 and V2] Current number of unsafe idle connections (>= 2.3).
haproxy.server.used.connections.current
(gauge)
[OpenMetrics V1 and V2] Current number of connections in use (>= 2.3).
haproxy.server.uweight
(gauge)
[OpenMetrics V1 and V2] Server's user weight or sum of active servers' user weights for a backend (>= 2.4).
haproxy.server.weight
(gauge)
[OpenMetrics V1 and V2] Service weight.
haproxy.sticktable.size
(gauge)
[OpenMetrics V1 and V2] Maximum number of elements the table can hold (<= 2.3 through a Unix socket, >= 2.4 through Prometheus).
haproxy.sticktable.used
(gauge)
[OpenMetrics V1 and V2] Number of elements in the table (<= 2.3 through a Unix socket, >= 2.4 through Prometheus).

Events

The HAProxy check does not include any events.

Service Checks

haproxy.backend_up
Converts the HAProxy status page into service checks. Returns CRITICAL for a given service if HAProxy is reporting it down. maint, ok and any other state will result in OK.
Statuses: ok, critical, unknown

haproxy.openmetrics.health
Returns CRITICAL if the Agent is unable to connect to the OpenMetrics endpoint, otherwise returns OK.
Statuses: ok, critical

Troubleshooting

Port 514 Already in Use Error

On systems with syslog, if the Agent is listening for HAProxy logs on port 514, the following error can appear in the Agent logs: Can't start UDP forwarder on port 514: listen udp :514: bind: address already in use.

This is happening because, by default, syslog is listening on port 514. To resolve this error, syslog can be disabled, or HAProxy can be configured to forward logs to port 514 and another port the Agent is listening for logs on. The port the Agent listens on can be defined in the haproxy.d/conf.yaml file here.

Need help? Contact Datadog support.

Further Reading