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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值