【30天精通Prometheus:一站式监控实战指南】第19天:haproxy_exporter从入门到实战:安装、配置详解与生产环境搭建指南,超详细

亲爱的读者们👋

  欢迎加入【30天精通Prometheus】专栏!📚 在这里,我们将探索Prometheus的强大功能,并将其应用于实际监控中。这个专栏都将为你提供宝贵的实战经验。🚀

  Prometheus是云原生和DevOps的核心监控工具,我们将从基础概念开始,逐步涵盖配置、查询、告警和可视化。💪

  在接下来的30天里,我们将解锁Prometheus的实战技巧,通过案例和分享,助你深入理解其工作原理。📆

  目标:30天后,你将熟练掌握Prometheus,为未来的项目挑战做好准备!💯

  这是一段精彩旅程,期待你的加入!🎉


一、haproxy_exporter概述📘

定义
  haproxy_exporter是HAProxy的一个数据导出插件,它的主要作用是将HAProxy的运行状态、性能数据等信息导出到其他监控系统或数据存储平台,从而方便用户进行实时监控和数据分析。

功能
  
数据导出:能够将HAProxy的关键运行指标(如活动连接数、已连接的客户端和服务器数量、内存使用情况等)导出为可监控的数据格式。

  兼容性:可以与多种监控系统(如Prometheus)无缝集成,提供HTTP方式的数据暴露接口,便于数据的采集和监控。

  自定义配置:支持用户通过配置文件或命令行参数进行自定义设置,如指定HAProxy状态页的URL、选择HTTP或HTTPS连接方式等。

  安全性:支持基础认证(Basic Auth)和HTTPS证书验证,确保数据传输的安全性。

应用场景
  负载均衡监控:在使用HAProxy作为负载均衡器的环境中,haproxy_exporter可以实时监控负载均衡器的运行状态和性能,帮助系统管理员及时发现并解决问题。

  性能优化:通过对HAProxy的性能指标进行实时监控和分析,可以帮助用户找出性能瓶颈,从而进行针对性的优化。

  故障预防和恢复:haproxy_exporter提供的详细数据可以帮助用户预测潜在故障,及时采取措施进行预防或恢复,确保服务的稳定性和可用性。

二、安装haproxy_exporter💾

注意事项和常见问题
  1.环境配置:确认服务器操作系统和版本是否兼容haproxy_exporter。确保有足够的磁盘空间和内存来安装和运行haproxy_exporter。

  2.依赖安装:根据haproxy_exporter的要求,可能需要先安装某些依赖库或软件,如Go语言环境等。确保所有依赖项都是最新版本,以避免兼容性问题。

  3.配置文件:在安装前准备好必要的配置文件,如haproxy_exporter的配置文件,以便在安装过程中进行相应设置。

  4.权限设置:确保安装过程中有足够的权限来创建目录、写入文件等。根据需要设置适当的用户和组权限,以确保haproxy_exporter的正常运行。

2.1 访问haproxy_exporter官方网站 🌐

2.2 选择适合的版本🔍

  • 在下载页面,你将看到不同操作系统的haproxy_exporter二进制包。根据你的操作系统选择适合的版本。例如,如果你使用的是Linux 64位系统,就选择haproxy_exporter-0.15.0.linux-amd64.tar.gz(其中x.x.x是版本号)。

2.3 下载haproxy_exporter⬇️

  • 点击所选版本的下载链接,将haproxy_exporter的二进制包下载到你的本地计算机。

2.4 解压安装包📂

  • 将下载的haproxy_exporter压缩包解压到你想要安装的目录。你可以使用命令行工具(如tar)来完成这个步骤。解压后,你将看到一个名为haproxy_exporter-x.x.x.linux-amd64的目录,其中包含haproxy_exporter的二进制文件和其他相关文件。
tar -xzf haproxy_exporter-0.15.0.linux-amd64.tar.gz

2.5 运行haproxy_exporter🚀

  • 进入解压后的目录,并运行haproxy_exporter服务器。在Linux下,你可以使用如下命令。如果一切正常,你应该能在终端看到haproxy_exporter的启动日志。
cd haproxy_exporter-x.x.x.linux-amd64

./haproxy_exporter --haproxy.scrape-uri="http://localhost:5000/baz?stats;csv"
  • 如果haproxy开启了身份验证,需要将平局添加到要抓取的uri中,如下示例:
./haproxy_exporter  --haproxy.scrape-uri="http://user:pass@haproxy.example.com/haproxy?stats;csv"

