Zookeeper 可觀測性最佳實踐

Zookeeper 介紹

ZooKeeper 是一個開源的分布式協調服務,用于管理和協調分布式系統中的節點。它提供了一種高效、可靠的方式來解決分布式系統中的常見問題,如數據同步、配置管理、命名服務和集群管理等。本文介紹通過 DataKit 采集 Zookeeper 指標,幫助監控 Zookeeper 運行情況。

主要功能:

  • 配置管理:集中管理分布式系統的配置信息,便于動態更新和同步。
  • 命名服務:為分布式系統中的節點提供統一的命名和查找機制,類似于 DNS。
  • 分布式鎖:通過鎖機制解決分布式系統中的資源競爭問題。
  • 隊列管理:實現分布式隊列,支持順序隊列和優先隊列。
  • 集群管理:監控集群成員的健康狀態,實現故障檢測和自動恢復。

Zookeeper 可觀測的必要性:

  • 保障系統穩定性:ZooKeeper 是分布式系統的核心組件,負責協調多個節點的行為,確保數據一致性和服務可用性。監控 ZooKeeper 的健康狀態可以及時發現潛在問題,如節點故障、網絡異常或性能瓶頸,從而快速采取措施,避免系統整體故障。
  • 優化系統性能:監控可以幫助開發者和運維人員了解 ZooKeeper 集群的性能狀況,例如操作延遲、事務處理速度等。通過分析這些數據,可以優化配置,提升系統性能。
  • 預防故障:監控系統可以提前預警潛在問題,例如磁盤 I/O 等資源瓶頸,從而在問題惡化之前進行干預,預防故障的發生。
  • 支持故障排查:當 ZooKeeper 集群出現問題時,監控數據可以提供關鍵線索,幫助快速定位問題根源。例如,通過分析日志和性能指標,可以確定是網絡問題、配置錯誤還是硬件故障。
  • 提升運維效率:運維人員可以直觀地查看 ZooKeeper 集群的狀態,減少手動排查問題的時間,提高運維效率。
  • 確保集群一致性:ZooKeeper 的核心功能之一是保證分布式系統中數據的一致性。監控可以確保集群中的所有節點狀態一致,及時發現和修復不一致的情況。
  • 支持動態調整:分布式系統的環境和需求可能會動態變化,監控 ZooKeeper 可以幫助運維人員根據實時數據動態調整集群配置,例如增加節點或優化資源分配。

觀測云

觀測云是一款功能強大的統一可觀測平臺,提供對多云環境、云原生應用、中間件以及各類應用程序的實時監控和分析能力。在 ZooKeeper 的監控場景中,觀測云通過其核心數據采集器 DataKit,結合 ZooKeeper 的監控指標,實現對 ZooKeeper 集群的實時監控和數據可視化展示。觀測云通過其強大的數據可視化功能,將 ZooKeeper 的監控指標以直觀的儀表盤形式展示出來,幫助用戶快速定位問題并優化系統性能。

暴露 Zookeeper 指標

從 3.6.0 版本開始,ZooKeeper 原生支持 Prometheus 格式的指標暴露。只需在?zoo.cfg?配置文件中添加以下配置:

metricsProvider.className=org.apache.zookeeper.metrics.prometheus.PrometheusMetricsProvider
metricsProvider.httpPort=7000
metricsProvider.exportJvmInfo=true

然后重啟 Zookeeper 服務。

執行完畢后,可通過?http://主機ip:7000/metrics?查看當前主機獲取到的所有監控數據。

采集器配置

進入 DataKit 安裝目錄下的?conf.d/prom?目錄,復制?prom.conf.sample?并命名為?zookeeper.conf

