ILM explain 是什么
ILM explain 显示每个索引当前所在的阶段、正在执行的动作与步骤,以及可能出现的错误,用来回答「为什么这个索引没有按期滚动或删除」。关键字段有 policy、age、phase、action、step、failed_step 与 step_info。常用参数 only_errors=true 只看异常索引,only_managed=true 只看受策略管理的索引;配合集群级的 _ilm/status 还能确认 ILM 服务自身是否在运行。
基本信息
| 接口 | GET /<index>/_ilm/explain |
|---|---|
| 关键字段 | policy、age、phase、action、step、failed_step、step_info |
| 常用参数 | only_errors=true、only_managed=true |
| 手动重试 | POST /<index>/_ilm/retry |
| 服务状态 | GET /_ilm/status |
| 所属系统 | Elasticsearch(ILM 功能) |
典型使用场景
- 滚动卡住排查:索引没有按预期生成新索引时看失败步骤
- 保留期核对:确认索引是否已经进入 delete 阶段
- 批量巡检:only_errors=true 一次拉出所有异常索引
- 定位配置问题:名称模式不匹配、缺少写别名等原因都写在 step_info 里
- 变更验证:改完策略后确认索引重新走完各阶段
查看与重试
查看与重试
GET /logs-*/_ilm/explain?only_errors=true # 只列出异常的索引
GET /logs-2024.07.01/_ilm/explain # 单个索引的完整阶段信息
GET /_ilm/status # ILM 服务本身是否在运行
POST /logs-2024.07.01/_ilm/retry # 修复原因后手动重试当前步骤输出字段读法
| 字段 | 含义 | 读法 |
|---|---|---|
| phase | 当前阶段 | hot/warm/cold/delete,与预期不符说明流转有问题 |
| action | 当前动作 | 例如 rollover、shrink、delete |
| step | 动作内的步骤 | 卡住时用来定位到具体步骤 |
| age | 索引年龄 | 与策略里的阈值对比 |
| failed_step | 失败的步骤 | 结合 step_info 看原因 |
| step_info | 详细信息 | 报错原因多数写在这里 |
滚动卡住的常见原因是索引名不匹配模板、缺少写别名,或分片数不符合 shrink 条件,这些都会在 step_info 里给出具体说明。
错误修复后 ILM 不一定自动重试当前步骤,必要时用 _ilm/retry 手动重试,否则索引会一直停在原地不再推进。
查看前先确认 _ilm/status 返回正常运行:ILM 服务被停掉时所有索引都会显示停滞,把服务停机当成索引卡住会白白走一圈弯路。
策略里的 min_age 以索引创建时间为锚点计算,改策略不会让已过期的索引立刻跳到下一步,仍要等 ILM 的下一次评估周期。