当前位置: 首页 > news >正文

Elasticsearch 报错:index read-only / allow delete (api) 深度解析与解决方案

ClusterBlockException[index [.monitoring-es-7-2025.11.12] blocked by: [FORBIDDEN/12/index read-only / allow delete (api)]]

在这里插入图片描述

🚨 Elasticsearch 报错:index read-only / allow delete (api) 深度解析与解决方案

💡 关键词:Elasticsearch、磁盘空间不足、监控索引、只读状态


一、问题背景

在一次 Node.js 项目运行过程中,我们的 Elasticsearch 集群突然在日志中疯狂刷出警告:

"message": "unexpected error while indexing monitoring document",
"stacktrace": ["org.elasticsearch.xpack.monitoring.exporter.ExportException: ClusterBlockException[index [.monitoring-es-7-2025.11.12] blocked by: [FORBIDDEN/12/index read-only / allow delete (api)];]"
]

Kibana 监控页面无法更新,ES 指标面板停止刷新。
但奇怪的是,我们清理了磁盘空间后,问题仍然存在。


二、问题现象

执行 GET _cat/indices?v,可以看到 .monitoring-* 索引状态为 green,但日志仍不断报:

index [.monitoring-es-7-2025.11.12] blocked by: [FORBIDDEN/12/index read-only / allow delete (api)];

即使空间已经恢复,Elasticsearch 仍然拒绝对这些索引写入。


三、问题根因分析

1️⃣ Elasticsearch 的自动保护机制

当磁盘使用率超过阈值(默认 95%),ES 会自动触发保护机制:

index.blocks.read_only_allow_delete = true

意思是:
• 索引变为只读;
• 只允许删除(防止磁盘被完全写满导致崩溃)。

这是一种「自我保护」,以防止数据写满磁盘导致节点宕机。


2️⃣ 清理空间 ≠ 自动解除锁定

即使你清理了磁盘空间,Elasticsearch 不会自动解锁索引。
这点经常让人误以为“磁盘问题还没解决”,其实只是索引状态没恢复。


3️⃣ 监控索引的特殊性

报错中的 .monitoring-es-* 和 .monitoring-kibana-* 属于 X-Pack Monitoring 模块。
Kibana、Metricbeat 等监控数据会持续往这些索引写入。
只要它们被锁定,就会持续抛出 “unexpected error while indexing monitoring document”。


四、解决步骤 ✅

  1. 查看索引只读状态

执行以下命令查看哪些索引被锁定:

GET _all/_settings?filter_path=**.blocks.read_only_allow_delete

你会看到类似输出:

{".monitoring-es-7-2025.11.12": {"settings": {"index.blocks.read_only_allow_delete": "true"}}
}

  1. 清理磁盘空间

  1. 解锁索引

解锁单个索引:

PUT .monitoring-es-7-2025.11.12/_settings
{"index.blocks.read_only_allow_delete": null
}

或者解锁所有索引(推荐):

PUT _all/_settings
{"index.blocks.read_only_allow_delete": null
}
  1. 验证结果

再次执行:

GET _cat/indices?v

监控索引恢复正常写入后,日志中的 FORBIDDEN/12 报错将停止。


  1. (可选)清理旧监控索引

这些 .monitoring-* 索引每天会自动创建一个新索引(按日期)。
可以清理过期数据节省空间:

DELETE .monitoring-es-7-2025.10*
DELETE .monitoring-kibana-7-2025.10*

或者在 elasticsearch.yml 中关闭自动监控:

xpack.monitoring.enabled: false

五、延伸:为什么清理磁盘后错误还在?

这是很多人困惑的点。
Elasticsearch 判断磁盘“安全”需要两个条件:
1. 实际磁盘使用率低于 cluster.routing.allocation.disk.watermark.low(默认 85%);
2. 索引解除只读状态。

即使你释放了空间,只要第 2 步没做,仍然会报 index read-only / allow delete (api)。


六、总结

问题原因解决
报错 FORBIDDEN/12磁盘满导致索引只读PUT _all/_settings 解锁
清理磁盘仍报错ES 不会自动解锁索引手动恢复只读状态
.monitoring-* 报错Kibana/ES 自带监控无法写入解锁或清理监控索引
日志持续警告未清理旧索引删除历史 .monitoring-*

七、实战命令汇总

# 查看集群磁盘状态
GET _cluster/stats?human# 查看只读索引
GET _all/_settings?filter_path=**.blocks.read_only_allow_delete# 全量解锁
PUT _all/_settings
{"index.blocks.read_only_allow_delete": null
}# 删除旧监控索引
DELETE .monitoring-es-7-2025.10*
DELETE .monitoring-kibana-7-2025.10*
http://www.dtcms.com/a/602936.html

相关文章:

  • 敖汉旗住房和城乡建设局网站建站模板网站设计
  • 河北 石家庄 网站建设为什么建设网银网站打不开
  • 网站做任务哪些网站的网站怎么做的
  • MATLAB高阶谱分析工具箱(HOSA)解析
  • 公司网站制作需要找广告公司么中信建设有限责任公司湖南省人防建筑设计院
  • 郑州高端模板建站muiteer主题 wordpress
  • 网站策划书我与音乐wordpress评论模板怎么改
  • 网站头部代码江河建设集团有限公司网站
  • 东莞保安公司有哪些襄阳网站seo公司
  • 福田的网站建设公司windows7 wordpress
  • 专门提供做ppt小素材的网站pc端网站开发技术
  • 北京建站方案wap端是电脑还是手机
  • HLD3370AL HLD5070AL HLD9070AL HLD12070AL低压差线性稳压器70V高压防护聚能芯半导体智芯原厂技术支持
  • 111、sqlserver 表A有1亿条数据,表中每个不同值的字段B大约有100条数据,给B字段建索引和不建索引查询时性能相差多少倍?并进行分析
  • 官方网站建设专家磐石网络电子商务网站建设与维护课件
  • C++ 中的栈(Stack)数据结构与堆的区别与内存布局(Stack vs Heap)
  • 设计好网站苏州网站制作电话
  • 建材做网销哪个网站好怎么做企业网站
  • JAVA后端动态代理复习
  • 网站菜单怎么做品牌推广策划
  • thinkphp 网站管理科技网站哪个好
  • C语言编译软件使用教程 | 完整的C语言编译工具介绍与使用技巧
  • [AI tradingOS] AI自动交易器 | 绩效追踪与日志
  • PcVue X 工控——工厂数字化转型与落地巡回研讨会圆满举行
  • 成都哪家做网站比较好旅游网络营销的特点有
  • 青岛社保网站官网登录上海公共招聘平台
  • 计网期末复习--选择题
  • 深入理解 Linux(7) 命令与动态库:从文件操作到程序链接的实践指南
  • 做海外购网站免费的设计网站有哪些
  • 做网站内嵌地图福州建设工程协会网站查询