Datadog-HAProxy Integration

HAProxy default 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

Installation

The HAProxy check is packaged with the Agent, so simply install the Agent on your HAProxy servers.

Make sure that stats are enabled on your HAProxy configuration. See this post for guidance on doing this.

Configuration

Prepare HAProxy

The Agent collects metrics via a stats endpoint. Configure one in your haproxy.conf:

listen stats :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 <your_username>:<your_password>  # Authentication credentials

Restart HAProxy to enable the stats endpoint.

Connect the Agent

Create a file haproxy.yaml in the Agent’s conf.d directory. See the sample haproxy.yaml for all available configuration options:

init_config:

instances:
    - url: https://localhost:9000/haproxy_stats
      username: <your_username>
      password: <your_password>

Restart the Agent to begin sending HAProxy metrics to Datadog.

Validation

Run the Agent’s info subcommand and look for haproxy under the Checks section:

  Checks
  ======
    [...]

    haproxy
    -------
      - instance #0 [OK]
      - Collected 26 metrics, 0 events & 1 service check

    [...]

Compatibility

The haproxy check is compatible with all major platforms.

Data Collected

Metrics

haproxy.backend_hosts
(gauge)
Number of backend hosts.
shown as host
haproxy.backend.bytes.in_rate
(gauge)
Rate of bytes in on backend hosts.
shown as byte
haproxy.backend.bytes.out_rate
(gauge)
Rate of bytes out on backend hosts.
shown as byte
haproxy.backend.connect.time
(gauge)
Average connect time over the last 1024 requests.
shown as millisecond
haproxy.backend.denied.req_rate
(gauge)
Number of requests denied due to security concerns.
shown as request
haproxy.backend.denied.resp_rate
(gauge)
Number of responses denied due to security concerns.
shown as response
haproxy.backend.errors.con_rate
(gauge)
Rate of requests that encountered an error trying to connect to a backend server.
shown as error
haproxy.backend.errors.resp_rate
(gauge)
Rate of responses aborted due to error.
shown as error
haproxy.backend.queue.current
(gauge)
Number of requests without an assigned backend.
shown as request
haproxy.backend.queue.time
(gauge)
Average queue time over the last 1024 requests.
shown as millisecond
haproxy.backend.response.1xx
(gauge)
Backend HTTP responses with 1xx code.
shown as response
haproxy.backend.response.2xx
(gauge)
Backend HTTP responses with 2xx code.
shown as response
haproxy.backend.response.3xx
(gauge)
Backend HTTP responses with 3xx code.
shown as response
haproxy.backend.response.4xx
(gauge)
Backend HTTP responses with 4xx code.
shown as response
haproxy.backend.response.5xx
(gauge)
Backend HTTP responses with 5xx code.
shown as response
haproxy.backend.response.other
(gauge)
Backend HTTP responses with other code (protocol error).
shown as response
haproxy.backend.response.time
(gauge)
Average response time over the last 1024 requests (0 for TCP).
shown as millisecond
haproxy.backend.session.current
(gauge)
Number of active backend sessions.
shown as connection
haproxy.backend.session.limit
(gauge)
Configured backend session limit.
shown as connection
haproxy.backend.session.pct
(gauge)
Percentage of sessions in use (backend.session.current/backend.session.limit * 100).
shown as percent
haproxy.backend.session.rate
(gauge)
Number of backend sessions created per second.
shown as connection
haproxy.backend.session.time
(gauge)
Average total session time over the last 1024 requests.
shown as millisecond
haproxy.backend.uptime
(gauge)
Number of seconds since the last UP<->DOWN transition
shown as second
haproxy.backend.warnings.redis_rate
(gauge)
Number of times a connection to a server was retried.
shown as error
haproxy.backend.warnings.retr_rate
(gauge)
Number of times a request was redispatched to another server.
shown as error
haproxy.count_per_status
(gauge)
Number of hosts by status (UP/DOWN/NOLB/MAINT).
shown as host
haproxy.frontend.bytes.in_rate
(gauge)
Rate of bytes in on frontend hosts.
shown as byte
haproxy.frontend.bytes.out_rate
(gauge)
Rate of bytes out on frontend hosts.
shown as byte
haproxy.frontend.denied.req_rate
(gauge)
Number of requests denied due to security concerns.
shown as request
haproxy.frontend.denied.resp_rate
(gauge)
Number of responses denied due to security concerns.
shown as response
haproxy.frontend.errors.req_rate
(gauge)
Rate of request errors.
shown as error
haproxy.frontend.requests.rate
(gauge)
Number of HTTP requests per second.
shown as request
haproxy.frontend.response.1xx
(gauge)
Frontend HTTP responses with 1xx code.
shown as response
haproxy.frontend.response.2xx
(gauge)
Frontend HTTP responses with 2xx code.
shown as response
haproxy.frontend.response.3xx
(gauge)
Frontend HTTP responses with 3xx code.
shown as response
haproxy.frontend.response.4xx
(gauge)
Frontend HTTP responses with 4xx code.
shown as response
haproxy.frontend.response.5xx
(gauge)
Frontend HTTP responses with 5xx code.
shown as response
haproxy.frontend.response.other
(gauge)
Frontend HTTP responses with other code (protocol error).
shown as response
haproxy.frontend.session.current
(gauge)
Number of active frontend sessions.
shown as connection
haproxy.frontend.session.limit
(gauge)
Configured backend session limit.
shown as connection
haproxy.frontend.session.pct
(gauge)
Percentage of sessions in use (frontend.session.current/frontend.session.limit * 100).
shown as percent
haproxy.frontend.session.rate
(gauge)
Number of frontend sessions created per second.
shown as connection

Events

The Haproxy check does not include any event at this time.

Service Checks

The Haproxy check does not include any service check at this time.

Troubleshooting

Need help? Contact Datadog Support.

Further Reading