文档

如何使用Prometheus监控Kafka

更新时间:

本文介绍如何使用Prometheus监控阿里云kafka及自建Kafka。

自建Prometheus观测Kafka的痛点

使用自建Prometheus观测Kafka,可能面临的典型问题有以下几点:

  1. 由于安全、组织管理等因素,您的业务通常部署在多个相互隔离的VPC,因此这需要您在多个VPC内都重复、独立部署Prometheus,导致部署和运维成本较高。

  2. 每套完整的自建监控系统都需要安装并配置Prometheus、Grafana、AlertManager等,其过程复杂、实施周期长。

  3. 开源Kafka JMX Agent在某些场景下占用CPU高,对自建Kafka业务有一定干扰。

  4. 对于阿里云消息队列Kafka(简称阿里云Kafka),自建Prometheus无法监控到,导致无法实现一站式、全局视角的监控建设。

  5. 对于部署在ECS上的自建Kafka,自建Prometheus缺少与阿里云ECS快速集成的服务发现(ServiceDiscovery)机制,因此无法根据ECS标签来灵活定义抓取Targets。如果自行实现类似功能,则需要您使用Golang语言开发代码调用阿里云ECS POP接口,以集成开源Prometheus代码,然后通过编译打包后部署,这种方式实现门槛高、过程复杂、且版本升级困难。

  6. 常用开源Grafana大盘无法结合Kafka的原理与最佳实践进行深入定制。

  7. 缺少Kafka告警项模板,需要您自行配置告警规则,导致消耗的工作量较大,且技术实现困难。

自建Prometheus与可观测监控 Prometheus 版对比

Kafka监控场景下,自建Prometheus与可观测监控 Prometheus 版的详细对比如下:

对比项

自建Prometheus

可观测监控 Prometheus 版

部署、维护成本

多个VPC内,需要您自购ECS部署Prometheus、Grafana、AlertManager,运维成本高。

可观测监控 Prometheus 版、Grafana及告警中心的一体化、全托管、免运维、开箱即用。

可用性、性能、数据容量

高可用能力不足、性能低、数据容量规模小。

高可用、高性能、大数据容量。

Exporter性能

开源Kafka JMX Agent在某些场景下占用CPU高,对Kafka业务有一定干扰。

可观测监控 Prometheus 版持续对Kafka JMX Agent进行性能优化,增强其性能和稳定性。

服务发现

ECS环境下,通过开源Static_Configs、三方注册中心等方式采集服务发现,使用不便,且维护成本高

除兼容开源SD外,还内置了aliyun_sd_configs,方便您使用ECS标签进行目标ECS匹配,达到与Kubernetes场景的LabelSelector一致体验,极大简化服务发现的配置和维护复杂度。

Grafana大盘

开源Grafana Kafka大盘通常较单一,大多只是直接展示采集的Metric,缺少结合Kafka原理和最佳实践进行深入优化。

提供Kafka专业大盘模板,方便您快速、精准掌握Kafka全链路运行情况,并定位排查问题

告警规则

缺少Kafka告警指标模板,需要用户自行研究、配置告警规则。

根据Kafka监控实践,提供专业、灵活的告警指标模板,您可以白屏化配置各告警规则。

一站式、全局视角

由于可能存在多套Prometheus,而且自建Prometheus无法监控到阿里云Kafka,因此无法实现一站式、全局视角的监控体系。

全托管的可观测监控 Prometheus 版,同时阿里云Kafka默认集成了可观测监控 Prometheus 版,天然实现了一站式、全局视角的监控体系。

使用Prometheus监控阿里云Kafka

阿里云Kafka目前已默认集成了可观测监控 Prometheus 版,主要监控的指标有:

  • 实例、Group、Topic各级的流量指标。

  • Group和Topic的消息堆积指标。

  • 实例磁盘使用率指标。

  • Group的Rebalance指标。

查看阿里云Kafka监控大盘

阿里云Kafka提供了实例、Group和Topic三个监控大盘。通过这三个大盘,您可以及时清晰地掌握Kafka消息的生产和消费情况,并快速定位使用阿里云Kafka过程中遇到的问题。

阿里云Kafka实例监控大盘

  1. 登录云消息队列 Kafka 版控制台,在左侧导航栏,单击实例列表

  2. 单击目标实例名称,在左侧导航栏单击Prometheus监控,可查看阿里云Kafka实例监控大盘。

    ej

