Zookeeper 可观测性最佳实践(zookeeper能够确保)
yuyutoo 2025-04-30 21:00 25 浏览 0 评论
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 "us"), "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 = false
service = "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 集群性能、识别性能瓶颈、及时排查故障至关重要。它们帮助我们优化会话管理策略,确保集群状态一致性,进行有效的资源规划,并为分布式协调任务提供支持。这样的监控不仅增强了用户体验,也显著提高了系统的可靠性和稳定性。
相关推荐
- 《保卫萝卜2》安卓版大更新 壕礼助阵世界杯
-
《保卫萝卜2:极地冒险》本周不仅迎来了安卓版本的重大更新,同时将于7月4日本周五,带来“保卫萝卜2”安卓版本世界杯主题活动的火热开启,游戏更新与活动两不误。一定有玩家会问,激萌塔防到底进行了哪些更新?...
- 儿童手工折纸:胡萝卜,和孩子一起边玩边学carrot
-
1、准备两张正方形纸,一橙一绿,对折出折痕。2、橙色沿其中一条对角线如图折两三角形。3、把上面三角折平,如图。4、绿色纸折成三角形。5、再折成更小的三角形。6、再折三分之一如图。7、打开折纸,压平中间...
- 《饥荒》食物代码有哪些(饥荒最新版代码总汇食物篇)
-
饥荒游戏中,玩家们需要获取各种素材与食物,进行生存。玩家们在游戏中,进入游戏后按“~”键调出控制台使用代码,可以直接获得素材。比如胡萝卜的代码是carrot,玉米的代码是corn,南瓜的代码是pump...
- Skyscanner:帮你找到最便宜机票 订票不求人
-
你喜欢旅行吗?在合适的时间、合适的目的地,来一场说走就走的旅行?机票就是关键!Skyscanner这款免费的手机应用,在几秒钟内比较全球600多家航空公司的航班安排、价格和时刻表,帮你节省金钱和时间。...
- 小猪佩奇第二季50(小猪佩奇第二季英文版免费观看)
-
Sleepover过夜Itisnighttime.现在是晚上。...
- 我在民政局工作的那些事儿(二)(我在民政局上班)
-
时间到了1997年的秋天,经过一年多的学习和实践,我在处理结婚和离婚的事情更加的娴熟,也获得了领导的器重,所以我在处理平时的工作时也能得心应手。这一天我正在离婚处和同事闲聊,因为离婚处几天也遇不到人,...
- 夏天来了就你还没瘦?教你不节食13天瘦10斤的哥本哈根减肥法……
-
好看的人都关注江苏气象啦夏天很快就要来了你是否和苏苏一样身上的肉肉还没做好准备?真是一个悲伤的故事……下面这个哥本哈根减肥法苏苏的同事亲测有效不节食不运动不反弹大家快来一起试试看吧~DAY1...
- Pursuing global modernization for peaceful development, mutually beneficial cooperation, prosperity for all
-
AlocalworkeroperatesequipmentintheChina-EgyptTEDASuezEconomicandTradeCooperationZonei...
- Centuries-old tea road regains glory as Belt and Road cooperation deepens
-
FUZHOU/ST.PETERSBURG,Oct.2(Xinhua)--NestledinthepicturesqueWuyiMountainsinsoutheastChi...
- Ftrace function graph简介(flat function)
-
引言由于android开发的需要与systrace的普及,现在大家在进行性能与功耗分析时候,经常会用到systrace跟pefetto.而systrace就是基于内核的eventtracing来实...
- JAVA历史版本(java各版本)
-
JAVA发展1.1996年1月23日JDK1.0Java虚拟机SunClassicVM,Applet,AWT2.1997年2月19日JDK1.1JAR文件格式,JDBC,JavaBea...
- java 进化史1(java的进阶之路)
-
java从1996年1月第一个版本诞生,到2022年3月最新的java18,已经经历了27年,整整18个大的版本。很久之前有人就说java要被淘汰,但是java活到现在依然坚挺,不知道java还能活...
- 学习java第二天(java学完后能做什么)
-
#java知识#...
你 发表评论:
欢迎- 一周热门
- 最近发表
-
- 《保卫萝卜2》安卓版大更新 壕礼助阵世界杯
- 儿童手工折纸:胡萝卜,和孩子一起边玩边学carrot
- 《饥荒》食物代码有哪些(饥荒最新版代码总汇食物篇)
- Skyscanner:帮你找到最便宜机票 订票不求人
- 小猪佩奇第二季50(小猪佩奇第二季英文版免费观看)
- 我在民政局工作的那些事儿(二)(我在民政局上班)
- 夏天来了就你还没瘦?教你不节食13天瘦10斤的哥本哈根减肥法……
- Pursuing global modernization for peaceful development, mutually beneficial cooperation, prosperity for all
- Centuries-old tea road regains glory as Belt and Road cooperation deepens
- 15 THE NUTCRACKERS OF NUTCRACKER LODGE (CONTINUED)胡桃夹子小屋里的胡桃夹子(续篇)
- 标签列表
-
- mybatis plus (70)
- scheduledtask (71)
- css滚动条 (60)
- java学生成绩管理系统 (59)
- 结构体数组 (69)
- databasemetadata (64)
- javastatic (68)
- jsp实用教程 (53)
- fontawesome (57)
- widget开发 (57)
- vb net教程 (62)
- hibernate 教程 (63)
- case语句 (57)
- svn连接 (74)
- directoryindex (69)
- session timeout (58)
- textbox换行 (67)
- extension_dir (64)
- linearlayout (58)
- vba高级教程 (75)
- iframe用法 (58)
- sqlparameter (59)
- trim函数 (59)
- flex布局 (63)
- contextloaderlistener (56)