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

How to change log retention policy in elk stack?

我正在使用 elk stack 来保留和监控我的 k8s 集群的 nginx-ingress 日志。我使用的不是 kibana,而是 Grafana,而不是 fluentd,我使用的是 fuent-bit。我发现一份文档说 elasticsearch 保留日志 7 天,我还找到一篇文章说它保留日志终身。

我只需要最近 6 个月的日志,不需要超过 6 个月的日志。

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

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

要保留数据,您需要配置Index Lifecycle Policy。目前,如果你没有配置ILM策略,那么Elastic会保留日志数据一辈子,不会自动删除。您也可以从 Kibana 创建策略,但正如您提到的您没有使用 Kibana,您可以按照以下命令操作。

To create a lifecycle policy from Kibana, open the menu and go to Stack Management > Index Lifecycle Policies. Click Create policy.

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

PUT _ilm/policy/my_policy
{
  "policy": {
    "phases": {
      "hot": {
        "actions": {
          "rollover": {
            "max_age": "7d"
          }
        }
      },
      "delete": {
        "min_age": "30d",
        "actions": {
          "delete": {} 
        }
      }
    }
  }
}

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

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

PUT logs-my_app-default/_settings
{
  "index": {
    "lifecycle": {
      "name": "my_policy"
    }
  }
}

更新

您可以使用 Explain lifecycle API 来验证 ILM 是否正常工作。

GET my-index-000001/_ilm/explain