三、haproxy_exporter指标和配置详解📖

  • 黑色:作为默认文本颜色。
  • 绿色:表示常规配置项
  • 橙色:表示具有互斥参数的配置项 / 建议开启(根据自己的场景确定需求)
  • 蓝色:不重要的配置项 / 建议不开启
  • 红色:表示关键信息和警告 / 最好开启

注意:

  • 1.相关参数配置建议仅供参考,具体要以自己生产的实际需要自行配置。
  • 2.以下配置参数介绍是基于haproxy_exporter-0.15.0.linux-amd64版本说明的,其它版本会有不同。

3.1 haproxy_exporter.service

  • - -web.systemd-socket
      指示haproxy_exporter使用由systemd提供的socket进行监听。通常用于与systemd的socket激活功能结合使用,允许systemd管理系统服务的监听socket,并在服务启动时将其传递给服务。当使用这个选项时,haproxy_exporter将不会自己创建监听socket,而是使用systemd已经为其创建的socket。通常在系统服务配置文件中设置,而不是直接传递给haproxy_exporter命令行
  • - -web.listen-address=:9101
      设置haproxy_exporter监听的地址和端口。:9101表示监听所有可用的网络接口(IPv4和IPv6)上的9101端口。如果不设置此参数,haproxy_exporter将默认监听在本地的某个端口上
  • - -web.config.file=“”
      允许你指定一个配置文件,可以包含haproxy_exporter的运行配置,如果留空,则haproxy_exporter将使用默认配置
  • - -web.telemetry-path=“/metrics”
      定义haproxy_exporter提供metrics数据的HTTP路径
  • - -haproxy.scrape-uri=“http://localhost/;csv”
      指定haproxy_exporter应从哪个URI获取HAProxy的统计信息。http://localhost/;csv 表示从本地运行的HAProxy实例获取CSV格式的统计信息。如果HAProxy配置了统计页面并允许远程访问,这里的localhost可以替换为HAProxy服务器的实际地址
  • - -haproxy.ssl-verify
      当HAProxy的统计信息通过HTTPS提供时,此标志会启用SSL证书验证
  • - -haproxy.server-metric-fields=“2,3,4,5,6,7,8,9,13,14,15,16,17,18,21,24,30,33,35,38,39,40,41,42,43,44,49,50,58,59,60,61”
      定义haproxy_exporter应从HAProxy的CSV统计信息中提取哪些字段。数字代表CSV文件中的列索引,这些列索引对应的数据将被导出为metrics。列表中的数字是根据HAProxy统计CSV输出的列来指定的,确保这些数字与你HAProxy版本输出的CSV列相对应
  • - -haproxy.server-exclude-states=“”
      允许你指定要从metrics中排除的服务器状态。默认情况下为空,意味着不排除任何状态。你可以在这里列出不需要监控的状态,比如“MAINT”或“DOWN”,以减少噪音和不必要的警报
  • - -haproxy.timeout=5s
      设置haproxy_exporter尝试从HAProxy获取统计信息时的超时时间。5s表示如果5秒内无法获取数据,haproxy_exporter将放弃尝试
  • - -http.proxy-from-env
      告诉haproxy_exporter从环境变量中获取HTTP代理设置,当设置了这个标志时,haproxy_exporter将查找如HTTP_PROXY和HTTPS_PROXY等环境变量,并使用它们来配置其HTTP客户端

四、实战演练:生产环境搭建指南🔨

4.1 配置haproxy支持status

4.1.1 配置haproxy展示状态信息

  • 编辑haproxy.cfg配置文件,添加如下配置项
listen stats
    bind :5000
    stats uri /haproxy  // 监控页面的url访问路径
    # stats auth admin:admin  //监控页面的用户和密码,可自行配置
    stats enable

4.1.2 重启haproxy

sudo systemctl restart haproxy

4.1.3 Web访问haproxy可看到状态信息

http://127.0.0.1:5000/haproxy
在这里插入图片描述

4.2 配置haproxy_exporter

4.2.1 创建普通用户管理haproxy_exporter👤

useradd deploy

4.2.2 解压haproxy_exporter.tar.gz📦

注意:
  我的是x86,所以使用haproxy_exporter-0.15.0.linux-amd64.tar.gz,您可以使用uname -a命令查看系统架构

mkdir /home/deploy/haproxy_exporter

tar xvf haproxy_exporter-0.15.0.linux-amd64.tar.gz -C /home/deploy/haproxy_exporter/

