This is a simple server that scrapes HAProxy stats and exports them via HTTP for
Prometheus consumption.
This exporter is retired
In all supported versions of HAProxy, the official source includes a Prometheus exporter module that can be built into your binary with a single flag during build time and offers a native Prometheus endpoint. For more information see down below.
Please transition to using the built-in support as soon as possible.
Alternatively, provide the password through a file, so that it does not appear in the process
table or in the output of the /debug/pprof/cmdline profiling service:
If scraping a remote HAProxy must be done via an HTTP proxy, you can enable reading of the
standard $http_proxy / $https_proxy / $no_proxy environment variables by using the
--http.proxy-from-env flag (these variables will be ignored otherwise):
To run the haproxy exporter as a Docker container, run:
docker run -p 9101:9101 quay.io/prometheus/haproxy-exporter:latest --haproxy.scrape-uri="http://user:pass@haproxy.example.com/haproxy?stats;csv"
Development
Building
make build
Testing
make test
TLS and basic authentication
The HAProxy Exporter supports TLS and basic authentication.
To use TLS and/or basic authentication, you need to pass a configuration file
using the --web.config.file parameter. The format of the file is described
in the exporter-toolkit repository.
As of 2.0.0, HAProxy includes a Prometheus exporter module that can be built into your binary during build time.
For HAProxy 2.4 and higher, pass the USE_PROMEX flag to make:
make TARGET=linux-glibc USE_PROMEX=1
Pre-built versions, including the Docker image, typically have this enabled already.
Once built, you can enable and configure the Prometheus endpoint from your haproxy.cfg file as a typical frontend:
frontend stats
bind *:8404
http-request use-service prometheus-exporter if { path /metrics }
stats enable
stats uri /stats
stats refresh 10s
HAProxy Exporter for Prometheus
This is a simple server that scrapes HAProxy stats and exports them via HTTP for Prometheus consumption.
This exporter is retired
In all supported versions of HAProxy, the official source includes a Prometheus exporter module that can be built into your binary with a single flag during build time and offers a native Prometheus endpoint. For more information see down below.
Please transition to using the built-in support as soon as possible.
Getting Started
To run it:
Help on flags:
For more information check the source code documentation. All of the core developers are accessible via the Prometheus Developers mailinglist.
Usage
HTTP stats URL
Specify custom URLs for the HAProxy stats port using the
--haproxy.scrape-uriflag. For example, if you have setstats uri /baz,Or to scrape a remote host:
Note that the
;csvis mandatory (and needs to be quoted).If your stats port is protected by basic auth, add the credentials to the scrape URL:
Alternatively, provide the password through a file, so that it does not appear in the process table or in the output of the
/debug/pprof/cmdlineprofiling service:You can also scrape HTTPS URLs. Certificate validation is enabled by default, but you can disable it using the
--no-haproxy.ssl-verifyflag:If scraping a remote HAProxy must be done via an HTTP proxy, you can enable reading of the standard
$http_proxy/$https_proxy/$no_proxyenvironment variables by using the--http.proxy-from-envflag (these variables will be ignored otherwise):Unix Sockets
As alternative to localhost HTTP a stats socket can be used. Enable the stats socket in HAProxy with for example:
The scrape URL uses the ‘unix:’ scheme:
Docker
To run the haproxy exporter as a Docker container, run:
Development
Building
Testing
TLS and basic authentication
The HAProxy Exporter supports TLS and basic authentication.
To use TLS and/or basic authentication, you need to pass a configuration file using the
--web.config.fileparameter. The format of the file is described in the exporter-toolkit repository.License
Apache License 2.0, see LICENSE.
Alternatives
Official Prometheus exporter
As of 2.0.0, HAProxy includes a Prometheus exporter module that can be built into your binary during build time. For HAProxy 2.4 and higher, pass the
USE_PROMEXflag tomake:Pre-built versions, including the Docker image, typically have this enabled already.
Once built, you can enable and configure the Prometheus endpoint from your
haproxy.cfgfile as a typical frontend:For more information, see this official blog post.