Kafka 监控

任何应用功能再强大、性能再优越,如果没有与之匹配的监控,那么一切都是虚无缥缈的。监控不仅可以为应用提供运行时的数据作为依据参考,还可以迅速定位问题,提供预防及告警等功能, 很大程度上增强了整体服务的鲁棒性。目前的Kafka监控产品有很多, 比如Kafka Manager、Kafka Eagle、Kafka Monitor、Kafka Offset Monitor、Kafka Web Console、Burrow等,它们都有各自的优缺点。以Kafka Manager为例, 它提供的监控功能也是相对比较完善的, 在实际应用中具有很高的使用价值。但有一个遗憾就是其难以和公司内部系统平台关联,对于业务资源的使用情况、相应的预防及告警的联动无法顺利贯通。在人力、物力等条件允许的情况下,自定义一套监控系统非常有必要。

本章的内容并不是讲述如何使用现存的一些Kafka监控产品, 而是讲述如何自己实现一套Kafka的监控产品。从监控维度来看, Kafka可以分为集群信息、broker信息、主题信息和消费组信息四个方面。有些情况下, 也可以将ZooKeeper的监控信息概括进来, 毕竟ZooKeeper也是Kafka整体架构的一部分, 不过本章并不打算讨论ZooKeeper的更多监控细节, 本章只以Kafka本身为主进行探讨。以集群信息为例,它需要展示整个集群的整体面貌,其中可以囊括一些broker概要信息、主题概要信息和消费组概要信息等内容, 图10-1、图10-2和图10-3展示的就一份关于集群层面信息的监控设计文稿。
在这里插入图片描述
图10-1展示的是集群的一些总览信息, 包括基本的主题个数、broker节点个数、Kafka版本、ZooKeeper地址及版本等。图10-1中右上角是集群中各个broker节点负载的占比, 如果负载均衡严重失调,则会对集群整体性能及使用上造成很大的困扰。图10-1下半部分是一些历史曲线信息,比如整个集群的消息流入/流出速度(条/s),我们可以通过这些历史曲线来了解整个集群的运行状况。
在这里插入图片描述
图10-2展示的是集群中各个broker的必要信息, 这样可以在全局上了解各个节点的运行状态, 这个图的设计灵感来源于Rabbit MQ的监控插件rabbit mq_management, 这种形式的信息概览设计得非常精巧, 比如图中的Controller标记, 代表集群中的唯一一个控制器所处的节点位置, 这样一目了然。图10-2中的每一项都可以链接到具体的broker信息的页面, 这样可以更详细地了解每一个broker(比如其中可以包含一些历史曲线等) 。
在这里插入图片描述
监控一般要配套告警模块,否则只能人为地进行监控,有了告警模块可以对某些重要的监控项设定告警阈值,以便能够及时地通知相关的人员处理故障,或者也可以触发自动运维的动作, 这一切都是为了更好地利用Kafka为应用服务, 如图10-3所示。

这里只是给出一个设计的思路,以全局的视角展示一些监控信息项,至于全局的布局把握,在实现时还是要根据实际的情况来做具体的分析。

1、监控数据的来源

要实现一个自定义的Kafka监控系统, 首先得知道从哪里获取监控指标。Kafka自身提供的监控指标(包括broker和主题的指标, 而集群层面的指标可以通过各个broker的指标值累加来获得) 都可以通过JMX(Java Man agent Extension, Java管理扩展) 来获取, 在使用JMX之前需要确保Kafka开启了JMX的功能(默认关闭) 。Kafka在启动时需要通过配置JMX_PORT来设置JMX的端口号并以此来开启JMX的功能, 示例如下:

JMX_PORT=9999 nohup bin/kafka-server-start.sh config/server.properties &

开启JMX之后会在ZooKeeper的/brokers/ids/<brokerId>节点中有对应的呈现(jmx_port字段对应的值) , 示例如下:
在这里插入图片描述
开启JMX功能之后, 最简单的获取监控指标的方式莫过于直接使用Java自带的工具JConsole了(仅对Java用户而言, 如果读者不喜欢这个工具, 可以试一下Kafka自带的kafka.tools.JmxTool) , 上面我们设置了JMX的端口号为9999(IP地址为localhost) , 那么可以直接在JConsole中输入service:jmx:rmi:///jndi/rmi://localhost:9999/jmxrmi或localhost:9999来连接Kafka,如图10-4所示。
在这里插入图片描述
在图10-2的右侧有一个Msg In的指标, 它表示当前broker中消息流入的速度, 单位是条/s
(messages/s) , 而图10-5中的kafka.server-BrokerTopicMetrics-MessagesInPerSec-OneMinuteRate对应的就是这个指标在一分钟内的监控数值。注意在One Minute Rate同一级中还有Count、Five Minute Rate、Fifteen Minute Rate、Mean Rate、Rate Unit属性,它们与One Minute Rate一起所对应的具体含义如表10-1所示。
在这里插入图片描述
在这里插入图片描述

1.1、OneMinuteRate

1.2、获取监控指标

2、消费滞后

3、同步失效分区

4、监控指标说明

5、监控模块

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值