教程:自定义数据保留策略

编辑

本教程介绍如何将自定义 ILM 策略应用于集成的的数据流。

场景: 您有两个环境中的 Elastic Agent 正在使用 System 集成收集系统指标——一个命名空间为 development,另一个命名空间为 production

目标: 自定义 production 命名空间中 system.network 数据流的 ILM 策略。具体来说,应用内置的 90-days-default ILM 策略,以便在 90 天后删除数据。

如果您克隆了索引模板以自定义 Elasticsearch 8.13 之前版本的数据保留策略,则必须更新克隆中的索引模板,以便在 Elasticsearch 8.13 或更高版本上使用 ecs@mappings 组件模板。有关分步说明,请参阅更新在 Elasticsearch 8.13 之前克隆的索引模板

步骤 1:查看数据流

编辑

Kibana 中的数据流视图显示与给定集成关联的数据流、索引模板和 ILM 策略。

  1. 导航至堆栈管理 > 索引管理 > 数据流
  2. 搜索 system 以查看与 System 集成关联的所有数据流。
  3. 选择 metrics-system.network-{namespace} 数据流以查看其关联的索引模板和 ILM 策略。正如您所看到的,数据流遵循数据流命名方案,并以其类型 metrics- 开头。

    Data streams info

步骤 2:创建组件模板

编辑

为了使您的更改在未来版本中继续应用,您必须将所有自定义索引设置放入组件模板中。组件模板必须遵循数据流命名方案,并以 @custom 结尾

<type>-<dataset>-<namespace>@custom

例如,要为命名空间为 productionsystem.network 数据流创建自定义索引设置,组件模板名称将为

metrics-system.network-production@custom
  1. 导航至堆栈管理 > 索引管理 > 组件模板
  2. 单击创建组件模板
  3. 使用上面的模板设置名称——在这种情况下,为 metrics-system.network-production@custom。单击下一步
  4. 索引设置下,在 lifecycle.name 键下设置 ILM 策略名称

    {
      "lifecycle": {
        "name": "90-days-default"
      }
    }
  5. 继续至查看并确保您的请求看起来与下面的图像类似。如果相似,请单击创建组件模板

    Create component template

步骤 3:克隆并修改现有索引模板

编辑

现在您已经创建了一个组件模板,您需要创建一个索引模板以将更改应用于正确的数据流。最简单的方法是复制并修改集成现有的索引模板。

复制索引模板时,请勿更改或删除任何托管属性。这可能会在升级时导致问题。

  1. 导航至堆栈管理 > 索引管理 > 索引模板
  2. 找到您要克隆的索引模板。索引模板的名称中将包含 <type><dataset>,但不包含 <namespace>。在本例中,它是 metrics-system.network
  3. 选择操作 > 克隆
  4. 将新索引模板的名称设置为 metrics-system.network-production
  5. 更改索引模式以包含命名空间——在本例中为 metrics-system.network-production*。这确保了先前创建的组件模板仅应用于 production 命名空间。
  6. 将优先级设置为 250。这确保了新的索引模板优先于与索引模式匹配的其他索引模板。
  7. 组件模板下,搜索并添加在上一步中创建的组件模板。为了确保您的特定于命名空间的设置覆盖其他自定义设置,新模板应添加到现有 @custom 模板下方。
  8. 创建索引模板。
Create index template

步骤 4:滚动数据流(可选)

编辑

要确认数据流现在正在使用新的索引模板和 ILM 策略,您可以重复第一步,或者导航至开发工具并运行以下命令

GET /_data_stream/metrics-system.network-production 

我们一直在研究的数据流的名称

结果应包括以下内容

{
  "data_streams" : [
    {
      ...
      "template" : "metrics-system.network-production", 
      "ilm_policy" : "90-days-default", 
      ...
    }
  ]
}

在第三步中创建的自定义索引模板的名称

在第二步中应用于新组件模板的 ILM 策略的名称

新的 ILM 策略仅在创建新索引时生效,因此您必须等待滚动发生(通常在 30 天后或索引大小达到 50 GB 时),或者使用Elasticsearch 滚动 API强制滚动

POST /metrics-system.network-production/_rollover/

更新在 Elasticsearch 8.13 之前克隆的索引模板

编辑

如果您克隆了索引模板以自定义 Elasticsearch 8.13 之前版本的数据保留策略,则必须更新克隆的索引模板,以便在 Elasticsearch 8.13 或更高版本上添加 ecs@mappings 组件模板。

要更新克隆的索引模板

  1. 导航至堆栈管理 > 索引管理 > 索引模板
  2. 找到您克隆的索引模板。索引模板的名称中将包含 <type><dataset>
  3. 选择管理 > 编辑
  4. 选择(2) 组件模板
  5. 搜索组件模板字段中,搜索 ecs@mappings
  6. 单击+(加号)图标以添加 ecs@mappings 组件模板。
  7. ecs@mappings 组件模板移动到 @package 组件模板的正下方。
  8. 保存索引模板。

滚动数据流以应用更改。