如何更改elk堆栈中的日志保留策略?

Bis*_*ney 5 elasticsearch

我正在使用 elk 堆栈来保留和监控 k8s 集群的 nginx-ingress 日志。我使用 Grafana 代替 kibana,使用 fuent-bit 代替 fluentd。我发现一个文档说elasticsearch 保留日志7 天,我还发现一篇文章说它会保留日志很长时间。

我想要的只是过去 6 个月的日志,之后的任何日志都不需要。

我检查了elasticsearch的values.yaml文件,看看是否可以找到更改日志保留时间的配置选项,但无济于事。

有没有人使用过类似的堆栈并且知道如何更改日志保留时间???我们将非常感谢您的宝贵时间。

Sag*_*tel 3

为了保留数据,您需要配置索引生命周期策略。目前,如果您没有配置ILM策略,那么Elastic将终生保留日志数据,并且不会自动删除。您也可以从 Kibana 创建策略,但正如您提到的您没有使用 Kibana,您可以按照以下命令操作。

要从 Kibana 创建生命周期策略,请打开菜单并转到 Stack Management > Index Lifecycle Policies。单击创建策略

您可以使用以下 API 配置 ILM 策略:

PUT _ilm/policy/my_policy
{
  "policy": {
    "phases": {
      "hot": {
        "actions": {
          "rollover": {
            "max_age": "7d"
          }
        }
      },
      "delete": {
        "min_age": "30d",
        "actions": {
          "delete": {} 
        }
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

如果索引至少在 7 天前创建,则上述策略将滚动该索引,并在滚动后 30 天删除该索引。

您可以使用以下命令将创建的策略分配给您的索引:

PUT logs-my_app-default/_settings
{
  "index": {
    "lifecycle": {
      "name": "my_policy"
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

更新

您可以使用解释生命周期 API来验证 ILM 是否正常工作。

GET my-index-000001/_ilm/explain
Run Code Online (Sandbox Code Playgroud)