ELK中索引生命周期ilm和滚动rollover的应用

问题场景

最近在做日志平台项目,项目中会收集很多机器节点的日志,归集后做分析处理。原先的设计是按日志类型及日期来划分索引,索引命名格式如 : test-job-log-v1-1-2023-07-01 , 但是有些类型的日志数据量比较多,可能单个索引主副本的数据会超过100g。考虑到大索引对于后续的维护存在故障恢复时间长的风险,且会造成写入期间机器负载不均衡,因此想用更合适的方式来规划索引,使负载更均衡, 应用索引生命周期ilm和滚动rollover方式,可以更好的限制索引大小,处理起来也比较方便,现将详细的使用过程做汇总说明。

索引生命周期设置

ES的索引生命周期分为hot \ warm \ cold \ delete 四个阶段 ,

HOT为必须的阶段外,其他为非必须阶段,可任意选择配置。因为日志索引只需要满足自动删除功能,所以我们一般只需规划日志索引的HOT、Warm和DELETE三个阶段;

HOT阶段
HOT阶段用来写入日志数据和查询日志数据

WARM阶段
WARM阶段用来存储相对的历史日志数据和查询日志数据,可使用手动迁移,或者自动迁移的方式,可缩减副本数 ,强制合并减少segments数量,设为只读索引

COLD阶段
COLD阶段和warm阶段的操作有些类似, 主要适用与查询进一步减少的索引

DELETE阶段
DELETE阶段是用来对日志数据的删除,日志数据满足DELETE阶段的删除条件(如:超过180天的索引数据),即可配置相关策略,手动或者脚本自动进行删除索引数据

调用es接口设置ilm
kibana中索引生命周期设置

rollover策略定义

ES的rollover策略和java应用中日志的rollover方式有一定相似性,java日志中对于日志文件到一定大小后,就进行日志文件的归档,打包压缩,然后将日志输出到新文件中,当前的日志文件名一般保持不变,归档的日志会限制保留的数量 ,比如只保留7个或保留7天的。
由前面kibana中索引HotPhase 的Rollover设置中可以看到可以定义
最大主分片大小 、最大时长、最大文档数量或索引最大大小等来配置rollover方式。

索引模板设置

索引模板设置,其实可以理解对一定格式的索命名称,进行模式上的预定义,可以预先设定一些字段的属性、索引的副本数量、定义一些脚本处理,当然也可以关联索引生命周期策略,便于对索引进行生命周期管理。
调用es接口创建索引模板
kibana中索引模板管理入口
测试期间可以修改ilm的检查时间间隔, 默认是10分钟
修改ilm检查时间

Logstash 中使用

logstash 中的output 模块中可以配置elasticsearch 作为输出, es的配置中可以直接输出到指定的索引中,也可以用动态索引的方式
原先用按日期来划分缩影的方式如下:
在这里插入图片描述
后尝试ilm+rollover方式配置如下:
logstash中使用ilm

此时启动logstash 会有rollover alias调用
在这里插入图片描述

ES 中索引效果

在这里插入图片描述

以上就是本次在ELK中应用索引生命周期ilm和滚动rollover的过程和效果

参考文档

Logstash:为 Logstash 日志启动索引生命周期管理_ilm_rollover_alias

Rollover API | Elasticsearch Guide [7.17] | Elastic

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这个错误通常是由于 Elasticsearch 索引生命周期策略导致的。在 Elasticsearch ,可以使用 Index Lifecycle Management (ILM) 功能来管理索引生命周期ILM 可以自动管理索引的转换和删除,以确保不需要的数据被清理出 Elasticsearch 集群。 在 ELK Stack 8.x 版本ILM 是默认启用的。如果你遇到了 "8 个索引生命周期错误" 这个问题,可能是因为 Elasticsearch 已经存在某些不再需要的索引,但由于 ILM 策略的原因,它们没有被自动删除。 要解决这个问题,可以手动删除不再需要的索引,或者重新配置 ILM 策略以更好地适应你的需求。以下是一些可能有用的命令和步骤: 1. 查看当前的索引列表: ``` GET /_cat/indices?v&s=index ``` 2. 确认哪些索引已经过期或不再需要。 3. 手动删除这些索引: ``` DELETE /<index_name> ``` 4. 或者重新配置 ILM 策略以更好地管理索引生命周期。例如,你可以使用下面的 API 创建一个策略: ``` PUT _ilm/policy/my_policy { "policy": { "phases": { "hot": { "actions": { "rollover": { "max_size": "50GB" } } }, "delete": { "min_age": "90d", "actions": { "delete": {} } } } } } ``` 以上策略将为索引设置最大大小为 50GB,并在索引年龄超过 90 天时删除它们。你可以根据需要自定义此策略。然后,将该策略应用到需要管理的索引上: ``` PUT /<index_name>/_settings { "index.lifecycle.name": "my_policy" } ``` 以上命令将索引绑定到名为 "my_policy" 的策略上。之后,ILM 将根据该策略自动管理索引生命周期

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值