链接追踪系列-00.es设置日志保存7天-番外篇

索引生命周期策略

ELK日志我们一般都是按天存储,例如索引名为"zipkin-span-2023-03-24",因为日志量所占的存储是非常大的,我们不能一直保存,而是要定期清理旧的,这里就以保留7天日志为例。

自动清理7天以前的日志可以用定时任务的方式,这样就需要加入多一个定时任务,可能不同服务记录的索引名又不一样,这样用定时任务配还是没那么方便。

ES给我们提供了一个索引的生命周期策略(lifecycle),就可以对索引指定删除时间,能很好解决这个问题。

索引生命周期分为四个阶段:HOT(热)=>WARM(温)=》COLD(冷)=>DELETE(删除)

给索引设生命周期策略(ILM)

这里为ELK日志超过7天的自动删除,所以只需要用到DELETE(删除阶段)

创建一个自动删除策略(auto_delete_policy):

delete:删除阶段,7天执行删除索引动作

bash 复制代码
PUT _ilm/policy/auto_delete_policy
{
  "policy": {
    "phases": {
      "delete": {
        "min_age": "7d",
        "actions": {
          "delete": {}
        }
      }
    }
  }
}

查看策略:GET _ilm/policy/

bash 复制代码
#创建索引模板:索引模板可以匹配索引名称,匹配到的索引名称按这个模板创建mapping
PUT _template/elk_template
{
  "index_patterns": ["zipkin*"],
  "settings": {
    "index":{
      "lifecycle":{
        "name":"auto_delete_policy",
        "indexing_complete":true
      }
    }
  }
}

说明:创建索引模板(elk_template),index.lifecycle.name把上面的自动删除策略绑定到elk索引模板

创建zipkin开头的索引时就会应用这个模板。

indexing_complete:true,必须设为true,跳过HOT阶段的Rollover

#查看模板:

GET /_template/

测试效果:

为了立刻知道演示结果,这里测试时把DELETE的日期又7天"7d"改为1分钟"1m"

bash 复制代码
PUT _ilm/policy/auto_delete_policy
{
  "policy": {
    "phases": {
      "delete": {
        "min_age": "1m",
        "actions": {
          "delete": {}
        }
      }
    }
  }
}
bash 复制代码
#生命周期策略默认10分钟检测一次,为了方便测试,这里设为30s
PUT /_cluster/settings
{
  "transient": {
    "indices.lifecycle.poll_interval":"30s"
  }
}

启动相关项目:把链路追踪日志写入到es:(查看 演示zipkin 篇)

#查看zipkin开头索引的生命周期策略:

GET zipkin*/_ilm/explain

#也可以在es中搜索到:

#经过一分钟后: 没有了(删除了)

#演示成功!最后把过期时间重新改成7d

bash 复制代码
PUT _ilm/policy/auto_delete_policy
{
  "policy": {
    "phases": {
      "delete": {
        "min_age": "1m",
        "actions": {
          "delete": {}
        }
      }
    }
  }
}

#生命周期策略默认10分钟检测一次

bash 复制代码
PUT /_cluster/settings
{
  "transient": {
    "indices.lifecycle.poll_interval":"10m"
  }
}

通过kibana操作:



查看索引汇总:

自动给索引添加删除策略

因为索引是按照日期生成的,所以自动给它加上删除策略




相关推荐
_Evan_Yao5 小时前
Redis 缓存穿透、击穿、雪崩,一次讲清!
java·spring·mybatis
梓豪csd5 小时前
消息订阅中心:谁该收到哪条通知
java·开发语言·人工智能·低代码·自动化·1024程序员节
秋饼5 小时前
Spring AI 2.1 Message Parts 深度实战:推理签名回放与跨轮记忆持久化的源码级落地
java·ai·技术分享·后端开发
thefool1122666 小时前
TCP 1
java·1024程序员节
金銀銅鐵8 小时前
[Java] 用 GUI 展示 EnumSet 增减元素时的内部变化(下)
java·后端·ai编程
AI人工智能+电脑小能手9 小时前
一次请求打几个下游,这个Java并行任务工具类6个方法按序聚合
java·线程池·并发编程·1024程序员节·批量处理·并行任务
paopaokaka_luck10 小时前
心理咨询管理系统(WebSocket实时沟通、基于用户的协同过滤、 ECharts多维分析、 预约业务流程、预约校验与定时处理)
java·vue.js·spring boot·mysql·spring·echarts·1024程序员节
2301_322414280411 小时前
springboot农产品交易平台的设计与实现08055-计算机毕设 原创(免费领源码+部署教程+开发环境)
java·spring boot·redis·mysql·tomcat·maven·mybatis
考虑考虑12 小时前
JDK26的JEP 500属性
java·后端·java ee
LMT流氓兔12 小时前
第五单元——第十二课:把脚本整理成项目
java·数据库·python·langchain·1024程序员节