ELK ILM策略配置问题:无法触发索引滚动、删除及容量超限
ELK ILM策略失效排查与修复
一、先确认索引与ILM策略的正确绑定
- 执行
GET /_ilm/explain/my-index-pattern-*,检查索引是否正确绑定目标策略,返回结果中policy字段需显示你创建的策略名称。 - 核对索引
settings,确认存在index.lifecycle.name: 你的策略名配置;若通过模板关联,需检查模板的index_patterns是否覆盖你的索引命名规则,避免模板匹配失效。
二、滚动触发条件未生效的排查
验证滚动条件配置逻辑
- 确保策略
rollover阶段的触发条件明确,示例配置如下:"rollover": { "conditions": { "max_size": "1gb", "max_age": "7d" } } - 注意:
max_size统计的是主分片总大小,而非索引磁盘总占用(含副本)。若副本数为1,主分片800MB时总占用会达1.6GB,但此时未触发滚动是正常的。
- 确保策略
检查ILM核心运行状态
- 执行
GET /_ilm/status,确认ILM进程处于RUNNING状态,无STOPPED或ERROR标记。 - 执行
GET /_cat/indices/my-index-pattern-*?v&h=index,docs.count,store.size,pri.store.size,对比pri.store.size(主分片大小)是否达到你设置的max_size阈值。
- 执行
确认写别名配置有效性
- 滚动操作依赖写别名,必须确保索引关联了标记为
is_write_index: true的写别名。执行GET /_alias查看别名配置,同时确认策略rollover阶段指定了该别名。
- 滚动操作依赖写别名,必须确保索引关联了标记为
三、删除阶段未触发的排查
- 核对策略
delete阶段配置,确保条件正确:"delete": { "min_age": "3d", "actions": { "delete": {} } } - 注意:
min_age从索引创建时间(或滚动完成时间)开始计算,若为新创建的索引,需等待满3天才会触发删除;若为滚动生成的索引,需从滚动完成时刻起算。 - 执行
GET /_ilm/explain/my-index-name,查看索引lifecycle状态,确认是否处于delete阶段等待状态,或是否存在权限不足、磁盘水位过高导致的执行错误。
四、max_size阈值超出的问题
- 再次明确:
max_size仅统计主分片大小,若副本数多,总磁盘占用会远大于主分片大小,这种情况不属于阈值失效。 - 检查集群磁盘水位配置:执行
GET /_cluster/settings查看cluster.routing.allocation.disk.watermark,若磁盘水位线过高,ILM会暂停执行,导致滚动不触发、容量持续超出。 - 确认
max_size单位规范:使用小写1gb,避免1GB或1G等非标准写法(虽ES可能兼容,但严格遵循官方规范可避免潜在问题)。
五、临时手动触发ILM检查
若确认配置无误但ILM未自动执行,可手动触发指定索引的滚动检查:
POST /_ilm/step/execute?pretty { "index": "your-index-name", "step": { "name": "check-rollover-ready" } }
执行后通过/_ilm/explain查看状态变化。
内容的提问来源于stack exchange,提问作者Ashutosh Jaiswal
相关产品推荐
相关产品推荐

