Elasticsearch
简介
支持的 ES 版本:8.x
Elasticsearch 版本会自动从 root/ping 端点获取。基于该版本,Jaeger 会使用兼容的索引映射和 Elasticsearch REST API。也可以通过 version: 配置属性显式指定版本。
除了安装并运行 Elasticsearch 之外,Elasticsearch 不需要其他初始化操作。运行起来后,将正确的配置值传递给 Jaeger。
配置
Jaeger 中使用 Elasticsearch 后端的示例配置可在 Jaeger 仓库中找到:config-elasticsearch.yaml。未来配置文档将根据 schema 自动生成。在此之前,请参考 config.go 作为权威来源。
分片和副本
分片和副本是需要特别注意的配置值,因为这些是在创建索引时决定的。本文 详细介绍了应如何选择分片数量以进行优化。
Index Rollover
Elasticsearch rollover 是一种索引管理策略,可优化分配给索引的资源使用。例如,不包含任何数据的索引仍会分配分片;相反,单个索引可能包含远多于其他索引的数据。可以通过 use_aliases: true 配置属性启用 rollover 功能。
Rollover 允许你根据以下一个或多个条件配置何时切换到新索引:
max_age- 索引的最大年龄。它使用 时间单位:d、h、m。max_docs- 索引中的最大文档数。max_primary_shard_size- 单个主分片的最大大小。它使用 字节大小单位tb、gb、mb。
要了解有关 Jaeger 中 rollover 索引管理的更多信息,请参阅这篇 文章。
初始化
下面的命令会通过创建索引别名、索引和索引模板,为 rollover 部署准备 Elasticsearch:
如果你需要初始化归档存储,请添加 -e ARCHIVE=true。
初始化完成后,即可使用 use_aliases: true 部署 Jaeger。
ILM 支持
Elasticsearch ILM 会根据性能、可靠性和保留要求自动管理索引。
ILM 支持是手动 rollover + lookback + index-cleaner 工作流的替代方案。启用 ILM 后,Elasticsearch 会根据配置的策略自动管理 rollover 和保留。
例如:
- 按大小(字节数或文档数)或按时间将数据 rollover 到新索引,并归档旧索引
- 删除过期索引以满足数据保留标准
启用 ILM 支持:
-
在 Elasticsearch 中创建一个名为
jaeger-ilm-policy的 ILM 策略。例如,下面的策略会在“active”索引超过 1m 时执行 rollover,并删除超过 2m 的索引。
-
使用
ES_USE_ILM=true运行 Elasticsearch 初始化程序:如果你需要初始化归档存储,请添加
-e ARCHIVE=true。WARNING在启用 ILM 支持进行初始化时,请确保已提前在 Elasticsearch 中创建名为
jaeger-ilm-policy的 ILM 策略(见上一步),否则会显示如下错误信息:"ILM policy jaeger-ilm-policy doesn't exist in Elasticsearch. Please create it and rerun init"
初始化完成后,使用 use_ilm: true 和 use_aliases: true 部署 Jaeger。