本文介绍如何使用Prometheus监控阿里云kafka及自建Kafka。
自建Prometheus观测Kafka的痛点
使用自建Prometheus观测Kafka,可能面临的典型问题有以下几点:
-
由于安全、组织管理等因素,您的业务通常部署在多个相互隔离的VPC,因此这需要您在多个VPC内都重复、独立部署Prometheus,导致部署和运维成本较高。
-
每套完整的自建监控系统都需要安装并配置Prometheus、Grafana、AlertManager等,其过程复杂、实施周期长。
-
开源Kafka JMX Agent在某些场景下占用CPU高,对自建Kafka业务有一定干扰。
-
对于阿里云消息队列Kafka(简称阿里云Kafka),自建Prometheus无法监控到,导致无法实现一站式、全局视角的监控建设。
-
对于部署在ECS上的自建Kafka,自建Prometheus缺少与阿里云ECS快速集成的服务发现(ServiceDiscovery)机制,因此无法根据ECS标签来灵活定义抓取Targets。如果自行实现类似功能,则需要您使用Golang语言开发代码调用阿里云ECS POP接口,以集成开源Prometheus代码,然后通过编译打包后部署,这种方式实现门槛高、过程复杂、且版本升级困难。
-
常用开源Grafana大盘无法结合Kafka的原理与最佳实践进行深入定制。
-
缺少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实例监控大盘
登录云消息队列 Kafka 版控制台,在左侧导航栏,单击实例列表。
-
单击目标实例名称,在左侧导航栏单击Prometheus监控,可查看阿里云Kafka实例监控大盘。

阿里云Kafka消费组监控大盘
登录云消息队列 Kafka 版控制台,在左侧导航栏,单击实例列表。
-
单击目标实例名称,在左侧导航栏单击Group管理,然后单击目标Group ID超链接,并单击Prometheus监控页签,可查看阿里云Kafka消费组监控大盘。
在 Prometheus监控 面板中,可通过 instanceId、consumerGroup、topic 过滤器筛选监控数据,查看 消费堆积总量 和 消费堆积量(Topic级别) 折线图。还可单击 开源Grafana面板 或 导入Grafana面板 进行扩展操作。
阿里云Kafka Topic监控大盘
登录云消息队列 Kafka 版控制台,在左侧导航栏,单击实例列表。
-
单击目标实例名称,在左侧导航栏单击Topic管理,然后单击目标Topic名称超链接,并单击Prometheus监控页签,可查看阿里云Kafka Topic监控大盘。
该监控大盘展示 topic消息生产流量(bytes/s)、topic消息消费流量(bytes/s) 和 topic消息生产条数(个/秒) 三个指标的折线图,支持通过 topic 下拉列表切换目标 Topic,并可单击 导入Grafana专家版 将大盘导入 Grafana 查看。
使用可观测监控 Prometheus 版配置阿里云Kafka告警
-
登录云监控控制台。
-
在左侧导航栏选择,进入可观测监控 Prometheus 版的实例列表页面。
- 单击目标Prometheus实例名称,进入集成中心页面。
-
单击已安装区域的消息队列Kafka卡片,并在弹出的面板中单击告警页签,查看阿里云Kafka的Prometheus告警。目前可观测监控 Prometheus 版提供实例、Group和Topic相关的关键告警指标,您还可以根据业务需求新增告警规则。创建Prometheus告警规则的具体操作,请参见创建Prometheus告警规则。
默认告警规则包括 Topic消息生产条数、Topic消息消费量、消息堆积量、Group未消费此Topic消息数、实例磁盘使用率、实例消息生产量等。对于每条告警规则,您可以执行 编辑、停止 或 删除 操作,也可以查看 告警事件历史。
使用Prometheus监控自建Kafka
除了阿里云Kafka外,可观测监控 Prometheus 版同时提供了自建Kafka的监控接入能力,支持容器服务(包含ACK、ASK、注册集群等)和ECS这两个环境类型的Kafka监控。Kafka监控可以收集Broker数量、Topic分区、消息组Lag等基础指标,同时Kafka服务端无需您进行任何配置或重启操作。
与阿里云Kafka的监控场景不同,自建Kafka时,您不仅需要关注使用Kafka的例行指标外,还需要关注运维Kafka的内部指标。
部署自建Kafka的基础监控
-
登录云监控控制台。
-
在左侧导航栏单击接入中心,然后在右侧页面单击Kafka卡片。
-
按照界面提示配置接入参数,然后单击确定。下文对主要参数进行说明。
容器服务环境
参数
说明
Pod 选择标签
部署JMX Agent时,为Pod配置的标签和标签值,可观测监控 Prometheus 版通过此标签进行服务发现(Service Discovery)。详细信息,请参见如何部署和配置Kafka JMX Agent。
Metric 采集间隔
监控数据采集时间间隔。
选择所属环境类型为容器服务环境,在选择容器服务集群下拉框中选择目标集群,填写接入名称(同一接入环境中需唯一)。该组件目前处于实验性阶段,对 Kafka JVM 版本具有有限的兼容性,请谨慎试用。完成所有配置后,单击确定。
ECS(VPC)
参数
说明
Kafka 集群名称
每次接入需使用不同的集群名称,以防止指标重复采集,导致大盘展示错误。
服务地址
填写Kafka Broker的连接地址,可以使用Kafka Broker的IP或DNS地址。多个Broker地址之间使用英文半角逗号或分号来分隔。
开启 SASL
选择Kafka服务端是否使用SASL。
开启 TLS
选择Kafka服务端是否使用TLS。
Metric 采集间隔(单位/秒)
监控数据采集时间间隔。
配置信息中还包含接入名称(非必填,需保持唯一)、网络连通性测试链接(用于验证服务地址可达性)以及自定义标签字段(可通过加号添加多组键值对)。填写完成后单击确定。
查看自建Kafka的基础监控大盘
-
登录云监控控制台。
-
在左侧导航栏选择,进入可观测监控 Prometheus 版的实例列表页面。
- 单击目标Prometheus实例名称,进入集成中心页面。
-
单击已安装区域的Kafka卡片,在弹出的面板中单击大盘页签,然后单击大盘缩略图,即可查看对应Grafana大盘。
Kafka监控大盘主要展示以下几点,如下图所示:

-
Kafka Broker数量。
-
每个Topic的分区数。
-
每个Topic的消息入/出/堆积数量。
-
每个Topic的ISR(In-Sync Replicas)数量。
-
配置自建Kafka的基础监控告警
在可观测监控 Prometheus 版控制台的集成中心页面单击已安装区域的Kafka卡片,并在弹出的面板中单击告警页签,查看Kafka的Prometheus告警。
可观测监控 Prometheus 版提供4个关键告警指标(有效Broker数量减少(3分钟)、存在Under Replicated分区、分区数量过多、Consumer Topic消息堆积),您还可以根据业务需求新增告警规则。创建Prometheus告警规则的具体操作,请参见创建Prometheus告警规则。告警页签展示Kafka相关的Prometheus告警规则列表,默认包含有效Broker数量减少、存在Under Replicated分区、分区数量过多、Consumer Topic消息堆积4条告警规则,均为静态阈值检测类型、默认告警分组、P1等级、运行中状态。您可以对告警规则执行编辑、停止、删除及查看告警事件历史等操作,也可以单击右上角创建Prometheus告警规则新增规则。