如何更好地使用Kafka? - 运行监控篇

要确保Kafka在使用过程中的稳定性,需要从kafka在业务中的使用周期进行依次保障。主要可以分为:事先预防(通过规范的使用、开发,预防问题产生)、运行时监控(保障集群稳定,出问题能及时发现)、故障时解决(有完整的应急预案)这三阶段。

另外的篇幅请参考

如何更好地使用Kafka? - 事先预防篇-CSDN博客

如何更好地使用Kafka? - 故障时解决-CSDN博客

运行时监控主要包含集群稳定性配置与Kafka监控的最佳实践,旨在及时发现Kafka在运行时产生的相关问题与异常。

1. 集群稳定性监控

1.1 kafka集群配置

合理进行kafka实例配,主要关注这几个数据:

  1. 磁盘容量和峰值带宽

  2. 消息保留时长;

  3. 动态保留策略;

A. 磁盘容量和峰值带宽

可根据实际业务的消息内容大小、发送消息qps等进行预估,可以尽量设置大点;具体数值可根据实例监控查看,如果短时间内磁盘使用百分比就达到较高值,则需扩容。

峰值带宽=最大生产流量*副本数

B. 消息保留时长

消息即使被消费,也会持久化到磁盘存储保留时长的时间。该设置会占用磁盘空间,如果每天消息量很大的话,可适当缩短保留时间。

C. 动态保留策略

推荐开启动态保留设置。当磁盘容量达到阈值,则删除最早的消息,最多删除到保底时长范围外的消息(淘汰策略),可以很大程度避免磁盘被打满的情况。

但有调整时不会主动通知,但我们可以通过配置告警感知磁盘容量的变化。

1.2 Kafka集群配置

  • 设置日志配置参数以使日志易于管理;

  • 了解 kafka 的(低)硬件需求;

  • 充分利用 Apache ZooKeeper;

  • 以正确的方式设置复制和冗余;

  • 注意主题配置;

  • 使用并行处理;

  • 带着安全性思维配置和隔离 Kafka;

  • 通过提高限制避免停机;

  • 保持低网络延迟;

  • 利用有效的监控和警报。

1.3 资源隔离

A. Broker级别物理隔离

如果不同业务线的 topic 会共享一块磁盘,若某个consumer 出现问题而导致消费产生 lag,进而导致频繁读盘,会影响在同一块磁盘的其他业务线 TP 的写入。

解决:Broker级别物理隔离:创建Topic、迁移Topic、宕机恢复流程

B. RPC队列隔离

Kafka RPC 队列缺少隔离,一旦某个 topic 处理慢,会导致所有请求 hang 住。

解决:需要按照控制流、数据流分离,且数据流要能够按照 topic 做隔离。

  1. 将 call 队列按照拆解成多个,并且为每个 call 队列都分配一个线程池。

  2. 一个队列单独处理 controller 请求的队列(隔离控制流),其余多个队列按照 topic 做 hash 的分散开(数据流之间隔离)。

如果一个 topic 出现问题,则只会阻塞其中的一个 RPC 处理线程池,以及 call 队列,可以保障其他的处理链路是畅通的。

1.4 智能限速

整个限速逻辑实现在 RPC 工作线程处理的末端,一旦 RPC 处理完毕,则通过限速控制模块进行限速检测。

  1. 配置等待时间,之后放入到 delayed queue 中,否则放到 response queue 中。

  2. 放入到 delayed queue 中的请求,等待时间达到后,会被 delayed 线程放入到 response queue 中。

  3. 最终在 response queue 中的请求被返回给 consumer。

2. Kafka监控

  • 白盒监控:服务或系统自身指标,如CPU 负载、堆栈信息、连接数等;

  • 黑盒监控:一般是通过模拟外部用户对其可见的系统功能进行监控的一种监控方式,相关指标如消息的延迟、错误率和重复率等性能和可用性指标。

监控

功能/指标

详情

黑盒监控

操作

主题操作:创建、预览、查看、更新、删除

服务

