ILM Policy未按配置触发rollover,请求排查配置异常原因
问题描述
我创建了如下用于测试的ILM Policy:
{ "test-1-m": { "version": 6, "modified_date": "2022-12-07T11:27:55.648Z", "policy": { "phases": { "hot": { "min_age": "0ms", "actions": { "rollover": { "max_primary_shard_size": "10mb", "max_age": "1m" } } }, "delete": { "min_age": "1m", "actions": { "delete": { "delete_searchable_snapshot": true } } } } }, "in_use_by": { "indices": [ "monitoring-logstash-alias-000008", "monitoring-logstash-alias-000009", "monitoring-logstash-alias-000010" ], "data_streams": [], "composable_templates": [ "monitoring-logstash-alias" ] } } }
该Policy配置的rollover触发条件为主分片最大10MB或索引存活1分钟,但实际shard在10分钟后才触发rollover,且10MB阈值完全未生效,请问我遗漏了什么配置?
排查方向与遗漏配置说明
- 调整ILM轮询间隔:ILM默认的轮询间隔是10分钟(由
indices.lifecycle.poll_interval参数控制),这就是你看到10分钟后才触发rollover的直接原因。如果要测试小阈值的触发逻辑,需要修改该参数为更小的值,比如10秒:PUT /_cluster/settings { "persistent": { "indices.lifecycle.poll_interval": "10s" } } - 确认别名的写入索引配置:Rollover操作要求绑定的别名必须明确指定一个写入索引(即别名的
is_write_index属性为true),同时索引名称要符合rollover的命名规则(需以-000001这类数字后缀结尾)。需检查monitoring-logstash-alias别名是否正确关联了可写入的目标索引,且命名符合要求。 - 验证分片大小的计算逻辑:
max_primary_shard_size是基于主分片的Lucene逻辑存储大小(不是磁盘上的文件占用大小),可通过GET /<目标索引>/_stats查看primaries.store.size字段确认实际大小是否达到10MB。另外,该阈值是单个主分片的大小,而非所有主分片的总和。 - 检查ILM与索引的关联状态:虽然Policy显示被索引使用,但可通过
GET /<目标索引>/_ilm/explain命令确认索引的ILM执行状态,查看是否存在Policy未正确应用、执行延迟等错误信息。
内容的提问来源于stack exchange,提问作者Yaron
相关产品推荐
相关产品推荐

