Controller如何实现可观测性?
在整个集群运行过程中,只能有一个Broker成为Controller。所以要监控Controller的数量以及Controller的变更历史。
可以用Kafka的JMXTool,进行轻量级的监控。
{BrokerIP}":"${JMXPort}"/jmxrmi --object-name kafka.controller:type=KafkaController,name=ActiveControllerCount --date-format "YYYY-MM-dd_HH:mm" --reporting-interval -1 | grep -v type
记录Controller变更历史:
function inter_controller_history()
{
#第一次检测集群Controller
if [ ! -f "${clusterID}"_controller_history ]; then
awk '/,1/ {print 0}' "{clusterID}"_controller_history
#记录Controller变更历史
else
nowController=/ {print 0}' "{clusterID}"_controller | awk -F ',' '{print $1}')
LastTimeController={clusterID}"_controller_history | awk '/,1/ {print 0}' | awk -F ',' '{print $1}')
if [ "{LastTimeController}_X" ];then
awk '/,1/ {print 0}' "{clusterID}"_controller_history
msg="{clusterID} {LastTimeController} to ${nowController}"
echo "log_file_name
send_warning
fi
fi
}
监控效果:
通过JMXTool,还可以拉取Kafka的其他指标进行监控。例如:
under_replicated_partitions有非同步副本监控。
OfflinePartitionsCount分区丢失leader监控。
{BrokerIP}:"${JMXPort}"/jmxrmi --object-name kafka.controller:type=KafkaController,name=OfflinePartitionsCount --date-format "YYYY-MM-dd_HH:mm" --reporting-interval -1
ZooKeeper_SessionState Broker与Zookeeper断开连接监控。
MessagesInPerSec,进入Broker消费数量监控。
{BrokerIP}":"${JMXPort}"/jmxrmi --object-name kafka.server:type=BrokerTopicMetrics,name=MessagesInPerSec --date-format "YYYY-MM-dd HH:mm" --attributes Count --reporting-interval -1
ISR扩缩容率等。
监控可以有很多方式,这样做主要是简单方便,不需要依赖太多监控系统,同时监控程序可以快速部署到海外或者合作伙伴机房。
滴滴的最佳实践(Logi-KafkaManager)
对于Controller的管理和监控,我们内部做了相应的封装,并发布了开源产品didi/LogiKM: 一站式Apache Kafka集群指标监控与运维管控平台(github.com/didi/LogiKM),提供完全界面化的Controller监控
有兴趣的同学可以尝试下,用的好别忘了star一下🙏。
博主简介:国内最大最权威的 Kafka中文社区,共享知识,实时掌控最新行业资讯
技术交流:请联系博主微信号:didiyun0125
社区地址: z.didi.cn/5gSF9