下面我将详细讲解“Docker 部署HAProxy v2.2.29 并暴露指标接口的问题解决”的完整攻略。
准备工作
首先需要安装Docker,如果已经安装可以跳过这一步。
示例一:在Ubuntu系统上安装Docker
# 添加Docker GPG密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
# 添加Docker apt源
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
# 更新apt并安装Docker
sudo apt-get update
sudo apt-get install docker-ce
示例二:在CentOS系统上安装Docker
# 安装依赖
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# 添加Docker yum源
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 安装Docker
sudo yum install docker-ce
下载HAProxy镜像
docker pull haproxy:2.2.29
编写HAProxy配置文件
创建haproxy.cfg
文件,内容如下:
global
log /dev/log local0 info
stats socket /var/run/haproxy.sock mode 660 level admin expose-fd listeners
stats timeout 30s
user haproxy
group haproxy
daemon
maxconn 50000
defaults
log global
mode http
option forwardfor
option http-server-close
option httplog
option dontlognull
option http-keep-alive
timeout connect 10s
timeout client 60s
timeout server 60s
frontend app
bind *:80
default_backend servers
backend servers
server server1 server1:80 check
server server2 server2:80 check
配置Docker容器
运行下面的命令创建一个名为haproxy
的容器,并将haproxy.cfg
文件挂载到容器中:
docker run -d --name haproxy \
-p 80:80 \
-v /path/to/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg:ro \
haproxy:2.2.29
暴露指标接口
HAProxy官方镜像自带了/var/run/haproxy.sock
文件用于获取实时指标,我们可以使用socat等工具将指标转发到Prometheus的/metrics
路径。
示例一:使用socat转发指标
安装socat:
sudo apt install socat
运行下面的命令将/var/run/haproxy.sock
转发到localhost:9090
:
socat -v UNIX-LISTEN:/tmp/haproxy.sock,fork TCP:localhost:9090 &
最后在Prometheus的配置文件prometheus.yml
中添加以下条目:
- job_name: haproxy
scrape_interval: 5s
scrape_timeout: 5s
metrics_path: /metrics
static_configs:
- targets:
- localhost:9090
示例二:使用HAProxy Exporter暴露指标
最新版本的HAProxy已经内置了Prometheus Exporter,我们可以通过以下步骤启用它:
-
修改
haproxy.cfg
文件,在global
下添加以下条目:stats timeout 30s
stats exporter haproxy_exporter -
创建一个新的
haproxy-exporter
容器,并将/var/run/haproxy.sock
(或者/var/run/haproxy/admin.sock
)挂载到容器中:bash
docker run -d --name haproxy-exporter \
--network=container:haproxy \
-p 9101:9101 \
-v /var/run/haproxy.sock:/var/run/haproxy.sock \
haproxytech/haproxy-exporter:latest其中
--network=container:haproxy
选项表示将新容器加入到haproxy
容器的网络命名空间,这样它可以访问haproxy
容器中的/var/run/haproxy.sock
文件。 -
在Prometheus的配置文件
prometheus.yml
中添加以下条目:yml
- job_name: haproxy-exporter
static_configs:
- targets:
- localhost:9101
到此为止,我们已经成功部署了HAProxy并暴露了指标接口,可以通过Prometheus监控HAProxy的实时指标了。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Docker 部署HAProxy v2.2.29 并暴露指标接口的问题解决 - Python技术站