软件: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内
    40s内的分段情况

    超过规定的时间后,就剩下了一个index
    超过规定时间后的分段情况

至此我们完成了单节点的生命周期管理