[[inputs.prom]]urls = ["http://192.168.0.19:7000/metrics"]                                                                                   ## 采 集 器 別 名                                                                                                                  source = "zookeeper"                                                                                                          ## 采 集 間 隔  "ns", "us" (or "μs"), "ms", "s", "m", "h"                                                                         interval = "10s"                                                                                                              measurement_name = "zookeeper"                                                                                                metric_types = []                                                                                                             ## TLS 配 置                                                                                                                    tls_open = false                                                                                                              [inputs.prom.tags]                                                                                                            service = "zookeeper"  # ·················[inputs.prom.as_logging]enable = falseservice = "service_name"## Customize tags.# [inputs.prom.tags]# some_tag = "some_value"# more_tag = "some_other_value"## (Optional) Collect interval: (defaults to "30s").# interval = "30s"## (Optional) Timeout: (defaults to "30s").# timeout = "30s"

主要修改 urls,配置好后保存,重啟 DataKit?即可。

關鍵指標

登錄觀測云控制臺,點擊「指標」 -「指標管理」,輸入“zookeeper”,就能查詢采集到的指標。

ZooKeeper 是一個分布式協調服務,用于管理分布式系統中的配置信息、命名服務、分布式同步等。以下是對 ZooKeeper 指標的解釋:

  • 系統性能與延遲:通過 ZooKeeper 的四字命令(如 stat、srvr 等)可以獲取服務的運行狀態,包括是否處于領導者或追隨者角色、服務的延遲等
  • 會話數:監控會話數可以幫助了解 ZooKeeper 的使用情況,及時發現異常的會話增長。
  • 請求延遲:監控 ZooKeeper 的請求延遲可以幫助評估服務的響應性能。高延遲可能表明存在性能問題,需要進一步調查。

以下是關于 Zookeeper 關鍵指標的介紹:

指標描述單位
avg_latency平均延遲ms
readlatency_count讀操作延遲的計數count
propagation_latency_count數據傳播延遲的計數count
commit_count提交操作的次數count
requests_in_session_queue_count會話隊列中的請求數量count
requests_not_forwarded_to_commit_processor未轉發到提交處理器的請求數量count
prep_processor_queue_size預處理隊列的大小Bytes
connection_request_count當前存活的連接數count
num_alive_connections用于緩存文件系統的內存量Bytes
session_queues_drained_count會話隊列被清空的次數count
auth_failed_count認證失敗的次數count
ensemble_auth_fail集群認證失敗的次數count
bytes_received_count接收的字節數Bytes
open_file_descriptor_count當前打開的文件描述符數量count
process_open_fds進程打開的文件描述符數量count
uptime系統或進程的運行時間s
approximate_data_size近似數據大小Bytes
znode_count節點數量count
watch_count監控數量count

場景視圖

登錄觀測云控制臺,點擊「場景」 -「新建儀表板」,輸入 “Zookeeper”, 選擇 “ Zookeeper”,點擊 “確定” 即可添加視圖。

監控器(告警)

Zookeeper 服務器發送宕機異常

Zookeeper 平均響應延遲過高異常

Zookeeper 堆積請求數過大異常

總結

通過使用觀測云平臺對 ZooKeeper 進行統一監控,我們能夠實時追蹤關鍵性能指標,如會話連接數、節點讀寫操作次數、以及會話超時情況。這些指標對于優化 ZooKeeper 集群性能、識別性能瓶頸、及時排查故障至關重要。它們幫助我們優化會話管理策略,確保集群狀態一致性,進行有效的資源規劃,并為分布式協調任務提供支持。這樣的監控不僅增強了用戶體驗,也顯著提高了系統的可靠性和穩定性。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/77560.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/77560.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/77560.shtml

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

相關文章

【安全】DVWA靶場滲透

【安全】DVWA靶場滲透 備注一、環境搭建二、弱口令(Brute Force)三、命令注入(Command Injection)四、CSRF(Cross Site Request Forgery)五、文件包含(File Inclusion)六、文件上傳&…

Ubuntu22.04安裝QT、px4安裝環境

