加载中

自定义 Elasticsearch 中的内置 ILM 策略

Elasticsearch 包含多种内置的索引生命周期管理 (ILM) 策略,旨在帮助您高效地管理日志和指标。本教程将向您展示如何安全地复制和自定义这些策略,以优化滚动更新及其他操作,控制跨热数据层和温数据层的资源使用情况,并强制执行索引的保留规则。

请按照以下步骤创建内置 ILM 策略的自定义副本。切勿直接编辑受管策略,因为 Elasticsearch 或 Elastic 集成的更新可能会覆盖这些更改。相反,您可以复制内置策略,修改副本,并将其分配给您的索引或组件模板。

虽然本教程以 Elastic Agent 及其内置的 logs@lifecycle 策略为例,但同样的过程适用于任何内置策略。常见示例包括

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

当您有特定的数据保留或滚动更新要求时,自定义 ILM 策略非常有用。例如,大型日志或指标数据流可能需要与内置默认值不同的保留期限。

重要

在 Elastic Stack 9.3 及更高版本中,已弃用的 logsmetricssynthetics ILM 策略已被功能等效的 {type}@lifecycle 策略所取代,以符合其他受管资产的命名惯例。

如果已弃用的 ILM 策略及其 {type}@lifecycle 替代项均未被修改,Fleet 会自动迁移仍引用已弃用 ILM 策略的组件模板。

如果任一受管 ILM 策略已被修改,您需要手动迁移自定义设置。请按照本教程创建一个包含自定义设置的自管 ILM 策略,并在相关的 {type}@custom 组件模板中引用它。

本教程涵盖了如何自定义已摄入日志数据的管理方式。与其使用内置 logs@lifecycle ILM 策略中的默认生命周期设置,不如使用 Kibana 中的索引生命周期策略功能,根据应用程序的特定性能、弹性和保留要求来定制新策略。您可以针对管理数据流的任何策略采用相同的步骤。

该过程包括三个主要步骤

  1. 创建 logs@lifecycle 策略的副本.
  2. 修改新策略以满足您的要求.
  3. 使用 logs@custom 组件模板将新策略应用于您的日志数据.

应用后,您的自定义策略将管理更改后创建的任何新索引。现有索引将继续使用其当前的生命周期策略,直到它们进行滚动更新。如果您希望策略立即生效,可以手动滚动更新数据流。

提示

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

  • 当写入索引的主分片大小达到 50GB 或索引已存在 30 天时,滚动更新到新索引。

  • 滚动更新后,将索引保留在热数据层中 30 天。

  • 滚动更新 30 天后

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

要完成本教程,您需要

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

    • Elastic Cloud Hosted:Elastic Cloud 上的 Elastic Stack 部署默认包含热数据层。要添加温数据层,请编辑您的部署并点击温数据层的添加容量

      Add a warm data tier to your deployment
    • 自管集群:按照数据层中的说明,为节点分配 data_hotdata_warm 角色。

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

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

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

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

警告

切勿直接编辑受管策略。对受管策略的更改可能会被回滚或覆盖。

要在 Kibana 中将 logs@lifecycle 策略另存为新策略

  1. 使用导航菜单或全局搜索字段转到 Index Lifecycle Policies 管理页面。
  2. 切换包含受管系统策略
  3. 选择 logs@lifecycle 策略。
  4. 编辑策略 logs 页面上,切换另存为新策略,然后为该策略提供一个新名称,例如 logs-custom

logs@lifecycle 策略使用推荐的滚动更新默认值:当当前写入索引的主分片大小达到 50GB 或索引已存在 30 天时,开始写入新索引。

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

View rollover defaults

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

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

    1. 将数据移入阶段的时间设置为30 天。这会将滚动更新 30 天后的索引移动到温数据层。
    2. 启用设置副本并将副本数更改为1
    3. 启用强制合并数据并将段数设置为1
    Add a warm phase with custom settings
  2. 在温阶段,点击垃圾桶图标以启用删除阶段。

    Enable the delete phase

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

    Add a delete phase
  3. 点击另存为新策略

提示

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

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

使用 @custom 组件模板

@custom 组件模板允许您自定义受管索引模板的映射和设置,而无需覆盖它们或其主要组件模板。

许多 Elasticsearch 受管索引模板包含一个或多个 @custom 组件模板。必须先创建 @custom 组件模板,然后才能使用它,并且其名称必须与受管索引模板中指定的名称完全匹配,以便在创建索引时自动应用。

例如,如果您正在摄入 OpenTelemetry (OTel) 日志,则任何 OTel 日志数据流及其后端索引均由 logs-otel@template 受管索引模板配置。该索引模板在存在时会自动应用 logs@customlogs-otel@custom 模板中定义的设置。

转到索引管理 > 索引模板并选择任何受管索引,以查看与该索引关联的 @custom 组件模板。

A screenshot showing the logs@custom and logs-otel@custom component templates associated with the logs-otel@template index template.
提示

如果您希望 ILM 更改仅应用于特定索引,则可以直接创建自定义索引模板,而不是修改自定义组件模板。使用 Kibana 中的索引管理页面或索引模板 API 来创建新模板。

  1. 点击组件模板选项卡,然后点击创建组件模板

  2. 物流下,将组件模板命名为 logs@custom

  3. 索引设置下,设置上一步中创建的 ILM 策略名称

    {
        "index": {
            "lifecycle": {
                "name": "logs-custom"
            }
        }
    }
    		
  4. 继续进行审核,然后点击保存组件模板

  5. 点击索引模板选项卡,然后选择 logs 索引模板。

  6. 在摘要中,查看组件模板列表。logs@custom 应该会列出。

© . This website operates independently and is not affiliated with or endorsed by Elasticsearch B.V. All brand names, logos, and trademarks are the property of their respective owners.