升级ELK集群至8.8.1后出现cluster_block_exception问题求助
问题分析与解决:Kibana日志出现cluster_block_exception(FORBIDDEN/8/index write (api))
错误成因
- 磁盘占用触发Elasticsearch默认的磁盘水位线保护机制:当磁盘使用率达到85%(默认high watermark阈值)时,ES会自动给所有索引添加只读限制(index.blocks.write),防止磁盘彻底耗尽。后续扩容磁盘后,这个只读限制不会自动解除,依然绑定在
.kibana_task_manager_8.6.2_001索引上。 .kibana_task_manager_*是Kibana存储定时任务、后台作业状态的核心系统索引,必须保持可写才能让Kibana正常运行,只读限制直接导致Kibana写入失败,抛出403错误。
解决步骤
1. 确认索引的只读状态
通过ES API查询目标索引的配置,验证只读块是否存在:
curl -XGET 'http://<ES节点IP>:9200/.kibana_task_manager_8.6.2_001/_settings?pretty'
如果返回结果包含"index.blocks.write": "true",说明只读限制确实生效。
2. 移除索引的只读限制
执行命令解除该索引的写锁定:
curl -XPUT 'http://<ES节点IP>:9200/.kibana_task_manager_8.6.2_001/_settings' -H "Content-Type: application/json" -d '{ "index.blocks.write": null }'
3. 验证恢复状态
- 查看Kibana日志,确认该错误不再出现;
- 尝试在Kibana中执行依赖任务管理器的操作(比如创建定时报表),验证功能是否正常。
4. 可选:调整磁盘水位线(预防再次触发)
如果集群磁盘空间充裕,可修改ES的磁盘水位线配置,降低误触发概率。通过动态API更新(无需重启节点):
curl -XPUT 'http://<ES节点IP>:9200/_cluster/settings' -H "Content-Type: application/json" -d '{ "persistent": { "cluster.routing.allocation.disk.watermark.low": "80%", "cluster.routing.allocation.disk.watermark.high": "85%", "cluster.routing.allocation.disk.watermark.flood_stage": "90%" } }'
也可以在elasticsearch.yml中修改对应配置,重启节点生效。
内容的提问来源于stack exchange,提问作者Kévin Pemonon
相关产品推荐
相关产品推荐

