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.pswp.cn/diannao/85091.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/85091.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/85091.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

增強LangChain交互體驗:消息歷史(記憶)功能詳解

背景 在構建聊天機器人時,將對話狀態傳入和傳出鏈至關重要。 LangGraph 實現了內置的持久層,允許鏈狀態自動持久化在內存或外部后端(如 SQLite、Postgres 或 Redis)中。在本文我們將演示如何通過將任意 LangChain runnables 包裝在最小的 LangGraph 應用程序中來添加持久性…

EasyRTC音視頻實時通話助力微信小程序:打造低延遲、高可靠的VoIP端到端呼叫解決方案

一、方案概述? 在數字化通信浪潮下,端到端實時音視頻能力成為剛需。依托龐大用戶生態的微信小程序,是實現此類功能的優質載體。基于WebRTC的EasyRTC音視頻SDK,為小程序VoIP呼叫提供輕量化解決方案,通過技術優化實現低延遲通信&a…

WebVm:無需安裝,一款可以在瀏覽器運行的 Linux 來了

WebVM 是一款可以在瀏覽器中運行的Linux虛擬機。不是那種HTMLJavaScript模擬的UI,完全通過HTML5/WebAssembly技術實現客戶端運行。通過集成CheerpX虛擬化引擎,可直接在瀏覽器中運行未經修改的Debian系統。 Stars 數13054Forks 數2398 主要特點 完整 Lin…

CesiumInstancedMesh 實例

CesiumInstancedMesh 實例 import * as Cesium from cesium;// Three.js 風格的 InstancedMesh 類, https://threejs.org/docs/#api/en/objects/InstancedMesh export class CesiumInstancedMesh {/*** Creates an instance of InstancedMesh.** param {Cesium.Geometry} geom…

創建型模式之Abstract Factory(抽象工廠)

創建型模式之Abstract Factory(抽象工廠) 摘要: 本文介紹了抽象工廠模式(Abstract Factory),它是一種創建型設計模式,提供了一種創建一系列相關對象的接口而無需指定具體類。文章通過手機工廠示…

多卡訓練核心技術詳解

多卡訓練核心技術詳解 多卡訓練 主要圍繞分布式環境初始化、模型并行化、數據分片和梯度同步展開。下面結合您的代碼,詳細解釋這些核心部分: 并行執行命令 torchrun --nproc_per_node=5 TokenLossMulCard.py 1. 分布式環境初始化 def init_distributed():init_process_…

OpenCV---minAreaRect

