Kibana7.9.2设置elasticsearch索引过期时间,到期自动删除

一、背景

ELK系统里面存放了大量日志,只需要保留15天的日志索引,希望到期自动删除对应的日志文件;

二、设置索引生命周期策略(ILM)

  1. 创建一个新的策略
    Kibana7.9.2设置elasticsearch索引过期时间,到期自动删除
  2. 记得关掉热阶段的滚动更新
    Kibana7.9.2设置elasticsearch索引过期时间,到期自动删除
  3. 开启删除阶段,设置过期时间,快照可以不用
    Kibana7.9.2设置elasticsearch索引过期时间,到期自动删除

三、手动给索引设置删除策略

如图
Kibana7.9.2设置elasticsearch索引过期时间,到期自动删除
Kibana7.9.2设置elasticsearch索引过期时间,到期自动删除

四、查看结果

如果过期时间比较短,像我这里测试是2分钟,会显示当前阶段是delete;
如果过期时间比较长,例如15天,则会出现hot阶段,具体原因查看文章末尾的官方链接;
到了delete阶段,过几分钟就会被删除了
Kibana7.9.2设置elasticsearch索引过期时间,到期自动删除
Kibana7.9.2设置elasticsearch索引过期时间,到期自动删除

五、自动给索引添加删除策略

但是实际项目中日志索引是自动生成的,那应该怎么自动添加删除策略呢?
我这里使用的是logstash7.9.2把日志文件传到elasticsearch中,默认情况下logstash会有一个索引创建模板,如图
Kibana7.9.2设置elasticsearch索引过期时间,到期自动删除
默认情况下是没有ILM策略的,我们给它设置刚刚创建的策略,这样通过logstash传输创建的索引就会附带ILM策略;
Kibana7.9.2设置elasticsearch索引过期时间,到期自动删除
当然还有一种方法是在logstash的output模块中设置,感兴趣可以查看官方文档
https://www.elastic.co/guide/en/logstash/current/plugins-outputs-elasticsearch.html#plugins-outputs-elasticsearch-ilm_enabled

六、参考

  1. 官方文档,大赞,写得很好很详细
    https://www.elastic.co/guide/en/elasticsearch/reference/7.9/index-lifecycle-management.html