监控与可观测 · 进阶

Kafka 集群监控

围绕 Kafka broker、KRaft 控制面与消费积压搭建受限指标采集,形成分级告警和可复核的业务基线。

Kafka告警治理监控告警高可用

场景目标

建立覆盖全部计划 broker 和 controller 的看板与规则;在测试对象上验证复制、控制面和消费积压信号,记录告警延迟及采集开销,并确认仅授权采集端能够访问指标端口。

环境要求

参考 Kafka 4.1 KRaft、与目标 JVM 匹配的 JMX Exporter 及现有 Prometheus/Grafana;其他版本先核对命令和 MBean。需要只读 Kafka 描述权限、受控主机发布权限、监控配置权限和获准测试主题/消费组。每台 JVM 预留采集 CPU/内存,Prometheus 按实际时间序列、间隔和保留周期核算容量。安排 150 分钟配置与试点窗口;Java agent 首次挂载通常涉及进程重启,滚动发布须另行覆盖副本和 controller 多数检查,完整业务基线至少观察一个代表性周期。保留启动参数和监控配置的前一版本。

参考架构 · 非实时拓扑

Kafka KRaft 指标与消费积压观测架构

将 broker 数据面、KRaft 控制面和消费组积压分层取证,经受限 JMX 指标链路形成看板;独立查询补齐积压来源与监控盲区。

  • 数据 / 请求
  • 控制 / 管理
  • 观测 / 查询

点击组件,在图下方查看职责;连线编号对应流向解读。小屏可横向滚动,或直接展开文字说明。

Kafka KRaft 指标与消费积压观测架构:组件关系图将 broker 数据面、KRaft 控制面和消费组积压分层取证,经受限 JMX 指标链路形成看板;独立查询补齐积压来源与监控盲区。 KRaft Controller → Kafka Broker:元数据控制;Kafka Broker → JMX Exporter:Broker MBean;KRaft Controller → JMX Exporter:控制面 MBean;JMX Exporter → Prometheus:指标响应;Prometheus → Grafana:查询结果;Kafka Broker → 消费组只读查询:消费位点证据;消费组只读查询 → 值班核验:积压独立核对;Grafana → 值班核验:看板与异常线索。箭头说明见下方流向解读。
Kafka 4.1 KRaft 逻辑参考图;监控端点、角色部署和消费组采集仍待目标环境验证,不表示已有全量监控。

Kafka Broker

服务组件

承载消息分区与复制,暴露对应版本和角色的 MBean;不把所有消费组积压假定为 broker JMX 固有指标。

查看关联工具
全部组件职责 7 个组件
Kafka Broker
承载消息分区与复制,暴露对应版本和角色的 MBean;不把所有消费组积压假定为 broker JMX 固有指标。工具介绍 Kafka Broker
JMX Exporter
按版本映射选定 MBean 到受限 HTTP 指标端点,避免为接入监控开放不安全的远程 JMX。工具介绍 JMX Exporter
Prometheus
限制抓取频率和高基数标签,分别识别端点失败、关键指标缺失与真实业务异常。工具介绍 Prometheus
KRaft Controller
管理元数据与集群控制决策;独立或混合角色由现场确认,broker 数不等于 controller 数。工具介绍 KRaft Controller
Grafana
从已核验数据源展示请求、复制和控制面状态,空数据与正常零值分别提示。工具介绍 Grafana
消费组只读查询
按批准范围读取 offset 与 lag;无提交位点等不可计算状态保留为未知,独立采集服务未验证前不画成已接入。
值班核验
交叉核对查询、看板及既有通知链路,记录模拟规则测试与真实故障演练的区别。
流向解读 8 条连接
  1. 1

    KRaft Controller Kafka Broker

    控制 / 管理 · 元数据控制

    表达 KRaft 对 broker 的控制关系,不是业务消息传输路径。

  2. 2

    Kafka Broker JMX Exporter

    观测 / 查询 · Broker MBean

    从 broker 进程读取经筛选的 JMX 指标。

  3. 3

    KRaft Controller JMX Exporter

    观测 / 查询 · 控制面 MBean

    图中合并表达各进程的 agent,不表示跨进程共享一个 Java agent。

  4. 4

    JMX Exporter Prometheus

    观测 / 查询 · 指标响应

    Prometheus 主动向受限端点发起抓取,exporter 返回指标;箭头表示指标响应方向。

  5. 5

    Prometheus Grafana

    观测 / 查询 · 查询结果

    看板查询已验证规则与指标,保留实例和角色标签。

  6. 6

    Kafka Broker 消费组只读查询

    观测 / 查询 · 消费位点证据

    通过受限消费组查询取得指定对象的状态,不重置 offset。

  7. 7

    消费组只读查询 值班核验

    观测 / 查询 · 积压独立核对

    人工对照或未来经验证采集均需说明来源,本图不假设自动接入。

  8. 8

    Grafana 值班核验

    观测 / 查询 · 看板与异常线索

    由值班人结合测试时间线核验告警触发和恢复,不以看板存在代表通知已送达。

