详细解析 kafka manager (CMAK)的使用

添加集群

常用参数说明

下面已常用的选项作说明

  • Enable JMX Polling
    是否开启 JMX 轮训,该部分直接影响部分 kafka broker 和 topic 监控指标指标的获取(生效的前提是 kafka 启动时开启了 JMX_PORT。主要影响如下之指标的查看:

  •  

     

  • Poll consumer information
    是否开启获取消费信息,直接影响能够在消费者页面和 topic 页面查看消费信息。

     

     

  • Enable Active OffsetCache
    是否开启 offset 缓存,决定 kafka-manager 是否缓存住 topic 的相关偏移量。

其余参数说明

参数名参数说明默认值备注
brokerViewUpdatePeriodSecondsBroker视图周期更新时间/单位(s)30
clusterManagerThreadPoolSize集群管理线程池大小2
clusterManagerThreadPoolQueueSize集群管理线程池列队大小100
KafkaCommandThreadPoolSizeKafka命令线程池大小2
logkafkaCommandThreadPoolQueueSizelogkafka命令线程池列队大小100
logkafkaUpdatePeriodSecondsLogkafka周期更新时间/单位(s)30
partitionOffsetCacheTimeoutSecsPartition Offset缓存过期时间/单位(s)5
brokerViewThreadPoolSizeBroker视图线程池大小83 * number_of_brokers
brokerViewThreadPoolQueue SizeBroker视图线程池队列大小10003 * total # of partitions across all topics
offsetCacheThreadPoolSizeOffset缓存线程池大小8
offsetCacheThreadPoolQueueSizeOffset缓存线程池列队大小1000
kafkaAdminClientThreadPoolSizeKafka管理客户端线程池大小8
kafkaAdminClientTheadPoolQueue SizecKafka管理客户端线程池队列大小1000
kafkaManagedOffsetMetadataCheckMillisOffset元数据检查时间30000(这部分解释属自己理解)
kafkaManagedOffsetGroupCacheSizeOffset组缓存大小100000(这部分解释属自己理解)
kafkaManagedOffsetGroupExpireDaysOffset组缓存保存时间7(这部分解释属自己理解)
Security Protocol安全协议PLAINTEXT[SASL_PLAINTEXT,SASL_SSL,SSL]

topic 的管理

topic 列表

下面对画方框的三列做着重解释。 

  • Brokers Skew% (broker 倾斜率)
    该 topic 占有的 broker 中,拥有超过该 topic 平均分区数的 broker 所占的比重。举个例子说明:


    上图,我们以一个 6 个分区,2 个副本的 topic 举例,该 topic 一共 6 * 2 = 12 个 分区,分布在 5 个 broker 上,平均一个 broker 应该拥有 2.4 个分区,因为分区为整数,所以 2 个或者 3 个都是属于平均范围,5 个 broker 并没有那个拥有超过平均分区数的,所以 Brokers Skew% 为 0。
    如果此时,我将 broker 1 上的分区 1 的副本移动到 broker 2 上,如下图所示:


    上图,broker 2 上拥有 4 个分区,超过平均的 2 个或 3 个的平均水平,broker 2 就倾斜了,broker 倾斜率 1/5=20%。

     

注意如下这种情况也是不计算作倾斜的。 

  • Brokers Leader Skew% (broker leader 分区倾斜率)
    该 topic 占有的 broker 中,拥有超过该 topic 平均 Leader 分区数的 broker 所占的比重。同样举个例子说明:


    我们还是以一个 6 个分区,2 个副本的 topic 举例,该 topic 一共有 6 个 Leader 分区,分布在 5 个 broker 上,平均一个 broker 应该拥有 1.2 个 Leader 分区,因为分区为整数,所以 1 个或者 2 个都是属于平均范围,如图所示,5 个 broker 没有那个拥有超过 2 个的 Leader 分区,所以 Brokers Leader Skew% 为 0。
    如果此时,我们将 broker3 的 Leader 分区移动到 broker2,如下图所示:

此时,broker2 拥有 3 个 leader 分区,超过平均范围的 2 个,所以 broker2 就 Leader 分区倾斜了,倾斜率 1/5=20%。

  • Under Replicated%
    该 topic 下的 partition,其中副本处于失效或者失败的比率。失败或者失效是指副本不处于 ISR 队列中。目前控制副本是否处于 ISR 中由 replica.log.max.ms 这个参数控制。

replica.log.max.ms: 如果一个follower在这个时间内没有发送fetch请求或消费leader日志到结束的offset,leader将从ISR中移除这个follower,并认为这个follower已经挂了,默认值 10000 ms

用下图举例说明:


broker1 此时拥有 partition1 和 partition4,其中 partition4 时 Leader,partition1 是副本,如果此时 broker 故障不可用,则会出现如下情况:

 

 


上述两张图片时接连展现,先是发现borker1 上 partition4 这个 Leader 分区失效,继而从 ISR 队列中取出 broker4 上的副本作为 Leader 分区,然后在后期同步检测过程中发现broker1 上 partition1 这个副本失效。最后导致的结果就是 partition1 和 partition4 都出于副本失效或者失败的状态。此时 Under Replicated 的数值为:2/6=33%。

 

总结

上面三个参数对于衡量 topic 的稳定性有重要的影响:
Broker Skew: 反映 broker 的 I/O 压力,broker 上有过多的副本时,相对于其他 broker ,该 broker 频繁的从 Leader 分区 fetch 抓取数据,磁盘操作相对于其他 broker 要多,如果该指标过高,说明 topic 的分区均不不好,topic 的稳定性弱;
Broker Leader Skew:数据的生产和消费进程都至于 Leader 分区打交道,如果 broker 的 Leader 分区过多,该 broker 的数据流入和流出相对于其他 broker 均要大,该指标过高,说明 topic 的分流做的不够好;
Under Replicated: 该指标过高时,表明 topic 的数据容易丢失,数据没有复制到足够的 broker 上。

topic 详情

下面着重讲述红框部分:

 

  • Preferred Replicas
    分区的副本中,采用副本列表中的第一个副本作为 Leader 的所占的比重,如上图,6 个副本组,其中只有 partition4 不是采用副本中的第一个在 broker1 中的分区作为 leader 分区,所以 Preferred Replicas 的值为 5/6=83%。

     

In an ideal scenario, the leader for a given partition should be the "preferred replica". This guarantees that the leadership load across the brokers in a cluster are evenly balanced.

上述是关于“优先副本”的相关描述,即在理想的状态下,分区的 leader 最好是 “优先副本”,这样有利于保证集群中 broker 的领导权比较均衡。重新均衡集群的 leadership 可采用 kafka manager 提供的工具:

 

topic 操作

操作说明
Delete Topic删除 topic
Reassign Partitions平衡集群负载
Add Partitions增加分区
Update ConfigTopic 配置信息更新
Manual Partition Assignments手动为每个分区下的副本分配 broker
Generate Partition Assignments系统自动为每个分区下的副本分配 broker

一般而言,手动调整、系统自动分配分区和添加分区之后,都需要调用 Reassign Partition

  • Manual Partition Assignments
    一般当有 Broker Skew 时或者 Broker Leader Skew 后可以借助该功能进行调整,本文前面的 Broker Skew 和 Broker Leader Skew 的说明都借助了该工具。
    例如将下图中的 broker1 的分区4 移动到 broker2 上。

     

     

 

  • Generate Partition Assignments
    该功能一般在批量移动 partition 时比较方便,比如集群新增 broker 或者 topic 新增 partition 后,将分区移动到指定的 broker。
    例如下图将 topic 由原来的分布在 5 个 broker 修改为 4 个 broker:

 

  • Update Config

     

消费监控

kafka manager 能够获取到当前消费 kafka 集群消费者的相关信息。

 

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Kafka Manager 是一个开源的 Kafka 管理工具,提供了一个 Web 界面来简化 Kafka 集群的管理和监控,它由 Yahoo 开发并开源,现在由 Criteo 进行维护。Kafka Manager 最新版本是 2.0.0.2,支持 Kafka 0.8.2.0 及以上版本。 Kafka Manager 提供了以下功能: - 集群状态监控:可以查看 Kafka 集群的状态、broker 的健康状况、主题的分区情况、消费者组的消费情况等。 - 主题管理:可以创建、删除、修改主题配置,查看主题的分区情况、副本情况等。 - 消费者组管理:可以查看消费者组的消费情况、消费速率、消费延迟等。 - Partition Offline Replica Management:可以重新分配分区的副本,以确保分区的高可用性。 你可以通过以下步骤来使用 Kafka Manager: 1. 下载 Kafka Manager:你可以从 Kafka Manager 的 GitHub 页面下载最新版本的压缩包。 2. 安装 Kafka Manager:解压缩下载的压缩包,然后进入解压缩后的目录,编辑 `conf/application.conf` 文件,修改以下配置: ``` kafka-manager.zkhosts="localhost:2181" ``` 将 `"localhost:2181"` 修改成你的 Zookeeper 的主机名或 IP 地址和端口号。 3. 启动 Kafka Manager:在 Kafka Manager 的目录下执行以下命令启动 Kafka Manager: ``` bin/kafka-manager ``` 4. 访问 Kafka Manager:在浏览器中输入 `http://<kafka-manager-host>:<kafka-manager-port>` 来访问 Kafka Manager,其中 `<kafka-manager-host>` 是 Kafka Manager 的主机名或 IP 地址,`<kafka-manager-port>` 是 Kafka Manager 的端口号,默认为 9000。 5. 添加 Kafka 集群:在 Kafka Manager 的界面上,点击 `Cluster` 标签页,然后点击 `Add Cluster` 按钮,填写 Kafka 集群的信息,包括 Zookeeper 的主机名或 IP 地址和端口号、Kafka 的版本号等。 6. 管理 Kafka 集群:在 Kafka Manager 的界面上,你可以查看 Kafka 集群的状态、监控 broker 的性能、管理主题和消费者组等。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值