HAProxy Exporter
HAProxy Exporter 是一个简单的服务,它抓取HAProxy统计数据并通过HTTP导出它们供Prometheus使用。官方地址是 https://github.com/prometheus/haproxy_exporter ,当前最新版本是 v0.13.0 ,发布时间是 2021 年11 月 26 日。
自 HAProxy 2.0.0 以来,他的官方源代码包括一个 Prometheus 导出模块,它可以在构建期间用一个标志构建到二进制文件中,并提供一个不需要导出器的Prometheus端点。
安装运行
HAProxy Exporter 运行也非常简单,直接执行二进制文件就可以。
./haproxy_exporter [flags]
或者使用 Docker 容器来运行
docker run -p 9101:9101 quay.io/prometheus/haproxy-exporter:v0.13.0 --haproxy.scrape-uri="http://user:pass@haproxy.example.com/haproxy?stats;csv"
使用
如果你设置了 stats uri /baz
,那么可以使用 --haproxy.scrape-uri
参数给 HAProxy 统计端口指定自定义的 URL 。
haproxy_exporter --haproxy.scrape-uri="http://localhost:5000/baz?stats;csv"
或者获取远端的 HAProxy ,
haproxy_exporter --haproxy.scrape-uri="http://haproxy.example.com/haproxy?stats;csv"
需要注意的是,这个参数最后的 :csv
是必须的,整个参数的值需要用双引号引起来。
如果这个统计接口有 basic auth,那么可以使用如下的方式来指定
haproxy_exporter --haproxy.scrape-uri="http://user:pass@haproxy.example.com/haproxy?stats;csv"
也可以在获取指标的时候使用 HTTPS 的 URL ,默认情况下是启用证书验证,可以通过 --no-haproxy.ssl-verify
参数关掉证书验证。
haproxy_exporter --no-haproxy.ssl-verify --haproxy.scrape-uri="https://haproxy.example.com/haproxy?stats;csv"
除了使用 HTTP 的方式获取,还可以使用 stats socket 。在 HAProxy 中启用 stats socket 如下:
stats socket /run/haproxy/admin.sock mode 660 level admin
配置的命令如下:
haproxy_exporter --haproxy.scrape-uri=unix:/run/haproxy/admin.sock
HAProxy Exporter 也支持 TLS 和 basic authentication ,使用 --web.config.file
参数,格式描述在 exporter-toolkit 仓库里。
HAProxy 构建监控插件
在 HAProxy 2.0.0版本中,包含一个Prometheus 监控数据导出模块,可以在构建时将其构建到二进制文件中。这是通过传递参数来实现的,这个参数取决于HAProxy的版本:
在 HAProxy 2.0.x - 2.3.x ,使用 EXTRA_OBJS 参数来进行 make 构建:
make TARGET=linux-glibc EXTRA_OBJS="contrib/prometheus-exporter/service-prometheus.o"
在 HAProxy 2.4.x 版本 ,使用 USE_PROMEX
参数来进行 make 构建:
make TARGET=linux-glibc USE_PROMEX=1
构建成功以后,接可以在 HAProxy 的配置文件 haproxy.cfg 中使用下面的这个来配置打开监控数据导出了
frontend stats
bind *:8404
http-request use-service prometheus-exporter if { path /metrics }
stats enable
stats uri /stats
stats refresh 10s
小结
HAProxy 提供了 2 种暴露监控数据的方式,采用哪一种根据实际情况来进行选择。