数据写入、是否消费成功

系统

CPU 负载、堆栈信息、连接数等

白盒监控

容量

总存储空间、已用存储空间、最大分区使用、集群资源、分区数量、主题数量;

流量

消息写入、消费速率、集群网络进出;

延迟

消息写入、消费耗时(平均值、99分位、最大耗时)、主题消费延迟量(offset lag)

错误

集群异常节点数量、消息写入拒绝量、消息消费失败量、依赖zookeeper的相关错误

2.1 kafka告警、配置和预案

针对kafka,需要配置告警(此类告警一般为消息积压、可用性、集群/机器健康性等检查)。

A. 指标

如:实例健康状态、节点数量、健康节点数量、问题分区数、生产消息数、消费请求数、jvm内存利用率、平均生产响应时间、分区消费偏移量等。

具体指标可以参考:消息队列 CKafka 版 查询高级监控(专业版)-操作指南-文档中心-腾讯云

B. 配置

配置文档:消息队列 CKafka 版 配置告警-操作指南-文档中心-腾讯云

选择监控实例,配置告警内容和阈值。

一般会对当前服务自身的kafka集群做告警配置,但是如果是依赖自身消息的下游服务出现消费问题,我们是感知不到了;而且针对消费端服务不共用同一个集群的情况,出现消息重复发送的问题,服务自身是很难发现的。

C. 预案

在业务上线前,最好梳理下自身服务所涉及的topic消息(上游生产端和下游消费端),并细化告警配置,如果出现上游kafka异常或者下游kafka消息堆积可以及时感知。特别需要把可能有瞬时大量消息的场景(如批量数据导入、定时全量数据同步等)做一定的告警或者预案,避免服务不可用或者影响正常业务消息。

2.2 自建告警平台

通过自建告警平台配置对服务自身的异常告警,其中包括对框架在使用kafka组件时抛出与kafka消费逻辑过程中抛出的业务异常。

其中,可能需要异常升级的情况(由于)单独做下处理(针对spring kafka):

  1. 自定义kafka异常处理器:实现KafkaListenerErrorHandler接口的方法,注册自定义异常监听器,区分业务异常并抛出;

  2. 消费Kafka消息时,将@KafkaListener的errorHandler参数设置为定义的Kafka异常处理器;

  3. 此后,指定的业务异常会被抛出,而不会被封装成Spring kafka的框架异常,导致不能清晰地了解具体异常信息。

2.3 Kafka监控组件

目前业界并没有公认的解决方案,各家都有各自的监控之道。

  • Kafka Manager:应该算是最有名的专属 Kafka 监控框架了,是独立的监控系统。

  • Kafka Monitor:LinkedIn 开源的免费框架,支持对集群进行系统测试,并实时监控测试结果。

  • CruiseControl:也是 LinkedIn 公司开源的监控框架,用于实时监测资源使用率,以及提供常用运维操作等。无 UI 界面,只提供 REST API。

  • JMX 监控:由于 Kafka 提供的监控指标都是基于 JMX 的,因此,市面上任何能够集成 JMX 的框架都可以使用,比如 Zabbix 和 Prometheus。已有大数据平台自己的监控体系:像 Cloudera 提供的 CDH 这类大数据平台,天然就提供 Kafka 监控方案。

  • JMXTool:社区提供的命令行工具,能够实时监控 JMX 指标。答上这一条,属于绝对的加分项,因为知道的人很少,而且会给人一种你对 Kafka 工具非常熟悉的感觉。如果你暂时不了解它的用法,可以在命令行以无参数方式执行一下kafka-run-class.sh kafka.tools.JmxTool,学习下它的用法。

2.4 Kafka Monitor

其中,Kafka Monitor通过模拟客户端行为,生产和消费数据并采集消息的延迟、错误率和重复率等性能和可用性指标,可以很好地发现下游的消息消费情况进而可以动态地调整消息的发送。(使用过程中需注意对样本覆盖率、功能覆盖率、流量、数据隔离、时延的控制)

