当前位置: 首页 > news >正文

HAProxy 可观测性最佳实践

HAProxy 简介

HAProxy(High Availability Proxy)是一款广泛使用的高性能负载均衡器,支持 TCP 和 HTTP 协议,提供高可用性、负载均衡和代理服务。它特别适用于负载较大的 Web 站点,能够支持数以万计的并发连接,并且可以简单安全地整合到现有架构中。可观测性可以帮助快速定位和解决 HAProxy 及其后端服务的问题。HAProxy 2.0 及以上版本提供了完善的指标暴露体系,可以把指标暴露到指定端口,然后由 Prometheus 进行采集。

观测云

观测云是一款专为 IT 工程师打造的全链路可观测产品,它集成了基础设施监控、应用程序性能监控和日志管理,为整个技术栈提供实时可观察性。这款产品能够帮助工程师全面了解端到端的用户体验追踪,了解应用内函数的每一次调用,以及全面监控云时代的基础设施。此外,观测云还具备快速发现系统安全风险的能力,为数字化时代提供安全保障。观测云的 DataKit 拥有 prom 采集器,可以取代 Prometheus 采集 HAProxy 指标,然后通过仪表板和监控器实时掌握 HAProxy 的运行情况。

前置条件

  • Centos7.9 主机 192.168.0.2192.168.0.3
  • 192.168.0.2 安装 Docker,Docker Compose
  • 192.168.0.2192.168.0.3 安装 Nginx,端口 80(可以使用其它代理服务)

部署 DataKit

DataKit 是一个开源的、跨平台的数据收集和监控工具,由观测云开发并维护。它旨在帮助用户收集、处理和分析各种数据源,如日志、指标和事件,以便进行有效的监控和故障排查。DataKit 支持多种数据输入和输出格式,可以轻松集成到现有的监控系统中。

登录观测云控制台,在「集成」 - 「DataKit」选择对应安装方式,当前采用 Linux 主机部署 DataKit。

复制第 2 步中的安装命令,在 192.168.0.2 主机上执行。

采集步骤

1、部署 HAProxy

HAProxy 部署在 192.168.0.2 主机上,创建 /data/haproxy/haproxy.cfg 文件,其中日志输出到 stdout,负载配置的是前置条件中的 Nginx,指标暴露在 8405 端口,backend 配置的是前置条件中的 Nginx。

globallog stdout format raw local0 info maxconn 4000daemondefaultsmode        tcplog        globaloption      tcplogoption      dontlognulloption      http-server-closeoption      redispatchretries                     3timeout     http-request    10stimeout     queue           1mtimeout     connect                 10stimeout     client          1mtimeout     server          1mtimeout     http-keep-alive 10stimeout     check           10smaxconn                     3000frontend prometheusbind *:8405mode httphttp-request use-service prometheus-exporter if { path /metrics }no log 
frontend frontend_webdescription "frontend frontend_web"bind  :8080default_backend webservers 
backend webservers balance roundrobinserver httpA 192.168.0.2:80 check inter 500 rise 3 fall 2 weight 1server httpB 192.168.0.3:80 check inter 1500 rise 3 fall 2 weight 1

创建 /data/haproxy/docker-compose.yaml 文件。

version: '3.8'
services:haproxy:image: haproxy:3.1.6container_name: haproxyvolumes:- ./haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfgports:- 8080:8080- 8405:8405logging:driver: "json-file"  options:max-size: "10m"   max-file: "3" networks:- haproxy-networknetworks:haproxy-network:driver: bridge         

启动 HAProxy。

docker-compose up -d

访问 192.168.0.2:8080 产生负载调用。

2、指标采集

登录 192.168.0.2,执行如下操作开通采集器。

cd /usr/local/datakit/conf.d/prom
cp prom.conf.sample haproxy.conf

修改 urls 和 source。

重启 DataKit。

datakit service -R

在「指标」 - 「指标管理」中能查看到采集的 haproxy 指标。

3、日志采集

Docker Compose 部署的 HAProxy,日志输出到了 stdout,DataKit 容器采集器默认采集的 stdout 日志,无需再配置。

关键指标

在 HAProxy 中,监控 Frontend(前端)、Backend(后端)、Server(服务器)的常用指标对于性能优化。故障排查和容量规划至关重要。

