Elasticsearch索引生命周期管理(ILM)策略定制教程
概述
Elasticsearch内置了一套索引生命周期管理(Index Lifecycle Management, ILM)策略,用于自动化管理数据流中的索引。本教程将详细介绍如何基于实际业务需求,定制这些内置策略,以满足特定的性能、弹性和数据保留要求。
内置ILM策略简介
Elasticsearch提供了以下三种内置ILM策略:
logs@lifecycle- 用于管理日志数据流metrics@lifecycle- 用于管理指标数据流synthetics@lifecycle- 用于管理合成监控数据流
这些策略被Elastic Agent用于管理其数据流的后备索引。当默认策略不能满足需求时,我们可以对其进行定制。
典型应用场景
假设我们需要管理日志文件索引,并有以下数据保留要求:
- 滚动更新条件:当写入索引达到50GB或30天时,创建新索引
- 热数据阶段:滚动更新后保留30天
- 温数据阶段:30天后:
- 将索引移至温数据层
- 设置副本分片数为1
- 执行强制合并以优化存储空间
- 删除阶段:滚动更新后90天删除索引
准备工作
在开始定制前,需确保:
-
集群配置:
- 包含热层和温层的数据节点
- 对于自管理集群,需在
elasticsearch.yml中配置节点角色:node.roles: [data_hot, data_warm]
-
环境准备:
- 已安装并配置Elastic Agent,能够发送日志到集群
策略定制步骤详解
1. 复制内置策略
重要提示:永远不要直接编辑托管策略,这些更改可能会被覆盖。
操作流程:
- 在Kibana中导航至"Stack Management" > "Index Lifecycle Policies"
- 启用"显示系统托管策略"选项
- 选择
logs@lifecycle策略 - 点击"另存为新策略",命名为如
logs-custom
默认的logs@lifecycle策略使用推荐配置:
- 当索引达到50GB或30天时滚动更新
2. 修改策略配置
热阶段配置
- 保持默认的50GB/30天滚动更新条件
- 可通过"高级设置"查看和修改这些值
温阶段配置
- 启用温阶段并设置:
- 进入条件:滚动更新后30天
- 设置副本数:1
- 强制合并:设置为1个段
删除阶段配置
- 启用删除阶段
- 设置进入条件:滚动更新后90天
3. 应用新策略
创建或编辑logs@custom组件模板来应用新策略:
- 创建名为
logs@custom的组件模板 - 在索引设置中添加:
{ "index": { "lifecycle": { "name": "logs-custom" } } } - 保存后,该模板会自动被
logs索引模板引用
技术要点解析
-
数据分层架构:
- 热层:处理高频率写入和查询
- 温层:存储访问频率较低的数据
- 冷层/冻结层(本示例未使用):存储极少访问的数据
-
强制合并优化:
- 减少段数量可降低内存占用
- 提高查询性能
- 但合并过程资源消耗较大,应在低峰期执行
-
副本数调整:
- 热阶段通常设置较高副本保证可用性
- 温阶段可减少副本以节省资源
最佳实践建议
-
监控ILM执行:
- 定期检查ILM策略执行情况
- 关注滚动更新和阶段转换是否按预期工作
-
容量规划:
- 根据数据增长速率合理设置滚动条件
- 考虑集群资源分配
-
测试验证:
- 在生产环境应用前,先在测试环境验证策略
- 确保删除策略不会意外删除重要数据
通过本教程,您应该已经掌握了如何基于业务需求定制Elasticsearch的索引生命周期管理策略。合理的ILM配置可以显著提升集群性能和资源利用率。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