Kakfa Monitor 优势:

  1. 通过为每个 Partition 启动单独的生产任务,确保监控覆盖所有 Partition。

  2. 在生产的消息中包含了时间戳、序列号,Kafka Monitor 可以依据这些数据对消息的延迟、丢失率和重复率进行统计。

  3. 通过设定消息生成的频率,来达到控制流量的目的。

  4. 生产的消息在序列化时指定为一个可配置的大小(验证对不同大小数据的处理能力、相同消息大小的性能比较)

  5. 通过设定单独的 Topic 和 Producer ID 来操作 Kafka 集群,可避免污染线上数据,做到一定程度上的数据隔离。

基于Kafka Monitor的设计思想,可以针对业务特点引入对消息的延迟、错误率和重复率等性能的监控告警指标。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/3017758.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

技术分享-上海泗博MPI转以太网模块MPI-131实现Node-RED直接访问西门子PLC数据

上海泗博自动化MPI-131是一款用于西门子S7系列PLC(包括S7-200、S7-300、S7-400)以及西门子数控机床(如840D、840DSL等)的以太网通讯模块,无需编程,即插即用,支持通过模块上下载PLC程序和数据监控…

【Linux入门】基础开发工具

本篇博客整理了Linux(centOS版本)中基础开发工具的用途和用法,旨在透过开发工具的使用,帮助读者更好地理解可执行程序的编写、编译、运行等。 目录 一、软件包管理器 yum 1.软件的下载与安装 2.Linux应用商店:yum …

【busybox记录】【shell指令】tr

目录 内容来源: 【GUN】【tr】指令介绍 【busybox】【tr】指令介绍 【linux】【tr】指令介绍 使用示例: 转换字符 - 默认 转换字符 - 不翻译指定字符数组 此指令目前接触少,用得少,把精力放到其他常用指令上 常用组合指令…

flutter安卓项目生成MD5、sha1、公钥等

一:MD5、SHA1等生成方式 工具:Android Studio 1. 打开flutter项目下的Android目录 2. 创建signingReport运行配置项 3. build apk: 导航栏->build->Generate Signed App Bundle / APK... 4. 填写存放路径,同时创建文件xx…

基于CLAHE算法的图像增强及评价

摘要: 本研究旨在探讨对比度限制自适应直方图均衡化(CLAHE)算法在数字图像处理中的应用。CLAHE算法通过在局部区域内进行直方图均衡化,有效地增强了图像的对比度,并在保持图像细节的同时避免了过度增强的问题。本文通过…

压力测试-JMeter常用插件、服务器硬件监控

1.写在前面 在前一篇文章中,我们已经对jmeter有了一个入门的学习。 掌握了JMeter安装、入门、结果分析等内容,详情可查看这里:压力测试-JMeter安装、入门、结果分析 对于jmeter默认的插件,往往不太够,例如&#xff…

【自动驾驶|毫米波雷达】初识毫米波雷达射频前端硬件

第一次更新:2024/5/4 目录 整体概述 混频器(MIXER) 低通滤波器(LPF:Low-Pass filter) 数模转换器(ADC:Analog to Digital Converter) 毫米波雷达功能框图 整体概述 完…

Spring Data JPA自定义Id生成策略、复合主键配置、Auditing使用

前言 在Spring Data JPA系列的第一篇文章 SpringBoot集成JPA及基本使用-CSDN博客 中讲解了实体类的Id生成策略可以通过GeneratedValue注解进行配置,该注解的strategy为GenerationType类型,GenerationType为枚举类,支持四种Id的生成策略&…

java-springboot项目添加swagger2/Knife4j,附注解

文章目录 添加依赖config工作包中新增SwaggerConfig报错注解 环境&#xff1a; jdk1.8 java8 springboot2.6.13 swagger2.9.2 添加依赖 pom.xml <!-- 添加swagger2--><dependency><groupId>io.springfox</groupId><artifactId>springfo…

ChatGPT-Next-Web漏洞利用分析(CVE-2023-49785)

