
# ALM-38001 Kafka磁盘容量不足（2.x及以前版本）
#### 告警解释
系统按60秒周期检测Kafka磁盘空间使用率，并把实际磁盘使用率和阈值相比较。磁盘使用率默认提供一个阈值范围。当检测到磁盘使用率高于阈值时产生该告警。
用户可通过"系统设置 \> 阈值配置"修改阈值。
当Kafka磁盘使用率小于或等于阈值时，告警恢复。
#### 告警属性
| **告警ID** | **告警级别** | **可自动清除** |
|:---|:---|:---|
| 38001    | 严重       | 是         |
   
#### 告警参数
| **参数名称**          | **参数含义**              |
|:---|:---|
| ServiceName       | 产生告警的服务名称。            |
| RoleName          | 产生告警的角色名称。            |
| HostName          | 产生告警的主机名。             |
| PartitionName     | 产生告警的磁盘分区。            |
| Trigger Condition | 系统当前指标取值满足自定义的告警设置条件。 |
   
#### 对系统的影响
磁盘容量不足会导致Kafka写入数据失败。
#### 可能原因
- 用于存储Kafka数据的磁盘配置（如磁盘数目、磁盘大小等），无法满足当前业务数据流量，导致磁盘使用率达到上限。
- 数据保存时间配置过长，数据累积达到磁盘使用率上限。
- 业务规划不合理，导致数据分配不均，使部分磁盘达到使用率上限。
 
#### 处理步骤
1. 登录MRS集群详情页面，选择"告警管理"。
2. 在告警列表中单击该告警，从"告警详情"的"定位信息"中获得HostName（主机名称）和PartitionName（磁盘分区名称）。
3. 在"主机管理"页面，单击[步骤 2]中获取的主机名称。
4. 检查"磁盘"区域中是否包含该告警中的磁盘分区名称。 
   - 是，执行[步骤 5]。
   
   - 否，手动清除该告警，操作结束。
   
   
   
   
5. 检查"磁盘"区域中包含该告警中的磁盘分区使用率是否达到百分之百。
   
   - 是，执行[步骤 6]。
   
   - 否，执行[步骤 8]。
   
   
   
   
6. 在"实例"区域中，单击"Broker \> 实例配置"，进入当前节点"实例配置"页面，将"基础配置"切换为"全部配置"，查看数据目录配置参数"log.dirs"。
7. 单击"组件管理 \> Kafka \> 实例"，进入"Kafka实例"页面，停止[步骤 2]中对应的Broker实例，并登录该节点，手动删除[步骤 6]中配置的数据目录，然后继续执行后续步骤，待后续步骤执行完成后，再启动当前Broker实例。
8. 单击"组件管理 \> Kafka \> 服务配置"，进入"Kafka服务配置"页面。
9. 查看参数"disk.adapter.enable"是否配置为"true"。 
   - 是，执行[步骤 11]。
   
   - 否，配置为"true"，开启该功能，执行[步骤 10]。
   
   
   
   
10. 查看参数"adapter.topic.min.retention.hours"所配置的数据最短保存周期是否合理。
    
    - 是，执行[步骤 12]。
    
    - 否，根据业务需求合理调整数据保存周期，执行[步骤 12]。
    
    
    ![](https://support.huaweicloud.com/usermanual-mrs/public_sys-resources/note_3.0-zh-cn.png)
    如果有个别Topic不能做保存周期调整，那么可配置在"disk.adapter.topic.blacklist"中。
    
    
11. 等待10分钟，查看故障磁盘使用率是否有减少。
    
    - 是，继续等待直到告警消除。
    
    - 否，执行[步骤 12]。
    
    
    
    
12. 进入"Kafka Topic监控"页面，查看Kafka配置的数据保存时间配置，根据业务需求和业务量权衡，考虑是否需要调小数据保存时间。
    
    - 是，执行[步骤 13]。
    
    - 否，执行[步骤 14]。
    
    
    
    
13. 根据[步骤 2]中上报告警的磁盘分区，找到数据量较大的Topic，手动调小保存周期，使用Kafka的linux客户端，执行如下操作命令：
    
    **kafka-topics.sh --zookeeper** *ZooKeeper地址:24002/kafka* **--alter --topic** *Topic名称* **--config retention.ms=** *保存时间*
    
    
14. 查看是否由于某些Topic的Partition配置不合理导致部分磁盘使用率达到上限（例如：数据量非常大的Topic的Partition数目小于配置的磁盘个数，导致各磁盘上数据分配无法均匀，进而部分磁盘达到使用率上限）。
    
    ![](https://support.huaweicloud.com/usermanual-mrs/public_sys-resources/note_3.0-zh-cn.png)
    如果不清楚哪些Topic业务数据量较大，可以根据[步骤 2]中获取到的主机节点信息，登录到实例节点上，进入对应的数据目录（即[步骤 6]中"log.dirs"修改之前的配置路径），查看该目录下哪些Topic的Partition目录占用的磁盘空间比较大。
    - 是，执行[步骤 15]。
    
    - 否，执行[步骤 16]。
    
    
    
    
15. 通过Kafka客户端对Topic的Partition进行扩展，命令行操作命令如下：
    
    **kafka-topics.sh --zookeeper** *ZooKeeper地址:24002/kafka* **--alter --topic** *Topic名称* **--partitions=** *新Partition数目*
    ![](https://support.huaweicloud.com/usermanual-mrs/public_sys-resources/note_3.0-zh-cn.png)
    新Partition数目建议配置为Kafka数据磁盘数量的倍数。
    当前步骤修改可能不会很快解决当前告警，需要结合数据保存时间逐渐均衡数据。
    
    
16. 考虑是否需要扩容。
    
    - 是，请为集群添加节点，然后执行[步骤 17]。
    
    - 否，执行[步骤 17]。
    
    
    
    
17. 等待一段时间，检查告警是否清除。
    
    - 是，操作结束。
    
    - 否，执行[步骤 18]。
    
    
    
    
18. 收集故障信息。
    
    1. 在MRS Manager界面，单击"系统设置 \> 日志导出"。
    
    2. 请联系运维人员，并发送已收集的故障日志信息。
    
    
    
    
 
#### 参考信息
无。