从架构到实施

  1. 01

    先确定哪些角色需要被看见

    读取集群身份、quorum 和指定主题/消费组基线,分开 broker、controller 与积压证据。

  2. 02

    再建立可控的指标管道

    小批试点 agent、抓取与看板,按实际 MBean 核对规则,限制端点访问和采集开销。

  3. 03

    用测试信号验证观测闭环

    在批准的测试对象中核对积压与恢复,对控制面使用规则测试;扩展前验证每批的采集质量。

故障域与操作边界

监控接入不能损害多数派

需要重启挂载 agent 时遵守滚动窗口、ISR 和 controller 多数约束,不并行重启整个集群。

消费积压有独立来源

broker JMX、客户端指标与消费组查询覆盖范围不同;未知位点或缺失采集不能填成零。

指标端口同样需要保护

只允许批准来源,按需要启用认证与加密;不把远程 JMX 默认配置当成生产安全配置。

架构依据与版本核对 2 篇官方资料

图解是本站基于官方资料整理的逻辑参考;实施前仍需核对实际部署版本、组件支持范围与变更审批。

方案说明

架构与适用范围

以 Kafka 4.1 KRaft 集群为参考,JMX Exporter Java agent 暴露 broker 与 controller 指标,Prometheus 采集并执行规则,Grafana 展示复制、吞吐、请求与控制面状态。消费组积压需从有授权的消费组查询或经过验证的独立采集链路补充,不能假定 broker JMX 自动包含所有消费组积压。

不适用边界

该流程尚需在目标环境验证,不覆盖 ZooKeeper 向 KRaft 的迁移,也不在部署监控时改变分区数或消息保留策略。指标名与 MBean 会随版本、角色和 exporter 映射变化,不能直接照搬其他版本看板。远程 JMX 默认安全配置不能当作生产配置;优先在进程内采集,HTTP 指标端口也须限制来源并按需加密认证。

全局验收

全部计划 broker/controller 端点持续采集,控制面与副本异常可定位,测试消费组积压可独立核对。测试规则能触发和恢复通知,采集资源增量在约定预算内,且未经授权的网络不能读取指标端点。

配套知识

官方参考

工具编排

4 个关联工具
  1. Apache Kafka运行对象与状态核对提供 broker、KRaft 元数据 quorum、分区及消费组的只读运行证据。
  2. JMX ExporterJVM 指标暴露以受限 Java agent 端口导出经筛选的 JMX 指标,避免开放未加固远程 JMX。
  3. Prometheus采集与规则按容量预算采集指标并执行持续异常告警规则。
  4. Grafana分层看板分开呈现业务吞吐、分区复制和 KRaft 控制面,提供值班定位入口。

实施步骤

