The Service Map for APM is here!

HAProxy

Agent Check Agent Check

Supported OS: Linux Mac OS Windows

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

Installation

The HAProxy check is packaged with the Agent. To start gathering your HAProxy metrics and logs, you need to:

  1. Install the Agent on your HAProxy servers.
  2. Make sure that stats are enabled on your HAProxy configuration. Read our blog post on collecting HAProxy metrics for more information.

Configuration

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.

Prepare HAProxy

The Agent collects metrics via 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
  1. Restart HAProxy to enable the stats endpoint.

Metric Collection

Add this configuration block to your haproxy.d/conf.yaml file to start gathering your Haproxy Metrics:

  init_config:

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

See the sample haproxy.yaml for all available configuration options.

Log Collection

Available for Agent >6.0

  • Collecting logs is disabled by default in the Datadog Agent, you need to enable it in datadog.yaml:
    logs_enabled: true
  • Add this configuration block to your haproxy.d/conf.yaml file to start collecting your Haproxy Logs:
    logs:
        - type: udp
          port: 514
          service: haproxy
          source: haproxy
          sourcecategory: http_web_access

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

Learn more about log collection in the log documentation

Validation

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

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 request was redispatched to another server.
shown as error
haproxy.backend.warnings.retr_rate
(gauge)
Number of times a connection to a server was retried.
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 events at this time.

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. Returns OK for maint, ok and any other state.

Troubleshooting

Need help? Contact Datadog Support.

Further Reading


Mistake in the docs? Feel free to contribute!