Skip to content

Latest commit

 

History

History
149 lines (94 loc) · 3.92 KB

README.md

File metadata and controls

149 lines (94 loc) · 3.92 KB

HAProxy Exporter for Prometheus

Caution

HAProxy is deprecated at Funding Circle and there is no longer a build pipeline in this repo. If updates are required in the future, a new build pipeline should be added.

Fork of https://github.com/prometheus/haproxy_exporter

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.

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

Building

make build

Testing

CircleCI

make test

Releases

https://github.com/FundingCircle/haproxy_exporter/releases

  1. Bump the VERSION file and merge to master
  2. Create a tag and then create a release
  3. Publish binaries:
git checkout <your-tag>

promu crossbuild
promu crossbuild tarballs

" You'll need
" brew install github-release
" export GITHUB_TOKEN=<your token from https://github.com/settings/tokens>

promu release -v .tarballs/

License

Apache License 2.0, see prometheus/haproxy_exporter/LICENSE, FundingCircle/haproxy_exporter/LICENSE.

Alternatives

Official Repo

https://github.com/prometheus/haproxy_exporter

Official Prometheus exporter

As of 2.0.0, HAProxy includes a Prometheus exporter module that can be built into your binary during build time.

To build with the official Prometheus exporter module, make with the following EXTRA_OBJS flag:

make TARGET=linux-glibc EXTRA_OBJS="contrib/prometheus-exporter/service-prometheus.o"

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.