Ubuntu22.04安裝QGC編譯環境、QT、px4編譯環境 參考文檔版本說明安裝QGC安裝Ubuntu安裝QT配置px4安裝環境出現錯誤怎么辦 參考文檔 PX4 1.15 User Guide 版本說明 PX4:1.15.4 QGC: 安裝QGC 我使用的是pixhawk V5飛控,在QGC4.4 Guide里&a…

積木報表查詢出現jdbc.SQLServerException: 對象名 ‘user_tab_comment 的解決方法

目錄 前言1. 問題所示2. 解決方法前言 ?? 找工作,來萬碼優才:?? #小程序://萬碼優才/r6rqmzDaXpYkJZF 爬蟲神器,無代碼爬取,就來:bright.cn 1. 問題所示 使用帆軟報表無錯,后續使用積木報表查詢出錯: 沒有顯示報表: 具體錯誤信息如下:

c++基礎·左值右值

一、左值與右值的本質特征 1. 基礎定義 左值 (lvalue) ? 可出現在賦值運算符左側 ? 可被取地址(有明確存儲位置) ? 通常為具名變量(如int a 10;中的a) 右值 (rvalue) ? 不可出現在賦值左側 ? 不可取地址(無持久…

【Rust 精進之路之第9篇-所有權·核心】規則與移動 (Move):Rust 內存安全基石詳解

系列: Rust 精進之路:構建可靠、高效軟件的底層邏輯 作者: 碼覺客 發布日期: 2025年4月20日 引言:沒有 GC,Rust 如何管好內存?答案是所有權! 在我們的 Rust 探索之旅中,我們已經學習了變量、數據類型、控制流、函數和強大的構建工具 Cargo。現在,我們將踏入 Rust 最…

嵌入式學習——opencv圖像庫編程

環境配置 OpenCV(Open Source Computer Vision Library)是一個開源的計算機視覺和圖像處理庫,廣泛用于各種計算機視覺任務,如圖像處理、視頻分析、人臉識別、物體檢測、機器學習等。它提供了豐富的函數和工具,用于處理…

一招破敵,掌控 React 渲染術:createRoot 與 root.render

前言 在這數字江湖中,前端門派百花齊放,React 一門尤為奇特,講究“以虛制實,以組件馭天下”。眼下你我初入江湖,第一關便是掛載組件之術。倘若不懂 createRoot 與 root.render,那就像一個新晉小俠,連起手式都沒學會,點穴還沒碰到 DOM,自己先內傷三分。 來吧,少年!…

Linux常見工具如yum、vim、gcc、gdb的基本使用,以及編譯過程和動靜態鏈接的區別

目錄 一、工具的本質 二、一些常用的工具 1.yum 2.vim 1)vim的三種基本模式: 2)vim的基本操作 ①命令模式下的基本操作: ②插入模式: ③底行模式: 3)vim的配置:讓他變得更好用 3.gcc…

JavaScript 一維數組轉不含零的兩個數

問題描述&#xff1a; /*** param {number} n* return {number[]}*/ var getNoZeroIntegers function(n) {for(let i 1;i<n;i){if(String(i).indexOf(0) -1&&String(n-i).indexOf(0) -1){return [i,n-i]}}};String類型indexOf()函數如果找不到字串則返回-1&…

力扣DAY60-61 | 熱100 | 回溯:單詞搜索、分割回文串

前言 中等 √ 繼續回溯&#xff0c;不知咋地感覺這兩題有點難度&#xff0c;是因為隔一天就手感生疏了嗎&#xff1f; 單詞搜索 我的題解 定義方向數組、二維訪問數組。圖搜索&#xff0c;向上下左右每個方向搜索&#xff0c;需要更新的信息&#xff1a;坐標、是否遍歷過、…

超簡單的git學習教程

本博客僅用于記錄學習和使用 前提聲明全部內容全部來自下面廖雪峰網站&#xff0c;如果侵權聯系我刪除 0.前言 相信有不少人被推薦那個游戲學習git&#xff0c;一個不止我一個完全沒學習過的進去后一臉懵&#xff0c;半天都通不過一關然后就放棄了&#xff0c;我個人覺得那個…

