文章目录
探讨kafka的监控数据采集方式以及需要关注的核心指标,便于日常生产进行监控和巡检。
1. 监控指标采集
监控指标的采集方式使用promethues + kafka_exporter的方式采集kafka的指标,并通过promethues协议暴露出来。本文探讨kafka的采集监控方式,以及常用核心监控告警配置。
1.1 部署kafka_exporter
kafka_exporter的 下载地址 选择合适的版本下载,并解压,使用如下方法启动。
./kafka_exporter --kafka.server=127.0.0.1:9092 --web.listen-address=":9308"
确定metrics指标暴露出来后,就可以通过prometheus配置target进行指标采集
# 通过promethues协议暴露指标curl http://localhost:9308/metrics
1.2 prometheus采集kafka_exporter的暴露指标
配置prometheus的指标采集任务
- job_name: kafka
static_configs:
- targets: ['172.19.0.2:9308','172.19.0.3:9308','172.19.0.4:9308']
labels:
instance: kafka
1.3 promethues配置告警规则或者配置grafana大盘
再次不进行扩展。
2. 核心告警指标
kafka的指标很多,相关的指标含义可以参考 官网文档,本文将摘选出核心的指标,作为kafka集群的核心监控并配置相关的告警。
2.1 broker核心指标
Kafka的服务端度量指标是为了监控broker,也是整个消息系统的核心。因为所有消息都通过kafka broker传递,然后被消费,所以对于broker集群上出现的问题的监控和告警就尤为重要。broker性能指标有以下三类:
- Kafka本身的指标
- 主机层面的指标
- JVM垃圾回收指标
kafka层面指标
指标名称指标说明参考值备注进程进程进程存在 == 1UnderReplicatedPartitions处于复制状态的parition<= 1在一个运行健康的集群中,处于同步状态的副本数(ISR)应该与总副本数(简称AR:Assigned Repllicas)完全相等,如果分区的副本远远落后于leader,那这个follower将被ISR池删除,随之而来的是IsrShrinksPerSec(可理解为isr的缩水情况,后面会讲)的增加。由于kafka的高可用性必须通过副本来满足,所有有必要重点关注这个指标,让它长期处于大于0的状态ActiveControllerCount活跃的controller数量>=1controller的职责是维护partition leader的列表,当遇到这个值等于0且持续了一小段时间(<1秒)的时候,必须发出明确的告警OfflinePartitionsCount离线的partition数量==0这个指标报告了没有活跃leader的partition数,任何partition都应该有一个LeaderOfflinePartitionsCount离线的partition数量==0这个指标报告了没有活跃leader的partition数,任何partition都应该有一个LeaderUncleanLeaderElectionsPerSec未清理领导选举/每秒<= 1这个指标如果存在的话很糟糕,这说明kafka集群在寻找partition leader节点上出现了故障BytesInPerSecKafka的吞吐量根据机器规格调整不同机器的规格网卡带宽吞吐有差异,根据实际情况调整,如果单个broker的吞吐过高,意味着需要进行扩容了BytesOutPerSecKafka的吞吐量根据机器规格调整不同机器的规格网卡带宽吞吐有差异,根据实际情况调整,如果单个broker的吞吐过高,意味着需要进行扩容了
机器层面指标()
指标名称指标说明参考值备注Disk usage磁盘使用情况<= 70%CPU usageCPU使用情况<= 60%机器网卡入流量机器网卡入流量不同机器的规格网卡带宽吞吐有差异,根据实际情况调整,如果单个broker的吞吐过高,意味着需要进行扩容了机器网卡出流量机器网卡出流量不同机器的规格网卡带宽吞吐有差异,根据实际情况调整,如果单个broker的吞吐过高,意味着需要进行扩容了
JVM指标 ()
指标名称指标说明参考值备注MemHeapUsedM/MemHeapMaxMJvm 堆内内存使用率<= 60%
2.2 producer核心指标
producer通常不是写入的瓶颈,监控正常的机器指标和JVM指标即可, 和
2.3 consumer核心指标
指标名称指标说明参考值备注kafka_consumergroup_lag每个消费者的消息延迟<= 500这个监控是partition维度,该指标跟topic的数据写入有关系,需要根据实际情况调整
3. 参考文章
- kafka监控官网
版权归原作者 李姓门徒 所有, 如有侵权,请联系我们删除。