共 7 步
  1. 01

    盘点角色并读取控制面基线

    登记集群 ID、Kafka 与 JVM 版本、broker/controller 角色、监听地址和测试对象,明确独立或混合角色部署。使用仅含必要权限的客户端配置读取元数据 quorum 状态,文件路径替换为已批准配置且不输出凭据。记录 leader、voter 集合和当前滞后,再对照资产清单确认采集范围,不将 broker 数量当作控制面成员数量。

    bin/kafka-metadata-quorum.sh --bootstrap-server kafka.example.internal:9092 --command-config /secure/kafka-readonly.properties describe --status
    验证标准

    角色和成员清单能对应到真实集群,quorum 状态查询成功且没有暴露凭据。控制面 leader、voter 及基线滞后均有记录,未知角色或异常成员已有负责人处理,试点节点选择有明确依据。

    停止与回退

    只读盘点不改变 Kafka 状态。若凭据权限、版本或成员异常,暂停 exporter 发布并修正清单;保留现有监控,不能通过临时授予管理权限或调整 controller 成员来完成本次监控接入。

    返回步骤起点
  2. 02

    核对复制与消费组基线

    使用同一只读身份描述批准的主题和消费组,记录副本、ISR、分区分布及可计算的积压。对刚创建、无已提交 offset 或持续变动的消费组说明读数限制,避免把未知状态标为零积压。示例名称需替换为授权的测试对象;生产大集群采用明确对象范围和合理频率,避免高频全量描述引入控制面负载。

    bin/kafka-consumer-groups.sh --bootstrap-server kafka.example.internal:9092 --command-config /secure/kafka-readonly.properties --describe --group approved-test-group
    验证标准

    关键主题副本与 ISR 有基线,测试消费组分区 offset 与积压可解释。查询权限仅覆盖批准对象,异常或缺失值不会被当作正常值;业务负责人已给出积压增长和消费停滞的初始判断阈值。

    停止与回退

    本步骤不更改主题或消费位点。若查询明显影响集群则降低频率、缩小范围并记录限制;发现既有复制异常时先处理运行问题,不能重置消费位点或删建主题来获得好看的监控基线。

    返回步骤起点
  3. 03

    试点受限的指标暴露端口

    选择非关键 broker 验证 JMX Exporter Java agent 与 JVM 的兼容性,筛选需要的 MBean 并保存原启动参数。先确定指标端口绑定地址、防火墙来源和 TLS/认证方式,禁止将未认证端口暴露到公共网络;已有远程 JMX 也需独立加固。若挂载 agent 需重启,按滚动窗口逐节点处理,重启前确认 ISR 与 controller 多数仍满足要求。

    验证标准

    试点进程正常启动且业务请求无明显退化,授权采集端能读取指标,未授权来源被拒绝。CPU、堆内存和请求时延增量在预算内,控制面多数和分区 ISR 未因监控接入而持续下降。

    停止与回退

    若 JVM 启动异常或采集超预算,恢复保存的原启动参数并按同一滚动约束重启试点节点,关闭新增指标端口。等待副本和控制面状态恢复到基线后再继续,不能并行重启剩余节点尝试碰运气。

    返回步骤起点
  4. 04

    控制采集频率和时间序列数量

    将验证后的端点分批纳入 Prometheus,为集群、角色和实例设置稳定标签,核对 exporter 输出与规则使用的指标名。限制主题、客户端和其他高基数字段,按实际活跃时间序列测算存储及保留预算。为抓取失败、过慢和缺失指标分别设计检查,避免采集端点可达但关键指标未暴露时仍显示集群正常。

    验证标准

    计划端点持续抓取成功,关键指标有更新且标签能区分角色。活跃序列数、抓取耗时和存储增长在预算内,缺失指标检查可发现规则映射错误;新增采集不造成现有监控任务明显延迟。

    停止与回退

    时间序列或抓取开销超出预算时撤回本批采集配置,恢复此前的指标筛选与频率。保留试点数据用于比较,不立即清空整个时序库;继续使用已有监控,并调整范围后重新开展小批量验证。

    返回步骤起点
  5. 05

    建立分层看板与告警规则

    将吞吐与请求时延、离线分区及副本不足、磁盘与 JVM、KRaft leader 和元数据复制状态分开展示。消费积压接入独立且有授权的来源,并对照只读查询抽样核验。告警同时考虑持续时间、业务时段和恢复条件,附上对象、影响与定位入口;为数据缺失建立单独提示,不让空白图表被误认为无故障。

    验证标准

    值班人员能从告警定位到集群、角色及受影响对象,看板值与原始查询相符。每条规则有阈值依据、持续窗口和负责人,消费积压来源清楚,缺失值与正常零值在页面上可以区分。

    停止与回退

    如果规则映射或阈值造成误报,停用对应的新规则并恢复已验证规则版本,保留已有通知链路。修正看板时不隐藏真实异常,将未能可靠解释的指标标注为待验证并补齐来源核对。

    返回步骤起点
  6. 06

    验证测试信号与告警闭环

    在批准的测试主题和消费组中产生可控积压并恢复消费,核对查询、采集、看板与通知的时间线。使用规则测试或隔离的测试信号检查复制和控制面告警,避免为验证监控直接中断生产 quorum。记录通知延迟、聚合效果和恢复提示,由值班人员依据告警链接完成一次定位,确认规则不是只有创建成功的记录。

    验证标准

    测试积压与恢复可在各层一致观察,通知送达正确接收人且恢复信息完整。规则测试覆盖复制和控制面条件,记录能说明哪些项目使用模拟信号,未执行的真实故障演练不标记为已完成。

    停止与回退

    测试影响超过预期时立即停止新增测试负载,恢复测试消费并等待积压消退;不要重置生产 offset 作为回退。撤回本次错误规则或通知配置,保留时间线和测试记录,修正后再验证闭环。

    返回步骤起点
  7. 07

    扩展覆盖并完成运行交接

    依据试点结果逐批覆盖其余 broker 与 controller,每批确认采集负载、ISR 和 quorum 状态后再推进。观察一个代表性业务周期,修正阈值并记录容量增长,将证书更新、exporter 版本、指标映射和看板负责人纳入维护清单。交接时明确消费组监测范围及盲区,保留尚未验证的故障项,安排后续验证窗口。

    验证标准

    全部计划端点覆盖完成,指标访问限制仍有效,业务周期内采集和存储开销符合预算。值班清单包含维护负责人、规则版本、凭据轮换及恢复入口,剩余监控盲区有明确记录和跟进期限。

    停止与回退

    扩展期间出现异常就停止下一批,按保存的配置逐批撤回受影响新增接入,保持已验证节点的监控。若业务观察未通过则延后验收,恢复稳定规则并记录缺口,不能用覆盖数量替代质量确认。

    返回步骤起点

DOUYA OPS ECOSYSTEM

体验豆芽自研工具与场景能力

部分场景提供体验环境,用于功能验证、测试和技术交流。