阿里云Kafka消费组监控大盘

  1. 登录云消息队列 Kafka 版控制台,在左侧导航栏,单击实例列表

  2. 单击目标实例名称,在左侧导航栏单击Group管理,然后单击目标Group ID超链接,并单击Prometheus监控页签,可查看阿里云Kafka消费组监控大盘。

    ei

阿里云Kafka Topic监控大盘

  1. 登录云消息队列 Kafka 版控制台,在左侧导航栏,单击实例列表

  2. 单击目标实例名称,在左侧导航栏单击Topic管理,然后单击目标Topic名称超链接,并单击Prometheus监控页签,可查看阿里云Kafka Topic监控大盘。

    dl

使用可观测监控 Prometheus 版配置阿里云Kafka告警

  1. 登录Prometheus控制台

  2. 在左侧导航栏单击实例列表,进入可观测监控 Prometheus 版的实例列表页面。

  3. 单击目标Prometheus实例名称,进入集成中心页面。
  4. 单击已安装区域的消息队列Kafka卡片,并在弹出的面板中单击告警页签,查看阿里云Kafka的Prometheus告警。目前可观测监控 Prometheus 版提供实例、Group和Topic相关的关键告警指标,您还可以根据业务需求新增告警规则。创建Prometheus告警规则的具体操作,请参见Prometheus告警规则

    ft

使用Prometheus监控自建Kafka

除了阿里云Kafka外,可观测监控 Prometheus 版同时提供了自建Kafka的监控接入能力,支持容器服务(包含ACK、ASK、注册集群等)和ECS这两个环境类型的Kafka监控,且提供基础和高级两个版本:

  • Kafka(基础版):包括收集Broker数量、Topic分区、消息组Lag等基础指标,Kafka服务端无需您进行任何配置或重启操作。

  • Kafka(高级版):除基础版能力外,通过JMX Agent,可收集生产者、服务端、消费者及其内部各模块的重要指标,实现全链路、一体化的专家级Kafka监控,需要您手动进行JMX Agent注入和进程重启操作。

与阿里云Kafka的监控场景不同,自建Kafka时,您不仅需要关注使用Kafka的例行指标外,还需要关注运维Kafka的内部指标。因此需要深入抓取Kafka 生产者、服务端、消费者及其内部各模块的重要指标,以便分析和排查Kafka本身各环节的可能问题,这里推荐您使用高级版,以便全面掌握自建Kafka的运行状态。

使用Prometheus监控自建Kafka(基础版)

部署自建Kafka的基础监控

  1. 登录ARMS控制台

  2. 在左侧导航栏单击接入中心,然后在组件应用区域单击Kafka(基础版)卡片的添加,然后在弹出的页面按照如下步骤完成接入。

    1. STEP1区域选择Kafka所部署的环境。

    2. STEP2区域选择Kafka所在的Prometheus实例。

    3. STEP3区域的配置页签配置相关参数,然后单击确定

      参数

      说明

      Exporter名称

      当前Kafka监控唯一命名。

      kafka地址

      填写Kafka Broker的连接地址。多个Broker地址之间使用半角逗号或分号来分隔。

      • 容器服务内,则可以使用Kafka Broker的IP或Service地址。

      • ECS环境内,则可以使用Kafka Broker的IP或DNS地址。

      metrics采集间隔(秒)

      监控数据采集时间间隔。

      kafka版本

      选择Kafka服务端的版本号,目前最高支持v3.2.0版本。

      开启SASL

      选择Kafka服务端是否使用SASL。

      SASL用户名

      如果开启SASL,则需要填写对应的用户名。

      SASL密码

      如果开启SASL,则需要填写对应的用户名密码。

      SASL方法

      选择SASL方法,目前支持plain、scram-sha512和scram-sha256。

      开启TLS

      选择Kafka服务端是否使用TLS。

      忽略TLS安全校验

      如果Kafka服务端开启TLS,且是自签名证书,则选择忽略TLS安全校验。

    vr

查看自建Kafka的基础监控大盘

  1. 登录Prometheus控制台

  2. 在左侧导航栏单击实例列表,进入可观测监控 Prometheus 版的实例列表页面。

  3. 单击目标Prometheus实例名称,进入集成中心页面。
  4. 单击已安装区域的Kafka(基础版)卡片,并在弹出的面板中单击大盘页签,然后单击大盘缩略图,即可查看对应Grafana大盘。

    dl

    Kafka基础版监控大盘主要展示以下几点,如下图所示:vr

    • Kafka Broker数量。

    • 每个Topic的分区数。

    • 每个Topic的消息入/出/堆积数量。

    • 每个Topic的ISR(In-Sync Replicas)数量。

