ALM-38009 Broker磁盘IO繁忙(适用于MRS 3.1.0之后版本)
本章节适用于MRS 3.1.0之后版本。
告警解释
系统每60秒周期性检测Kafka各个磁盘的IO情况,当检测到某个Broker上的Kafka数据目录磁盘IO超出阈值(默认80%)时,产生该告警。
平滑次数为3,当该磁盘IO低于阈值(默认80%)时,告警恢复。
告警属性
|
告警ID |
告警级别 |
是否可自动清除 |
|---|---|---|
|
38009 |
重要 |
是 |
告警参数
|
类别 |
参数名称 |
参数含义 |
|---|---|---|
|
定位信息 |
来源 |
产生告警的集群名称。 |
|
服务名 |
产生告警的服务名称。 |
|
|
角色名 |
产生告警的角色名称。 |
|
|
主机名 |
产生告警的主机名。 |
|
|
数据目录名称 |
Kafka磁盘IO频繁的数据目录名称 |
对系统的影响
Partition所在的磁盘分区IO过于繁忙,产生告警的Kafka Topic上可能无法写入数据。
可能原因
- Topic副本数配置过多。
- 生产者消息批量写入磁盘的参数设置不合理。该Topic承担的业务流量过大,当前Partition的设置不合理。
处理步骤
检查Topic副本数配置。
- 在FusionInsight Manager首页,选择“运维 > 告警 > 告警”,查看此告警的详细信息,查看定位信息中上报告警的“主机名”。
- 在FusionInsight Manager首页,选择“集群 > 服务 > Kafka > KafkaTopic监控”,选择按照“副本数量”降序排序,查看是否存在副本数量值大于3且流量较高的Topic。
- 如果存在,则单击该Topic名称,确认该Topic所有Partition的所在主机中是否包含告警信息中(通过步骤 1中查询)显示的“主机名”对应的IP地址,如果包含则考虑减少该Topic的复制因子(减少为3)。
执行以下操作,在Kafka客户端对Kafka Topic的副本进行重新规划:
- 以客户端安装用户,登录Kafka客户端安装节点。
- 执行以下命令,切换到客户端目录,例如“/opt/client/Kafka/kafka/bin”。
cd /opt/client/Kafka/kafka/bin - 执行以下命令,配置环境变量。
source /opt/client/bigdata_env - 执行以下命令,进行用户认证。(普通模式跳过此步骤)
kinit 组件业务用户 - 执行以下命令,对Kafka Topic的副本进行重新规划。
kafka-reassign-partitions.sh --bootstrap-server <Kafka集群IP:21007> --command-config ../config/client.properties --reassignment-json-file {manual assignment json file path} --execute
Kafka集群IP可以登录Manager页面,选择“集群 > 服务 > Kafka > 实例”,查看并记录任意一个Broker角色实例的业务IP地址。Kafka集群IP端口号,集群已启用Kerberos认证(安全模式)下是21007,集群未启用Kerberos认证(普通模式)下是21005。
例如:
/opt/client/Kafka/kafka/bin/kafka-reassign-partitions.sh --bootstrap-server 192.168.0.90:21007,192.168.0.91:21007,192.168.0.92:21007 --command-config /opt/client/Kafka/kafka/config/client.properties --reassignment-json-file expand-cluster-reassignment.json --execute
在“expand-cluster-reassignment.json”文件中描述该Topic的Partition迁移到哪些Broker,json文件中的内容格式为:
{"partitions":[{"topic": "topicName","partition": 1,"replicas": [1,2,3] }],"version":1}。
- 观察一段时间,检查告警是否清除。
- 是,操作结束。
- 否,执行步骤 5。
检查Topic的Partition规划设置。
- 在“KafkaTopic监控”页面单击每一个Topic的“Topic的字节流量 > Topic输入的字节流量”,统计出“Topic输入的字节流量”值最大的Topic。查看该Topic有哪些Partition以及这些Partition所在的主机信息。
- 登录到步骤 5查询到的主机,执行以下命令查看每个磁盘的最后一个指标“%util”:
iostat -d -x
- 各个磁盘的“%util”指标都超出阈值(默认值为80%),则考虑对Kafka磁盘进行扩容,扩容后,参考步骤 3,对Topic的Partition重新规划。
- 各个磁盘的“%util”指标差别较大,查看Kafka的磁盘分区配置信息。
例如:${BIGDATA_HOME}/FusionInsight_HD_*/x_x_Broker/etc/server.properties文件中的log.dirs配置值。
执行如下命令查看命令输出的Filesystem信息:
df -h log.dirs配置值执行结果如下:

- Filesystem所在的分区与“%util”指标比较高的分区相匹配,则考虑在空闲的磁盘上规划Kafka分区,并将log.dirs设置为空闲磁盘目录,然后参考步骤 3,对Topic的Partition重新规划,保证该Topic的Partition均匀分布到各个磁盘。
- 观察一段时间,检查告警是否清除。
- 观察一段时间,检查告警是否清除。
- 是,操作结束。
- 否,执行步骤 9。
收集故障信息。
告警清除
此告警修复后,系统会自动清除此告警,无需手工清除。
参考信息
不涉及。