Frontend 关键指标
指标名称描述类型
frontend_current_sessions当前在前端活跃的会话数量,会随会话的建立和结束动态变化Gauge
frontend_limit_sessions前端允许的最大会话数量,由配置文件中的 maxconn 参数决定Gauge
frontend_connections_total自 HAProxy 工作进程启动以来,前端接收的总连接数Counter
frontend_internal_errors_total自 HAProxy 进程启动以来,前端发生的内部错误总数Counter
frontend_bytes_in_total自 HAProxy 进程启动以来,前端接收的总字节数Counter
frontend_bytes_out_total自 HAProxy 进程启动以来,前端发送的总字节数Counter
frontend_intercepted_requests_total自 HAProxy 进程启动以来,前端拦截的 HTTP 请求总数Counter
Backend 关键指标
指标名称描述类型
backend_bytes_in_total自 HAProxy 进程启动以来,后端接收的总字节数Counter
backend_bytes_out_total自 HAProxy 进程启动以来,后端发送的总字节数Counter
backend_internal_errors_total自 HAProxy 进程启动以来,后端发生的内部错误总数Counter
backend_response_errors_total自 HAProxy 工作进程启动以来,后端返回的无效响应总数Counter
backend_current_queue当前在后端队列中等待处理的请求数量Gauge
backend_max_queue自 HAProxy 进程启动以来,后端队列中曾经达到的最大请求数量Gauge
backend_loadbalanced_total自 HAProxy 进程启动以来,后端负载均衡器成功分配到后端服务器的请求数量Counter
backend_max_response_time_seconds后端服务器响应请求所花费的最大时间(单位:秒)Gauge
backend_current_sessions当前在后端活跃的会话数量Gauge
backend_max_sessions自 HAProxy 进程启动以来,后端遇到的最大并发会话数Gauge
backend_sessions_total自 HAProxy 进程启动以来,后端处理的总会话数Counter
Server 关键指标
指标名称描述类型
server_check_failures_total自 HAProxy 工作进程启动以来,后端服务器健康检查失败的总次数Counter
server_connection_errors_total自 HAProxy 工作进程启动以来,后端服务器连接失败的总次数Counter
server_aborts_total自 HAProxy 工作进程启动以来,后端服务器主动中断连接的总次数Counter
server_bytes_in_total自 HAProxy 工作进程启动以来,某个特定后端服务器接收的总字节数Counter
server_bytes_out_total自 HAProxy 工作进程启动以来,某个特定后端服务器发送的总字节数Counter
server_sessions_total自 HAProxy 工作进程启动以来,某个特定后端服务器处理的总会话数Counter
server_connection_attempts_total自 HAProxy 工作进程启动以来,后端服务器的连接尝试次数总和Counter
server_connection_reuses_total自 HAProxy 工作进程启动以来,某个特定后端服务器的连接重用次数总和Counter
server_weight定义后端服务器的权重,权重越高,分配到该服务器的请求就越多配置参数

场景视图

登录观测云控制台,点击「场景」 -「新建仪表板」,输入 “haproxy”, 选择 “HAProxy 监控视图”,点击 “确定” 即可添加视图。

监控器(告警)

后端服务器检测失败

简要描述:后端服务检测失败触发告警。

后端活跃服务器数量小于1

简要描述:后端活跃服务器数量小于 1 触发告警。

前端 http 响应 4xx 错误率过高

简要描述:前端 http 响应 4消息错误率过高触发告警。

总结

HAProxy 通常用于高可用性场景,可观测性可以确保在出现问题时能够及时响应,减少停机时间。通过收集和分析 HAProxy 的指标(如连接数、响应时间、吞吐量等),可以实时监控其性能,确保系统运行在最佳状态。

http://www.xdnf.cn/news/726499.html

相关文章:

  • 数据库查询性能优化:深入理解与应用物化视图
  • 设计学生管理系统的数据库
  • PostIn V1.1.2版本发布,新增接口评审功能,提升接口质量与合理性
  • 2025陕西省赛补题
  • Golang持续集成与自动化测试和部署
  • Go语言接口:灵活多态的核心机制
  • 马尔可夫链模型解析—24小时政策过山车,黄金拉升80美元V型反转路径
  • 前端antd,后端fastapi,解决文件上传
  • 【二维数组】
  • 【航天远景 MapMatrix 精品教程】08 Pix4d空三成果导入MapMatrix
  • Ubuntu 下同名文件替换后编译链接到旧内容的现象分析
  • Java String的使用续 -- StringBuilder类和StringBuffer
  • Linux(9)——进程(控制篇——下)
  • 架构分享|三层存储架构加速云端大模型推理
  • C与C++相互调用
  • LearnOpenGL-笔记-其十
  • 解决RAGFlow(v0.19.0)有部分PDF无法解析成功的问题。
  • JNI开发流程
  • Ubuntu 桌面版忘记账户密码的重置方法
  • BaseTypeHandler用法-笔记
  • 【Linux 学习计划】-- 进程状态 | 进程运行、阻塞和挂起的本质 | 并行、并发与进程切换 | 进程优先级
  • Flink2.0及Flink-operater在K8S上部署
  • 基于51单片机的音乐盒键盘演奏proteus仿真
  • git查看commit属于那个tag
  • LangChain完全指南:从入门到精通,打造AI应用开发新范式
  • lua的笔记记录
  • MSTNet:用于糖尿病视网膜病变分类的多尺度空间感知 Transformer 与多实例学习方法|文献速递-深度学习医疗AI最新文献
  • LLM 使用 MCP 协议及其原理详解
  • SQL进阶之旅 Day 8:窗口函数实用技巧
  • 极简以太彩光网络解决方案4.0正式发布,“彩光”重构园区网络极简之道