README
¶
HAProxy Exporter for Prometheus
This is a simple server that scrapes HAProxy stats and exports them via HTTP for Prometheus consumption.
Note: since HAProxy 2.0.0, the official source includes a Prometheus exporter module that can be built into your binary with a single flag during build time and offers an exporter-free Prometheus endpoint. More information down below.
Getting Started
To run it:
./haproxy_exporter [flags]
Help on flags:
./haproxy_exporter --help
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-uri
flag. For example, if you have set stats uri /baz
,
haproxy_exporter --haproxy.scrape-uri="http://localhost:5000/baz?stats;csv"
Or to scrape a remote host:
haproxy_exporter --haproxy.scrape-uri="http://haproxy.example.com/haproxy?stats;csv"
Note that the ;csv
is mandatory (and needs to be quoted).
If your stats port is protected by basic auth, add the credentials to the scrape URL:
haproxy_exporter --haproxy.scrape-uri="http://user:pass@haproxy.example.com/haproxy?stats;csv"
You can also scrape HTTPS URLs. Certificate validation is enabled by default, but
you can disable it using the --no-haproxy.ssl-verify
flag:
haproxy_exporter --no-haproxy.ssl-verify --haproxy.scrape-uri="https://haproxy.example.com/haproxy?stats;csv"
Unix Sockets
As alternative to localhost HTTP a stats socket can be used. Enable the stats socket in HAProxy with for example:
stats socket /run/haproxy/admin.sock mode 660 level admin
The scrape URL uses the 'unix:' scheme:
haproxy_exporter --haproxy.scrape-uri=unix:/run/haproxy/admin.sock
Docker
To run the haproxy exporter as a Docker container, run:
docker run -p 9101:9101 quay.io/prometheus/haproxy-exporter:v0.12.0 --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.
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. This is achieved via a flag passed to make
. The value of the flag is dependent on the version of HAProxy:
HAProxy 2.0.x - 2.3.x: The EXTRA_OBJS
flag should be passed to make
.
make TARGET=linux-glibc EXTRA_OBJS="contrib/prometheus-exporter/service-prometheus.o"
HAProxy 2.4.x: The USE_PROMEX
flag should be passed to make
.
make TARGET=linux-glibc USE_PROMEX=1
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
For more information, see this official blog post.
Documentation
¶
There is no documentation for this package.