elk版本:7.14
一、简介
ELK日志我们一般都是按天存储,例如索引名为"prodlog-2023-05-08",因为日志量所占的存储是非常大的,我们不能一直保存,而是要定期清理旧的,这里就以保留7天日志为例。
自动清理7天以前的日志可以用定时任务的方式,这样就需要加入多一个定时任务,可能不同服务记录的索引名又不一样,这样用定时任务配还是没那么方便。
ES给我们提供了一个索引的生命周期策略(lifecycle),就可以对索引指定删除时间,能很好解决这个问题。
索引生命周期分为四个阶段:HOT(热)=>WARM(温)=》COLD(冷)=>DELETE(删除)
二、Kibana给索引设生命周期策略(ILM)
1.Kibana的开发工具配置生命周期策略(policy)
这里为ELK日志超过7天的自动删除,所以只需要用到DELETE(删除阶段)
PUT _ilm/policy/auto_delete_policy
{
"policy": {
"phases": {
"delete": {
"min_age": "7d",
"actions": {
"delete": {}
}
}
}
}
}
创建一个自动删除策略(auto_delete_policy)
delete:删除阶段,7天执行删除索引动作
查看策略:GET _ilm/policy/
2.Kibana的管理下的索引生命周期策略给已有的模板设置策略
生命周期策略默认10分钟检测一次,为了方便测试,这里设为30s。
PUT /_cluster/settings
{
"transient": {
"indices.lifecycle.poll_interval":"30s"
}
}
查看日志索引的生命周期策略信息。
GET prod*/_ilm/explain 查看kafka开头索引的生命周期策略
"indices" : {
"prodlog-2023-05-08" : {
"index" : "prodlog-2023-05-08",
"managed" : true,
"policy" : "auto_delete_policy",
"lifecycle_date_millis" : 1683504008404,
"age" : "4.51h",
"phase" : "new",
"phase_time_millis" : 1683517222815,
"action" : "complete",
"action_time_millis" : 1683517222815,
"step" : "complete",
"step_time_millis" : 1683517222815,
"phase_execution" : {
"policy" : "auto_delete_policy",
"version" : 1,
"modified_date_in_millis" : 1683515757802
}
},
过一会再点查询,索引已经没有了,说明已经生效。
或者 Kibana的管理下的索引管理查看是否删除了