4.2.3 将haproxy_exporter集成到Prometheus配置中✂️

  将haproxy_exporter集成到Prometheus配置中,确保数据能够正常采集。编辑Prometheus的配置文件(通常是prometheus.yml),在scrape_configs部分添加haproxy_exporter的配置。告诉Prometheus将采集haproxy_exporter:9101的数据。

  - job_name: 'haproxy_exporter'
    static_configs:
      - targets:
      - targets: ["localhost:9101"]
        labels:
          exporter: haproxy_exporter

4.2.4 更改haproxy_exporter软件包名称✂️

mv /home/deploy/haproxy_exporter-0.15.0.linux-amd64 /home/deploy/haproxy_exporter

4.2.5 编辑haproxy_exporter.service文件📝

cat > /etc/systemd/system/haproxy_exporter.service <<EOF
[Unit]
Description=HAproxy exporter
After=network.target

[Service]
Type=simple
User=deploy
Group=deploy
ExecStart=/home/deploy/haproxy_exporter/haproxy_exporter \
--haproxy.scrape-uri="http://127.0.0.1:5000/haproxy?stats;csv" \
--web.listen-address=:9101
ExecReload=/bin/kill -HUP
Restart=on-failure

[Install]
WantedBy=multi-user.target
EOF

4.2.6 启动haproxy_exporter.service🔌

sudo systemctl daemon-reload

sudo systemctl enable --now haproxy_exporter.service

4.2.7 查看服务是否正常启动🔍

# 查看service服务是否启动
sudo systemctl status haproxy_exporter.service

# 查看端口是否存在
sudo ss -ntulp | grep 9101

相关资料下载地址📚

一个典型的Haproxy_exporter监控metric例子 包含指标 haproxy_backend_bytes_in_total haproxy_backend_bytes_out_total haproxy_backend_client_aborts_total haproxy_backend_compressor_bytes_bypassed_total haproxy_backend_compressor_bytes_in_total haproxy_backend_compressor_bytes_out_total haproxy_backend_connection_errors_total haproxy_backend_current_queue haproxy_backend_current_server haproxy_backend_current_session_rate haproxy_backend_current_sessions haproxy_backend_http_connect_time_average_seconds haproxy_backend_http_queue_time_average_seconds haproxy_backend_http_response_time_average_seconds haproxy_backend_http_responses_compressed_total haproxy_backend_http_responses_total haproxy_backend_http_total_time_average_seconds haproxy_backend_response_errors_total haproxy_backend_retry_warnings_total haproxy_backend_server_aborts_total haproxy_backend_server_selected_total haproxy_backend_sessions_total haproxy_backend_up haproxy_backend_weight haproxy_exporter_build_info haproxy_exporter_csv_parse_failures haproxy_exporter_total_scrapes haproxy_frontend_bytes_in_total haproxy_frontend_bytes_out_total haproxy_frontend_compressor_bytes_bypassed_total haproxy_frontend_compressor_bytes_in_total haproxy_frontend_compressor_bytes_out_total haproxy_frontend_connections_total haproxy_frontend_current_session_rate haproxy_frontend_current_sessions haproxy_frontend_http_requests_total haproxy_frontend_http_responses_compressed_total haproxy_frontend_http_responses_total haproxy_frontend_limit_session_rate haproxy_frontend_limit_sessions haproxy_frontend_max_session_rate haproxy_frontend_max_sessions haproxy_frontend_request_errors_total haproxy_frontend_requests_denied_total haproxy_frontend_sessions_total haproxy_server_bytes_in_total haproxy_server_bytes_out_total haproxy_server_check_duration_seconds haproxy_server_check_failures_total haproxy_server_client_aborts_total haproxy_server_connection_errors_total haproxy_server_current_queue haproxy_server_current_session_rate haproxy_server_current_sessions haproxy_server_downtime_seconds_total haproxy_server_http_responses_total haproxy_server_max_queue haproxy_server_max_session_rate haproxy_server_max_sessions haproxy_server_redispatch_warnings_total haproxy_server_response_errors_total haproxy_server_retry_warnings_total haproxy_server_server_aborts_total haproxy_server_server_selected_total haproxy_server_sessions_total haproxy_server_up haproxy_server_weight haproxy_up process_cpu_seconds_total process_max_fds process_open_fds process_resident_memory_bytes process_start_time_seconds process_virtual_memory_bytes promhttp_metric_handler_requests_in_flight promhttp_metric_handler_requests_total
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

喜提yBei冰美式

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值