
# ALM-38009 Kafka Topic过载（适用于MRS 3.1.0及之前版本）
![](https://support.huaweicloud.com/usermanual-mrs/public_sys-resources/note_3.0-zh-cn.png)
如果告警名称为"ALM-38009 Broker磁盘IO繁忙"，请参考[ALM-38009 Broker磁盘IO繁忙（适用于MRS 3.1.0之后版本）](https://support.huaweicloud.com/usermanual-mrs/ALM-38009.html)进行处理。
#### 告警解释
系统每60秒周期性检测Kafka各个Topic的过载情况，当检测到某个Topic在过载磁盘上的Partition数占比超出阈值（默认40%）时，产生该告警。
平滑次数为1，当某个Topic在过载磁盘上的Partition数占比低于阈值（默认40%）时，告警恢复。
过载磁盘定义：磁盘分区的IO使用率大于80%的磁盘认为是过载磁盘。
例如：
某TopicA的Partition分布在三个Broker上，其中两个Broker上Partition所在磁盘分区的IO使用率大于80%。
那么，在过载磁盘上的Partition占比等于2/3，大于40%，触发告警。
本章节仅适用于MRS 3.1.0及之前版本。
#### 告警属性
| 告警ID  | 告警级别 | 是否自动清除 |
|:---|:---|:---|
| 38009 | 重要   | 是      |
   
#### 告警参数
| 参数名称 | 参数含义              |
|:---|:---|
| 来源   | 产生告警的集群名称。        |
| 服务名  | 产生告警的服务名称。        |
| 角色名  | 产生告警的角色名称。        |
| 主机名  | 产生告警的主机名。         |
| 主题名  | 产生告警的Kafka Topic。 |
   
#### 对系统的影响
Partition所在的磁盘分区IO过于繁忙，产生告警的Kafka Topic上可能无法写入数据。
#### 可能原因
- Topic副本数配置过多。
- 生产者消息批量写入磁盘的参数设置不合理。该Topic承担的业务流量过大，当前Partition的设置不合理。
 
#### 处理步骤
**检查Topic副本数配置。**
1. 在FusionInsight Manager首页，选择"运维 \> 告警 \> 告警"，单击此告警所在行的![](https://support.huaweicloud.com/usermanual-mrs/zh-cn_image_0000002513714459.png)，查看定位信息中上报告警的"主机名"。
2. 在FusionInsight Manager首页，选择"集群 \> 服务 \> Kafka \> KafkaTopic监控"，搜索发生告警的Topic，查看副本数量。
3. 如果副本数量值大于3，则考虑减少该Topic的复制因子（减少为3）。
   
   在集群客户端执行以下命令对Kafka Topic的副本进行重新规划：
   **kafka-reassign-partitions.sh** **--zookeeper** *{zk_host}:{port}* **/kafka** **--reassignment-json-file** *{manual assignment json file path}* **--** **execute**
   Kafka客户端安装与使用请参考[使用Kafka客户端](https://support.huaweicloud.com/cmpntguide-lts-mrs/mrs_01_1767.html)。
   例如：
   ```
   /opt/client/Kafka/kafka/bin/kafka-reassign-partitions.sh --zookeeper 10.149.0.90:2181,10.149.0.91:2181,10.149.0.92:2181/kafka --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}。
   ```
   
   
4. 观察一段时间，看告警是否清除。 
   - 是，操作结束。
   
   - 否，执行[步骤 5]。
   
   
   
   
**检查Topic的Partition规划设置** **。**
5. 在"KafkaTopic监控"页面单击每一个Topic的"Topic的字节流量 \> Topic输入的字节流量"，统计出"Topic输入的字节流量"值最大的Topic。查看该Topic有哪些Partition以及这些Partition所在的主机信息。
6. 登录到[步骤 5]查询到的主机，执行命令查看每个磁盘的最后一个指标"%util"：
   
   ```
   iostat -d -x
   ```
   ![](https://support.huaweicloud.com/usermanual-mrs/zh-cn_image_0000002481514632.png "点击放大")
   - 各个磁盘的"%util"指标都超出阈值（默认值为80%），则考虑对Kafka磁盘进行扩容，扩容后参考[步骤 3]对Topic的Partition重新规划。
   
   - 各个磁盘的"%util"指标差别较大，查看Kafka的磁盘分区配置信息。 例如： ${BIGDATA_HOME}/FusionInsight_HD_\*/1_14_Broker/etc/server.properties文件中的log.dirs配置值。
     执行如下命令查看命令输出的Filesystem信息：
     ```
     df -h log.dirs配置值
     ```
     执行结果如下：
     ![](https://support.huaweicloud.com/usermanual-mrs/zh-cn_image_0000002513594477.png "点击放大")
     
   
   - Filesystem所在的分区与"%util"指标比较高的分区相匹配，则考虑在空闲的磁盘上规划Kafka分区，并将log.dirs设置为空闲磁盘目录，然后参考[步骤 3]，对Topic的Partition重新规划，保证该Topic的Partition均匀分布到各个磁盘。
    
   
   
7. 观察一段时间，检查告警是否清除。 
   - 是，操作结束。
   
   - 否，重复执行[步骤 5]\~[步骤 6]三次。重复执行次数达到上限后，执行[步骤 8]。
   
   
   
   
8. 观察一段时间，检查告警是否清除。
   
   - 是，操作结束。
   
   - 否，执行[步骤 9]。
   
   
   
   
**收集故障信息。**
9. 在FusionInsight Manager界面，选择"运维 \> 日志 \> 下载"。
10. 在"服务"中勾选待操作集群的"Kafka"。
11. 单击右上角的![](https://support.huaweicloud.com/usermanual-mrs/zh-cn_image_0000002481674592.png)设置日志收集的"开始时间"和"结束时间"分别为告警产生时间的前后10分钟，单击"下载"。
12. 请联系运维人员，并发送已收集的故障日志信息。
 
#### 告警清除
此告警修复后，系统会自动清除此告警，无需手工清除。
#### 参考信息
无。
