教程:自定义内置 ILM 策略

edit

教程:自定义内置ILM策略

edit

Elasticsearch 包括以下内置的 ILM 策略:

  • logs@lifecycle
  • metrics@lifecycle
  • synthetics@lifecycle

Elastic Agent 使用这些策略来管理其数据流的备份索引。 本教程向您展示如何使用 Kibana 的 索引生命周期策略 来 根据您的应用程序的性能、弹性和保留要求自定义这些策略。

场景

edit

您希望将日志文件发送到 Elasticsearch 集群,以便您可以可视化和分析数据。此数据具有以下保留要求:

  • 当写入索引达到50GB或已存在30天时,滚动到新索引。
  • 滚动后,在热数据层保留索引30天。
  • 滚动后30天:

    • 将索引移动到温数据层。
    • 将副本分片设置为1。
    • 强制合并多个索引段以释放由已删除文档占用的空间。
  • 在滚动后90天删除索引。

先决条件

edit

要完成本教程,您需要:

  • 一个具有热数据层和温数据层的Elasticsearch集群。

    • Elasticsearch Service: Elastic Stack 部署在 Elasticsearch Service 上默认包含一个热层。要添加一个温层,请编辑您的部署并点击 添加容量 以增加温数据层。

      Add a warm data tier to your deployment
    • 自管理集群: 按照数据层中的描述,将data_hotdata_warm角色分配给节点。

      例如,在暖层中的每个节点的elasticsearch.yml文件中包含data_warm节点角色:

      node.roles: [ data_warm ]
  • 安装并配置了Elastic Agent的主机,用于将日志发送到您的Elasticsearch集群。

复制策略

edit

Elastic Agent 使用索引模式为 logs-*-* 的数据流来存储日志监控数据。托管的 logs@lifecycle ILM 策略会自动管理这些数据流的备份索引。

如果您不想使用策略默认值,则可以自定义托管策略,然后将其保存为新策略。然后,您可以在相关组件模板和索引模板中使用该新策略。

您不应直接编辑托管策略。对托管策略的更改可能会被回滚或覆盖。

要将 logs@lifecycle 策略保存为 Kibana 中的新策略:

  1. 打开菜单并转到 堆栈管理 > 索引生命周期策略
  2. 切换 包括托管系统策略
  3. 选择 logs@lifecycle 策略。
  4. 编辑策略 logs 页面,切换 另存为新策略,然后为策略提供一个新名称,例如 logs-custom

The logs@lifecycle policy uses the recommended rollover defaults: 当当前写入索引达到50GB或成为30天时,开始写入新索引。

要查看或更改滚动设置,请点击热阶段的高级设置。然后禁用使用推荐默认值以显示滚动设置。

View rollover defaults

修改策略

edit

默认的 logs@lifecycle 策略旨在防止创建许多微小的每日索引。您可以修改策略的副本以满足您的性能要求并管理资源使用。

  1. 激活暖阶段并点击高级设置

    1. Move data into phase when设置为30天前。这将在滚动更新后30天将索引移动到暖层。
    2. 启用Set replicas并将Number of replicas更改为1
    3. 启用Force merge data并将Number of segments设置为1
    Add a warm phase with custom settings
  2. 在温暖阶段,点击垃圾桶图标以启用删除阶段。

    Enable the delete phase

    在删除阶段,将数据移动到阶段的时间设置为90天前。这将在滚动更新后90天删除索引。

    Add a delete phase
  3. 点击Save as new policy

托管的ILM策略副本也被标记为托管。您可以使用创建或更新生命周期策略API来将_meta.managed参数更新为false

应用策略

edit

要将新的ILM策略应用于logs索引模板,请创建或编辑logs@custom组件模板。

一个*@custom组件模板允许您自定义托管索引模板的映射和设置,而无需覆盖托管索引模板或组件模板。这种类型的组件模板会自动被索引模板识别。了解更多

  1. 点击组件模板标签,然后点击创建组件模板
  2. 物流下,将组件模板命名为logs@custom
  3. 索引设置下,设置在上一步中创建的ILM策略名称:

    {
        "index": {
            "lifecycle": {
                "name": "logs-custom"
            }
        }
    }
  4. 继续到审查,然后点击保存组件模板
  5. 点击索引模板标签,然后选择logs索引模板。
  6. 在摘要中,查看组件模板列表。logs@custom应该被列出。