Elasticsearch

简介

WARNING

支持的 ES 版本:8.x

Elasticsearch 版本会自动从 root/ping 端点获取。Jaeger 会根据此版本使用兼容的索引映射和 Elasticsearch REST API。也可以通过 version: 配置属性显式指定版本。

Elasticsearch 除了安装并运行之外不需要进行初始化。启动后,将正确的配置值传递给 Jaeger。

配置

Jaeger Elasticsearch 后端的示例配置位于 Jaeger repository 中:config-elasticsearch.yaml。未来,配置文档将根据 schema 自动生成。在此期间,请参考 config.go,它是权威来源。

分片和副本

分片和副本是需要特别关注的一些配置值,因为这些值会在创建索引时确定。本文详细介绍了如何选择分片数量以实现优化。

索引滚动

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:

nerdctl run -it --rm --net=host \
  build-harbor.alauda.cn/asm/jaeger-es-rollover:2.16.0-r1 \
  init http://localhost:9200

如果需要初始化归档存储,请添加 -e ARCHIVE=true。

初始化完成后,可以使用 use_aliases: true 部署 Jaeger。

ILM 支持

Elasticsearch ILM 会根据性能、弹性和保留要求自动管理索引。

ILM 支持是手动 rollover + lookback + index-cleaner 工作流的替代方案。启用 ILM 后,Elasticsearch 会根据配置的策略自动管理 rollover 和保留。

例如:

  • 按大小(字节数或文档数)或存留时间滚动到新索引,并归档之前的索引
  • 删除过期索引,以强制执行数据保留标准

启用 ILM 支持:

  1. 在 Elasticsearch 中创建名为 jaeger-ilm-policy 的 ILM 策略。

    例如,以下策略会在“active”索引超过 1m 后执行 rollover,并删除超过 2m 的索引。

    curl -X PUT \
      http://localhost:9200/_ilm/policy/jaeger-ilm-policy \
      -H 'Content-Type: application/json; charset=utf-8' \
      --data-binary @- << EOF
    {
      "policy": {
        "phases": {
          "hot": {
            "min_age": "0ms",
            "actions": {
              "rollover": {
                "max_age": "1m"
              },
              "set_priority": {
                "priority": 100
              }
            }
          },
          "delete": {
            "min_age": "2m",
            "actions": {
              "delete": {}
            }
          }
        }
      }
    }
    EOF
  2. 使用 ES_USE_ILM=true 运行 Elasticsearch initializer:

    nerdctl run -it --rm --net=host \
      -e ES_USE_ILM=true \
      build-harbor.alauda.cn/asm/jaeger-es-rollover:2.16.0-r1 \
      init http://localhost:9200

    如果需要初始化归档存储,请添加 -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。