【每日八股】復習 MySQL Day1:事務

文章目錄 復習 MySQL Day1&#xff1a;事務MySQL 事務的四大特性&#xff1f;并發事務會出現什么問題&#xff1f;MySQL 事務的隔離級別&#xff1f;不同事務隔離級別下會發生什么問題&#xff1f;MVCC 的實現原理&#xff1f;核心數據結構版本鏈構建示例可見性判斷算法MVCC 可…

在極狐GitLab 身份驗證中如何使用 OIDC?

極狐GitLab 是 GitLab 在中國的發行版&#xff0c;關于中文參考文檔和資料有&#xff1a; 極狐GitLab 中文文檔極狐GitLab 中文論壇極狐GitLab 官網 使用 OpenID Connect 作為認證提供者 (BASIC SELF) 您可以使用極狐GitLab 作為客戶端應用程序&#xff0c;與 OpenID Connec…

PHP騰訊云人臉核身生成 SDK 接口調用步驟使用簽名

參考騰訊云官方文檔&#xff1a; 人臉核身 生成 SDK 接口調用步驟使用簽名_騰訊云 前提條件&#xff1a;成功獲取NonceTicket。 獲取參考文檔&#xff1a; PHP騰訊云人臉核身獲取NONCE ticket-CSDN博客 function getTxFaceSign(){$appId ;$userId ;$version 1.0.0;$tic…

每日一題算法——鏈表相交

鏈表相交 力扣題目鏈接 暴力解法:飄過 class Solution { public:ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {ListNode * cur headA;while(cur ! NULL){ListNode* curb headB;while(curb ! NULL){if(curbcur){return cur;}curb curb->next;}cu…

詳解Windows(一)——系統盤下目錄及文件詳解

引言 你是否曾經好奇過電腦里那些神秘的文件夾都是干什么用的&#xff1f;為什么有些文件是.exe而有些是.dll&#xff1f;不同的圖片格式.jpg和.png到底有什么區別&#xff1f;如果你對這些問題感到困惑&#xff0c;這篇文章就是為你準備的。今天&#xff0c;我們將以通俗易懂…

大模型賦能工業制造革新:10個顯效可落地的應用場景

在工業4.0的洶涌浪潮中&#xff0c;制造業正面臨著前所未有的轉型挑戰。傳統制造模式在效率、成本、質量等方面逐漸難以滿足市場需求&#xff0c;企業急需借助新技術實現數字化轉型&#xff0c;以提升自身競爭力。在此背景下&#xff0c;基于先進的數據分析技術、大模型、知識圖…

AI語音助手 React 組件使用js-audio-recorder實現,將獲取到的語音轉成base64發送給后端,后端接口返回文本內容

頁面效果&#xff1a; js代碼&#xff1a; import React, { useState, useRef, useEffect } from react; import { Layout, List, Input, Button, Avatar, Space, Typography, message } from antd; import { SendOutlined, UserOutlined, RobotOutlined, AudioOutlined, Stop…

pycharm無法識別到本地python的conda環境解決方法

問題一 現象描述&#xff1a; 本地已經安裝了conda&#xff0c;但在pycharm中選擇conda環境卻識別不到&#xff0c; 解決方法&#xff1a;手動輸入conda path&#xff0c;點擊R eload environments基本就能修復&#xff0c;比如我的路徑如下 /Users/test/conda/miniconda3/b…

PDK中technology file從tf格式轉換為lef格式

在數字后端流程中需要導入technology file工藝文件&#xff0c;一般傳統的PDK中都提供.tf形式&#xff0c;能夠在Synopsys ICC中進行導入。但是由于Cadence Innovus不斷地完善&#xff0c;更多的工程采用了其進行數字后端設計。不過Cadence Innovus導入的是.lef格式的工藝文件&…