APM 索引的索引生命周期管理
生命周期策略允许您在 APM 索引增长和老化时自动管理其生命周期。默认策略会应用于每个 APM 数据流,但您可以根据业务需求进行自定义。
在最新版本的 Elastic APM 中,集群由 索引生命周期管理 (ILM) 进行管理,以便为 APM 数据提供默认的数据保留设置,并允许自定义生命周期。
在 8.15.x 和 8.16.x 中创建的索引可能由 数据流生命周期 (DSL) 管理。更多详情请参见 APM 8.15 版本。默认情况下,在 8.17 中创建的新索引由 ILM 管理。更多详情请参见 APM 8.17 版本。如果您有由 DSL 管理的索引,您指定的任何自定义 DSL 设置将不会自动应用到由 ILM 管理的新索引。相反,您可以使用本指南在 ILM 中复制自定义 DSL 设置。
每个 APM 数据流都有自己的默认生命周期策略,包括删除定义和滚动更新(rollover)定义。
下表描述了每个 APM 数据流的删除定义。删除阶段会在满足时间阈值后永久移除索引。
| 数据流 | 删除时间 | 注意 |
|---|---|---|
traces-apm |
10 天 | 原始追踪事件数据 |
traces-apm.rum |
90 天 | 原始 RUM 追踪事件数据,用于 UI |
logs-apm.error |
10 天 | 错误事件数据 |
logs-apm.app |
10 天 | 日志事件数据 |
metrics-apm.app |
90 天 | 自定义应用程序特定指标 |
metrics-apm.internal |
90 天 | 通用系统指标和语言特定指标(例如 CPU 和内存使用情况) |
metrics-apm.service_destination_1m |
90 天 | 为应用程序 UI 提供支持的聚合事务指标 |
metrics-apm.service_destination_10m |
180 天 | 为应用程序 UI 提供支持的聚合事务指标 |
metrics-apm.service_destination_60m |
390 天 | 为应用程序 UI 提供支持的聚合事务指标 |
metrics-apm.service_summary_1m |
90 天 | 为应用程序 UI 提供支持的聚合事务指标 |
metrics-apm.service_summary_10m |
180 天 | 为应用程序 UI 提供支持的聚合事务指标 |
metrics-apm.service_summary_60m |
390 天 | 为应用程序 UI 提供支持的聚合事务指标 |
metrics-apm.service_transaction_1m |
90 天 | 为应用程序 UI 提供支持的聚合事务指标 |
metrics-apm.service_transaction_10m |
180 天 | 为应用程序 UI 提供支持的聚合事务指标 |
metrics-apm.service_transaction_60m |
390 天 | 为应用程序 UI 提供支持的聚合事务指标 |
metrics-apm.transaction_1m |
90 天 | 为应用程序 UI 提供支持的聚合事务指标 |
metrics-apm.transaction_10m |
180 天 | 为应用程序 UI 提供支持的聚合事务指标 |
metrics-apm.transaction_60m |
390 天 | 为应用程序 UI 提供支持的聚合事务指标 |
滚动更新(写入新索引)可防止单个索引变得过大,并可优化索引和搜索性能。当满足时间或大小指标之一时,就会发生滚动更新。
默认生命周期策略可能会在次要版本之间发生变化。由于索引管理应不断改进并适应新功能,因此这不被视为破坏性变更。
可以通过创建 *@custom 组件模板来定制数据流的映射和设置,这些组件模板由 Elasticsearch apm-data 插件创建的索引模板引用。为每个数据流配置自定义索引生命周期策略的最简单方法是编辑此模板。
本教程介绍了如何将自定义索引生命周期策略应用于 traces-apm 数据流。
Kibana 中的 Data Streams 视图向您展示数据流、索引模板和生命周期策略
从导航菜单打开 Index Management,或者使用 全局搜索框。
选择 Data Streams。
搜索
traces-apm以查看与 APM 追踪数据相关的所有数据流。在此示例中,我只有一个数据流,因为我仅使用了
default命名空间。如果您的设置包含多个命名空间,可能会有更多数据流。
- 从导航菜单打开 Lifecycle Policies 管理页面,或者使用 全局搜索框。
- 点击 Create policy。
为您的新策略命名;在本教程中,我选择了 custom-traces-apm-policy。根据您的喜好自定义策略,完成后点击 Save policy。
要将新的索引生命周期策略应用于 traces-apm-* 数据流,请编辑 <data-stream-name>@custom 组件模板。
点击 Component Template 标签页并搜索
traces-apm。选择
traces-apm@custom模板并点击 Manage → Edit。在 Index settings 下,设置在上一步中创建的 ILM 策略名称
{ "lifecycle": { "name": "custom-traces-apm-policy", "prefer_ilm": true } }继续前往 Review 并确保您的请求与下图类似。如果确认无误,请点击 Create component template。
要确认数据流现在正在使用新的索引模板和 ILM 策略,您可以重复 第一步,或者导航到 Dev Tools 并运行以下命令
GET /_data_stream/traces-apm-default
- 我们一直在处理的数据流名称,后面附加了您的 <namespace>
结果应包含以下内容
{
"data_streams" : [
{
...
"template" : "traces-apm-default",
"ilm_policy" : "custom-traces-apm-policy",
...
}
]
}
- 在第三步中创建的自定义索引模板的名称
- 在第二步中应用于新组件模板的 ILM 策略的名称
新的 ILM 策略仅在创建新索引时生效,因此您要么必须等待发生滚动更新(通常在 30 天后或索引大小达到 50 GB 时),要么使用 Elasticsearch 滚动更新 API 强制滚动更新
POST /traces-apm-default/_rollover/
还可以创建适用于各个命名空间的更精细的索引生命周期策略。此过程类似于本教程,但包括克隆原始索引模板并在克隆的模板中使用您创建的索引生命周期。
使用场景:仅在需要向数据流添加特定于命名空间的自定义设置时,才使用克隆的索引模板。
克隆索引模板具有极高的风险,因为当您升级到新产品版本时,克隆的模板不会自动更新。用户可能会发现由于使用的是克隆模板而不是最新模板,导致其配置过时。
使用克隆索引模板进行的任何自定义都必须在每次升级到新版本时重复进行。请勿编辑内置索引模板、添加额外的组件模板或更改模板顺序。干涉模板可能会打乱 APM 数据的处理方式。