一、基本概念與用途 minAreaRect是OpenCV中用于計算點集的最小面積旋轉矩形的函數。在計算機視覺領域,它常被用于: 目標檢測中獲取傾斜對象的邊界框(如傾斜的車牌、文本行、工業零件)形狀分析與識別(如確定物體的主方…

高端裝備制造企業如何選擇適配的項目管理系統提升項目執行效率?附選型案例

高端裝備制造項目通常涉及多專業協同、長周期交付和高風險管控,因此系統需具備全生命周期管理能力。例如,北京奧博思公司出品的 PowerProject 項目管理系統就是一款非常適合制造企業使用的項目管理軟件系統。 國內某大型半導體裝備制造企業與奧博思軟件達…

如何科學測量系統的最高QPS?

要準確測量系統的最高QPS(Queries Per Second),既不能簡單依賴固定請求數(如2萬次),也不能盲目壓到服務器崩潰。以下是專業的方法論和步驟: 1. 核心原則 目標:找到系統在穩定運行&a…

HTML5實現簡潔的端午節節日網站源碼

HTML5實現簡潔的端午節節日網站源碼 前言一、設計來源1.1 網站首頁界面1.2 端午由來界面1.3 節日活動界面1.4 傳統美食界面1.5 民俗文化界面1.6 登錄界面1.7 注冊界面 二、效果和源碼2.1 動態效果2.2 源代碼 結束語 HTML5實現簡潔的端午節節日網站源碼,酷炫的大氣簡…

使用 `\033` 方式設置終端字體顏色

通過 ANSI 轉義序列(以八進制 \033 開頭 ,十進制 27 ),我們可以在支持的終端中輕松實現這一功能。本文將詳細介紹如何使用 \033 設置字體顏色,并提供 C、C++ 和 Python 的示例代碼。 什么是 ANSI 轉義序列? ANSI 轉義序列是一組特殊的字符序列,用于控制終端的顯示屬性…

脫發因素機器學習數據分析

脫發因素機器學習數據分析 一、背景描述 隨著年齡增長,脫發成為影響外貌與健康的重要問題。 本數據集包含遺傳、荷爾蒙變化、醫療狀況、藥物治療、營養缺乏、心理壓力等12個可能導致脫發的因素, 旨在通過數據分析挖掘各因素與脫發的潛在關聯&#xf…

React 第四十八節 Router中 useMatch 的使用詳細介紹及案例分析

前言 useMatch 是 React Router 中的一個鉤子,用于判斷當前 URL 路徑是否與指定模式匹配,并返回匹配的詳細信息。 它常用于動態路由參數提取、條件渲染和導航高亮等場景。 一、useMatch 核心功能 路徑匹配檢測:判斷當前路徑是否符合指定模…

ubuntu mysql 8.0.42 基于二進制日志文件位置和GTID主從復制配置

目錄 1 操作系統信息 2 MySql數據庫版本 3 主機列表 4 MySQL服務器都安裝依賴 5 主庫服務器安裝mysql軟件步驟: 6 從服務器安裝mysql軟件步驟 7 基于二進制日志文件位置的主從復制配置 8 使用全局事務標識符進行主從復制(GTID) 9 部署過程遇到問題 1 操作系…

鴻蒙OSUniApp滑動鎖屏實戰:打造流暢優雅的移動端解鎖體驗#三方框架 #Uniapp

UniApp滑動鎖屏實戰:打造流暢優雅的移動端解鎖體驗 引言 移動應用的安全性和用戶體驗是開發中不可忽視的重要環節。滑動鎖屏作為一種直觀、安全且用戶友好的解鎖方式,在移動應用中得到廣泛應用。本文將深入探討如何使用UniApp框架實現一個功能完備、動…

專場回顧 | 重新定義交互,智能硬件的未來設計

自2022年起,中國智能硬件行業呈現出蓬勃發展的態勢,市場規模不斷擴大。一個多月前,“小智AI”在短視頻平臺的爆火將智能硬件帶向了大眾視野,也意味著智能硬件已不再僅僅停留在概念和技術層面,而是加速邁向實際落地應用…

zynq 級聯多個ssd方案設計(ECAM BUG修改)

本文講解采用zynq7045芯片如何實現200T容量高速存儲方案設計,對于大容量高速存儲卡,首先會想到采用pcie switch級聯方式,因為單張ssd的容量是有限制的(目前常見的m.2接口容量為4TB,U.2接口容量為16TB)&…

中國區域每月地下水水位柵格數據集(2005-2022)

時間分辨率:月空間分辨率:1km - 10km共享方式:開放獲取數據大小:8.52 GB數據時間范圍:2005-01-01 — 2022-12-01元數據更新時間:2024-09-09 數據集摘要 數據集“GWs_cn_1km”提供了2005年至2022年中國區域…

鴻蒙OSUniApp導航欄組件開發:打造清新簡約的用戶界面#三方框架 #Uniapp

UniApp 開發實戰:打造符合鴻蒙設計風格的日歷活動安排組件 在移動應用開發中,日歷和活動安排是非常常見的需求。本文將詳細介紹如何使用 UniApp 框架開發一個優雅的日歷活動安排組件,并融入鴻蒙系統的設計理念,實現一個既美觀又實…

在 HTML 文件中添加圖片的常用方法

本文詳解HTML圖片插入方法&#xff1a;1&#xff09;通過<img>標簽實現&#xff0c;必須含src和alt屬性&#xff1b;2&#xff09;路徑支持絕對/相對引用&#xff1b;3&#xff09;建議設置width/height保持比例&#xff1b;4&#xff09;響應式方案用srcset適配不同設備…