1. 漏洞介绍 ​ 日常网上冲浪&#xff0c;突然粗看以为是有关Chat-GPT的CVE披露出来了&#xff0c;但是仔细一看原来是ChatGPT-Next-Web的漏洞。漏洞描述大致如下&#xff1a;&#xff08;如果有自己搭建了还没更新的速速修复升级防止被人利用&#xff0c;2.11.3已经出来了&am…

代码训练LeetCode(17)存在重复元素

代码训练(17)LeetCode之存在重复元素 Author: Once Day Date: 2024年5月7日 漫漫长路&#xff0c;才刚刚开始… 全系列文章可参考专栏: 十年代码训练_Once-Day的博客-CSDN博客 参考文章: 219. 存在重复元素 II - 力扣&#xff08;LeetCode&#xff09;力扣 (LeetCode) 全球…

【ElasticSearch】IK分词器中停用词问题

问题描述 在ES中进行部分关键词搜索时&#xff0c;搜索无结果&#xff0c;如搜索 【IT】 环境描述 中文分词插件 这里使用的是 analysis-ik 分词调试 POST test_index/_analyze {"text":"IT Manager","analyzer": "ik_max_word"…

Spring Security基础教程:从入门到实战

作者介绍&#xff1a;✌️大厂全栈码农|毕设实战开发&#xff0c;专注于大学生项目实战开发、讲解和毕业答疑辅导。 推荐订阅精彩专栏 &#x1f447;&#x1f3fb; 避免错过下次更新 Springboot项目精选实战案例 更多项目&#xff1a;CSDN主页YAML墨韵 学如逆水行舟&#xff0c…

S型曲线的几种设计(图像对比度调节)

一般来讲&#xff0c;图像调色模块都会提供“曲线”工具&#xff0c;这是一个极其灵活的功能&#xff0c;绝大部分的调色都可以通过该工具实现&#xff0c;但是曲线功能的交互相对而言比较复杂。出于简便性和效率方面的考量&#xff0c;调色模块往往还会提供一些具有很强的功能…

初识C语言——第十四天

指针 总结&#xff1a;指针变量是用来干啥的呢&#xff0c;一是用来存放别人的地址的&#xff0c;指针是有类型的&#xff0c;这个类型是如何写的&#xff1b;二是当我有一天通过*(解引用符&#xff09;找到我所要找的对象&#xff0c;来操作所指向的对象。 #define _CRT_SECUR…

Three.js的几何形状

在创建物体的时候&#xff0c;需要传入两个参数&#xff0c;一个是几何形状【Geometry】&#xff0c;一个是材质【Material】 几何形状主要是存储一个物体的顶点信息&#xff0c;在Three中可以通过指定一些特征来创建几何形状&#xff0c;比如使用半径来创建一个球体。 立方体…

VS2022快捷键修改

VS2022快捷键修改 VS2022快捷键修改 VS2022快捷键修改

芸众商城电商专业版400+插件源码+搭建教程

介绍&#xff1a; 芸众商城社交电商系统SAAS平台前端基于vue开发&#xff0c;后端基于研发积分商城系统源码 php&#xff0c;本文安装芸众商城全插件&#xff08;400多个&#xff09;商业版平台源码&#xff0c;可同时支持多端口部署运行&#xff1b;使用宝塔面板一键部署的形…

2022 年全国职业院校技能大赛高职组云计算赛项试卷(私有云)

#需要资源&#xff08;软件包及镜像&#xff09;或有问题的&#xff0c;可私聊博主&#xff01;&#xff01;&#xff01; #需要资源&#xff08;软件包及镜像&#xff09;或有问题的&#xff0c;可私聊博主&#xff01;&#xff01;&#xff01; #需要资源&#xff08;软件包…

docker部署常用工具

1.创建mysql docker run -p 3306:3306 --name mysql -v /home/mysql/conf:/etc/mysql/mysql.conf.d -v /home/mysql/log:/var/log/ -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD2022qwer -d mysql:5.7 而后再执行升级&#xff1a; docker update --restar…