Skip to content

Simple server that scrapes HAProxy stats and exports them via HTTP for Prometheus consumption

License

Notifications You must be signed in to change notification settings

FundingCircle/haproxy_exporter

 
 

Repository files navigation

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.

About

Simple server that scrapes HAProxy stats and exports them via HTTP for Prometheus consumption

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Go 96.3%
  • Makefile 2.9%
  • Dockerfile 0.8%