prometheus监控HAProxy

从Prometheus官方网站可以看到,官方网站已经有支持对HAProxy软件的exporter,我们从官方网站下载下来进行使用,也可以通过下载HAProxy的项目地址,通过编译进行部署。

github项目地址
https://github.com/prometheus/haproxy_exporter
二进制可执行程序地址
https://prometheus.io/download/

原理解析

通过查看源码,haproxy_exporter是对uri地址获取到的csv内容进行解析,所以需要配置HAProxy,以便暴露HAProxy的状态信息。

func (e *Exporter) scrape(ch chan<- prometheus.Metric) (up float64) {
   
	e.totalScrapes.Inc()

	body, err := e.fetch()
	if err != nil {
   
		level.Error(e.logger).Log("msg", "Can't scrape HAProxy", "err", err)
		return 0
	}
	defer body.Close()

	reader := csv.NewReader(body)
	reader.TrailingComma = true
	reader.Comment = '#'

loop:
	for {
   
		row, err := reader.Read()
		switch err {
   
		case nil:
		case io.EOF:
			break loop
		default:
			if _, ok := err.(*csv.ParseError); ok {
   
				level.Error(e.logger).Log("msg", "Can't read CSV", "err", err)
				e.csvParseFailures.Inc()
				continue loop
			}
			level.Error(e.logger).Log("msg", "Unexpected error while reading CSV", "err", err)
			return 0
		}
		e.parseRow(row, ch)
	}
	return 1
}

HAProxy配置:

打开haproxy.cfg配置文件,添加如下配置项

listen stats
    bind :9099
    stats uri /haproxy  
    stats enable

该配置项将HAProxy的状态信息进行曝露,绑定在端口9099,并且路由地址为/haproxy。
通过访问该地址,我们可以看到相应的HAProxy状态信息。
在这里插入图片描述
状态信息

HAProxy_exporter配置

haproxy_exporter.exe --haproxy.scrape-uri="http://192.168.55.80:9099/haproxy;csv"

配置命令行参数–haproxy.scrape-uri 为指向HAProxy的状态信息的地址即可。

监控效果

访问exporter曝露的/metrics,可以访问到HAProxy的状态信息。

haproxy_backend_bytes_in_total{
   backend="app"} 2020
haproxy_backend_bytes_in_total{
   backend="static"} 0
haproxy_backend_bytes_in_total{
   backend="stats"} 11258
# HELP haproxy_backend_bytes_out_total Current total of outgoing bytes.
# TYPE haproxy_backend_bytes_out_total gauge
haproxy_backend_bytes_out_total{
   backend="app"} 12400
haproxy_backend_bytes_out_total{
   backend="static"} 0
haproxy_backend_bytes_out_total{
   backend="stats"} 237858
# HELP haproxy_backend_compressor_bytes_bypassed_total Number of bytes that bypassed the HTTP compressor
# TYPE haproxy_backend_compressor_bytes_bypassed_total gauge
haproxy_backend_compressor_bytes_bypassed_total{
   backend="app"} 0
haproxy_backend_compressor_bytes_bypassed_total{
   backend="static"} 0
haproxy_backend_compressor_bytes_bypassed_total{
   backend="stats"} 0
# HELP haproxy_backend_compressor_bytes_in_total Number of HTTP response bytes fed to the compressor
# TYPE haproxy_backend_compressor_bytes_in_total gauge
haproxy_backend_compressor_bytes_in_total{
   backend="app"} 0
haproxy_backend_compressor_bytes_in_total{
   backend="static"} 0
haproxy_backend_compressor_bytes_in_total{
   backend="stats"} 0
# HELP haproxy_backend_compressor_bytes_out_total Number of HTTP response bytes emitted by the compressor
# TYPE haproxy_backend_compressor_bytes_out_total gauge
haproxy_backend_compressor_bytes_out_total{
   backend="app"} 0
haproxy_backend_compressor_bytes_out_total{
   backend="static"} 0
haproxy_backend_compressor_bytes_out_total{
   backend="stats"} 0
# HELP haproxy_backend_connection_errors_total Total of connection errors.
# TYPE haproxy_backend_connection_errors_total gauge
haproxy_backend_connection_errors_total{
   backend="app"} 0
haproxy_backend_connection_errors_total{
   backend="static"} 0
haproxy_backend_connection_errors_total{
   backend="stats"} 16
# HELP haproxy_backend_current_queue Current number of queued requests not assigned to any server.
# TYPE haproxy_backend_current_queue gauge
haproxy_backend_current_queue{
   backend="app"} 0
haproxy_backend_current_queue{
   backend="static"} 0
haproxy_backend_current_queue{
   backend="stats"} 0
# HELP haproxy_backend_current_server Current number of active servers
# TYPE haproxy_backend_current_server gauge
haproxy_backend_current_server{
   backend="app"} 2
haproxy_backend_current_server{
   backend="static"} 0
haproxy_backend_current_server{
   backend="stats"} 0
# HELP haproxy_backend_current_session_rate Current number of sessions per second over last elapsed second.
# TYPE haproxy_backend_current_session_rate gauge
haproxy_backend_current_session_rate{
   backend="app"} 0
haproxy_backend_current_session_rate{
   backend="static"} 0
haproxy_backend_current_session_rate{
   backend="stats"} 0
# HELP haproxy_backend_current_sessions Current number of active sessions.
# TYPE haproxy_backend_current_sessions gauge
haproxy_backend_current_sessions{
   backend="app"} 0
haproxy_backend_current_sessions{
   backend="static"} 0
haproxy_backend_current_sessions{
   backend="stats"} 0
# HELP haproxy_backend_http_connect_time_average_seconds Avg. HTTP connect time for last 1024 successful connections.
# TYPE haproxy_backend_http_connect_time_average_seconds gauge
haproxy_backend_http_connect_time_average_seconds{
   backend="app"} 0.001
haproxy_backend_http_connect_time_average_seconds{
   backend="static"} 0
haproxy_backend_http_connect_time_average_seconds{
   backend="stats"} 0
# HELP haproxy_backend_http_queue_time_average_seconds Avg. HTTP queue time for last 1024 successful connections.
# TYPE haproxy_backend_http_queue_time_average_seconds gauge
haproxy_backend_http_queue_time_average_seconds{
   backend="app"} 0
haproxy_backend_http_queue_time_average_seconds{
   backend="static"} 0
haproxy_backend_http_queue_time_average_seconds{
   backend="stats"} 0
# HELP haproxy_backend_http_response_time_average_seconds Avg. HTTP response time for last 1024 successful connections.
# TYPE haproxy_backend_http_response_time_average_seconds gauge
haproxy_backend_http_response_time_average_seconds{
   backend="app"} 0.001
haproxy_backend_http_response_time_average_seconds{
   backend="static"} 0
haproxy_backend_http_response_time_average_seconds{
   backend="stats"} 0
# HELP haproxy_backend_http_responses_compressed_total Number of HTTP responses that were compressed
# TYPE haproxy_backend_http_responses_compressed_total gauge
haproxy_backend_http_responses_compressed_total{
   backend=
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值