配置自建Kafka的基础监控告警

可观测监控 Prometheus 版控制台的集成中心页面单击已安装区域的Kafka(基础版)卡片,并在弹出的面板中单击告警页签,查看Kafka(基础版)的Prometheus告警。如下图所示,可以看到目前可观测监控 Prometheus 版提供4个关键告警指标,您还可以根据业务需求新增告警规则。创建Prometheus告警规则的具体操作,请参见Prometheus告警规则fk

使用Prometheus监控自建Kafka(高级版)

部署自建Kafka的高级监控

  1. 登录ARMS控制台

  2. 在左侧导航栏单击接入中心,然后在组件应用区域单击Kafka(高级版)卡片的添加,然后在弹出的页面按照如下步骤完成接入。

    1. STEP1区域选择Kafka所部署的环境。

    2. STEP2区域选择Kafka所在的Prometheus实例。

    3. STEP3区域的配置页签配置相关参数,然后单击确定

      参数

      说明

      exporter名称

      当前Kafka监控唯一命名。

      kafka实例名称

      Kafka实例名称,通过该名称可以将Kafka Producer、Broker和Consumer进行关联,实现Topic全链路的大盘展示。

      JMX Agent监听端口

      部署JMX Agent时配置的监听端口。

      metrics采集路径

      可观测监控 Prometheus 版采集JMX Agent的HTTP Path,默认是/metrics

      metrics采集间隔(秒)

      监控数据采集时间间隔。

      Pod/ECS标签

      部署JMX Agent时,为Pod/ECS配置的标签和标签值,可观测监控 Prometheus 版通过此标签进行服务发现(Service Discovery)。

      Pod/ECS标签值

    dk

查看自建Kafka的基础监控大盘

  1. 登录Prometheus控制台

  2. 在左侧导航栏单击实例列表,进入可观测监控 Prometheus 版的实例列表页面。

  3. 单击目标Prometheus实例名称,进入集成中心页面。
  4. 单击已安装区域的Kafka(高级版)卡片,并在弹出的面板中单击大盘页签,然后单击大盘缩略图,即可查看对应Grafana大盘。高级版监控提供了Instance和Topic两个视角的大盘,具体详情如下:

    • 自建Kafka Instance大盘

      展示Kafka Broker内部各项指标:

      • 核心指标:展示Broker数量、OffLine分区数、Under Replicated分区数、Controller数量、CPU及网络等关键信息。

      • JVM指标:展示JVM的内存和GC关键信息。

      • 分区指标:展示分区数量、ISR、Unclean Leader选举、Replica Lag、Offline分区、Under Replicated分区等明细信息。

      • 时间指标:展示Produce、Request、Fetch等各个环境的时间指标。

      • 集群流量指标:展示集群的总体流量指标。

      • Broker流量指标:展示Broker粒度的流量明细指标。

      ei

    • 自建Kafka Topic大盘

      展示各个Kafka Topic全链路指标:

      • Producer:展示Producer端的关键指标,包括消息发送速度、消息压缩率、发送延迟等。

      • Server(即Kafka Broker):展示该Topic对应的分区数、入/出消息速率、入/出消息流量。

      • Consumer:展示消息消费速率、消费延迟和Rebalance等。

      eio

配置自建Kafka的高级监控告警

可观测监控 Prometheus 版控制台的集成中心页面单击已安装区域的Kafka(高级版)卡片,并在弹出的面板中单击告警页签,查看Kafka(高级版)的Prometheus告警。如下图所示,可以看到目前可观测监控 Prometheus 版提供Producer、Instance和Consumer相关的告警指标,具体如下。

  • 自建Kafka Producer:提供了消息发送失败率、消息发送耗时、消息发送重试率等3个告警指标,方便用户对Producer端的异常进行告警。

  • 自建Kafka Instance:提供了分区数量过多、存在OffLine分区、存在UnClean Leader选举、存在Under Replicated分区、有效Broker数量减少、有效Controller数量、实例消息拒绝量、实例消息流入/出量、Topic消息流入/出量等13个告警指标,覆盖了Kafka Broker各方面异常。

  • 自建Kafka Consumer:提供了消息消费堆积告警指标,通过该告警规则,您能够及时掌握消费异常情况。

riop

您还可以根据业务需求新增告警规则。创建Prometheus告警规则的具体操作,请参见Prometheus告警规则

  • 本页导读 (1)
文档反馈