HAProxy 可观测性最佳实践

article/2025/8/2 22:56:45

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.hkcw.cn/article/AYIfAuFAVm.shtml

相关文章

软件测试|FIT故障注入测试工具——ISO 26262合规下的智能汽车安全验证引擎

FIT(Fault Injection Tester)是SURESOFT专为汽车电子与工业控制设计的自动化故障注入测试工具​,基于ISO 26262等国际安全标准开发,旨在解决传统测试中效率低、成本高、安全隐患难以复现的问题,其核心功能包括&#xf…

【计算机网络】应用层协议Http——构建Http服务服务器

🔥个人主页🔥:孤寂大仙V 🌈收录专栏🌈:计算机网络 🌹往期回顾🌹: 【Linux笔记】——进程间关系与守护进程 🔖流水不争,争的是滔滔不息 一、Http协…

[ctfshow web入门] web80

信息收集 过滤了php和data if(isset($_GET[file])){$file $_GET[file];$file str_replace("php", "???", $file);$file str_replace("data", "???", $file);include($file); }else{highlight_file(__FILE__); }解题 大小写…

移动安全Android——客户端数据安全

本地文件权限配置 测试流程 (1)手机运行待测APP应用,adb执行命令找到APP包名 adb shell dumpsys activity top|findstr ACTIVITY (2)adb shell 进入设备,以Root权限进入/data/data/package包名目录下 c…

AI生态警报:MCP协议风险与应对指南(下)——MCP Host安全

AI生态警报:MCP协议风险与应对指南(上)——架构与供应链风险https://blog.csdn.net/WangsuSecurity/article/details/148335401?sharetypeblogdetail&sharerId148335401&sharereferPC&sharesourceWangsuSecurity&spm1011.24…

机房网络设备操作安全管理制度

该制度围绕机房网络设备操作安全,规定账号实行系统管理员、操作管理员、一般用户三级分级管理,遵循最小授权和权限分割原则,账号需实名制、禁止共享及转借,密码设置需至少 8 位、3 种字符组合且每 3 个月修改一次;高危指令执行需上级审批、双人核查,远程登录需限制权限、…

Root权限:解锁Android的终极力量

Root后的功能扩展 Root后可以实现的高级功能,如系统级备份、自定义ROM、性能优化、广告屏蔽等。 Root的风险与防范 讨论Root可能导致的安全问题,如恶意软件攻击、系统不稳定、保修失效等,提出降低风险的建议,如使用可信工具、备…

亚马逊数据采集软件完全指南:从工具原理到实战落地

亚马逊数据采集软件有哪些?在数字化商业浪潮中,亚马逊作为全球电商巨头,其平台上蕴含着海量的数据宝藏。对于卖家、品牌商以及市场分析师而言,精准获取和分析这些数据,成为了在激烈竞争中脱颖而出的关键。从产品定价的…

免费高清多功能录屏软件推荐

软件介绍 今天为大家介绍一款功能全面的免费录屏软件 - 云豹录屏大师。 录屏格式支持 这款软件特别强大,能够录制多种常见视频格式,包括MP4、AVI、WMV等格式,满足不同场景的录制需求。 高帧率支持 软件最高支持120帧的录制效果&#xff0…

【交通 Traffic Transformer】同一篇文章,内容排版稍有不同 | 交通预测模型中,Transformer相比传统GCN模型有何优势?

冰冻三尺,非一日之寒。 前情提要: 【Traffic Transformer】将 Transformer 应用于 交通预测领域中 | 动态和分层交通时空特征 | 时空模型比纯时间模型的性能要好得多 | 定义不好的相邻矩阵会损害模型Transformer相比传统GCN模型在交通预测中具有三大核心优势: 1、动态空间依…

docker-compose搭建prometheus以及grafana

1. 什么是 Prometheus? Prometheus 是一个开源的系统监控和告警工具,由 SoundCloud 于 2012 年开始开发,现为 CNCF(Cloud Native Computing Foundation)项目之一。它特别适合云原生环境和容器编排系统(如 …

AI科技前沿动态:5.26 - 5.30 一周速览

目录 ⭐ 本周热点💡 阿里巴巴开源自主搜索 AI 智能体 WebAgent💡 我国首个软件开发 AI 智能体标准发布,20 余家巨头联手参编💡 刚刚,新版DeepSeek-R1正式开源!直逼o3编程强到离谱,一手实测来了 …

【google 论文】Titans: Learning to Memorize at Test Time

核心思想与贡献: 这篇论文的核心贡献在于提出了一种新的神经网络长期记忆模块 (neural long-term memory module),并基于此构建了一个名为 Titans 的新型系列架构。这个架构旨在克服现有模型(如Transformers)在处理超长序列和长期…

VASP 教程:VASP 结合 Phonopy 计算硅的比热容

VASP 全称为 Vienna Ab initio Simulation Package(The VASP Manual - VASP Wiki)是一个计算机程序,用于从第一性原理进行原子尺度材料建模,例如电子结构计算和量子力学分子动力学。 Phonopy(Welcome to phonopy — Ph…

企业数字化转型的7个难点

数字化转型不是一个有始有终的项目,而是一个持续变革的过程,过程漫长,且险象环生。需要领导者带领企业从成功或不成功的经验里持续反思、持续学习。 近年来,以移动互联网、云计算、大数据、人工智能等为代表的新一代数字化技术正在…

华为OD机试真题——简易内存池(2025A卷:200分)Java/python/JavaScript/C++/C/GO最佳实现

2025 A卷 200分 题型 本文涵盖详细的问题分析、解题思路、代码实现、代码详解、测试用例以及综合分析; 并提供Java、python、JavaScript、C++、C语言、GO六种语言的最佳实现方式! 本文收录于专栏:《2025华为OD真题目录+全流程解析/备考攻略/经验分享》 华为OD机试真题《简易…

mysql-mysql源码本地调试

前言 先进行mysql源码本地编译:mysql源码本地编译 1.本地调试 这里以macbook为例 1.使用vscode打开mysql源码 2.创建basedir目录、数据目录、配置文件目录、配置文件 cd /Users/test/ mkdir mysqldir //创建数据目录和配置目录 cd mysqldir mkdir conf data …

华为OD机试真题——查找接口成功率最优时间段(2025A卷:100分)Java/python/JavaScript/C/C++/GO最佳实现

2025 A卷 100分 题型 本专栏内全部题目均提供Java、python、JavaScript、C、C++、GO六种语言的最佳实现方式; 并且每种语言均涵盖详细的问题分析、解题思路、代码实现、代码详解、3个测试用例以及综合分析; 本文收录于专栏:《2025华为OD真题目录+全流程解析+备考攻略+经验分…

硬件I2C和软件I2C的区别

硬件I2C和软件I2C的区别 一、硬件I2C 1、硬件IC的局限性及学习意义 尽管硬件IC外设在STM32等微控制器中提供了标准化的通信支持,但在实际应用中,其稳定性可能存在问题。例如,某些情况下外设会因事件检测异常而进入死锁状态,仅能…

PyCharm接入DeepSeek,实现高效AI编程

介绍本土AI工具DeepSeek如何结合PyCharm同样实现该功能。 一 DeepSeek API申请 首先进入DeepSeek官网:DeepSeek 官网 接着点击右上角的 “API 开放平台“ 然后点击API keys 创建好的API key,记得复制保存好 二 pycharm 接入deepseek 首先打开PyCh…