软件:ELK7.1.1
问题
对于单节点进行生命周期管理,一般只是想自动删除过期数据。这里进行一个简单的配置。按照次模板进行修改即可。
解决
设置索引生命周期管理一般步骤是:
- 设定生命周期策略
- 设定索引模板
- 指定第一个索引
在kibana的console工具中按照如下步骤进行:
创建一个生命周期管理策略,只配置hot(必须)和delete(可选)。
–hot阶段,配置rollover策略,在文档数量大于10时进行。
–delete阶段,删除40s前的数据。PUT /_ilm/policy/nginx_ilm_policy
{
"policy": {
"phases": {
"hot": {
"actions": {
"rollover": {
"max_docs": "10"
}
}
},
"delete": {
"min_age": "40s",
"actions": {
"delete": {}
}
}
}
}
}
新建index模板,这一步目的是将送进es的符”index_patterns”的index按照新的规则进行滚动,并且绑定刚刚创建的生命周期规则。
PUT /_template/nginx_ilm_template
{
"index_patterns": ["nginx_logs-*"],
"settings": {
"number_of_shards": 1,
"number_of_replicas": 1,
"index.lifecycle.name": "nginx_ilm_policy",
"index.lifecycle.rollover_alias": "nginx_logs"
}
}
必须。这一步需要手动创建第一个滚动index,以滚动的alias开始(这里是nginx_logs)后续以数字结尾。
PUT nginx_logs-000001
{
"aliases": {
"nginx_logs": {
"is_write_index":true
}
}
}
非必须。生命周期策略默认10分钟执行一次,这里为了更快看到效果,改为10s执行。
PUT _cluster/settings
{
"persistent": {
"indices.lifecycle.poll_interval":"10s"
}
}
重复插入demo数据多次,模拟多条日志入库效果,按照文档中的配置,这里需要提交10次以上才能看到滚动的效果 。
POST nginx_logs/_doc
{
"name": "abbc"
}
最后查看rollover结果
GET _cat/indices/nginx_logs?v
40s内
超过规定的时间后,就剩下了一个index
至此我们完成了单节点的生命周期管理