• Русский
  • Elasticsearch

    Введение

    WARNING

    Поддерживаемые версии ES: 8.x

    Версия Elasticsearch автоматически определяется по эндпоинту root/ping. На основе этой версии Jaeger использует совместимые маппинги индексов и Elasticsearch REST API. Версию можно явно указать через свойство конфигурации version:.

    Elasticsearch не требует какой-либо инициализации, кроме установки и запуска Elasticsearch. После того как он запущен, передайте корректные значения конфигурации в Jaeger.

    Конфигурация

    Пример конфигурации Jaeger с backend на Elasticsearch доступен в репозитории Jaeger: config-elasticsearch.yaml. В будущем документация по конфигурации будет автоматически генерироваться из схемы. Пока что в качестве авторитетного источника используйте config.go.

    Шарды и реплики

    Шарды и реплики — это параметры конфигурации, к которым следует отнестись особенно внимательно, потому что они определяются при создании индекса. В этой статье приводится дополнительная информация о том, как выбрать оптимальное количество шардов.

    Rollover индекса

    Elasticsearch rollover — это стратегия управления индексами, которая оптимизирует использование ресурсов, выделенных для индексов. Например, индексы, не содержащие данных, все равно выделяют шарды, и наоборот, один индекс может содержать значительно больше данных, чем остальные. Возможность rollover можно включить с помощью свойства конфигурации use_aliases: true.

    Rollover позволяет настроить перевод на новый индекс на основе одного или нескольких следующих критериев:

    • max_age — максимальный возраст индекса. Использует единицы времени: d, h, m.
    • max_docs — максимальное количество документов в индексе.
    • max_primary_shard_size — максимальный размер одного primary shard. Использует единицы размера байт tb, gb, mb.

    Чтобы узнать больше об управлении индексами через rollover в Jaeger, см. эту статью.

    Инициализация

    Следующая команда подготавливает Elasticsearch к развертыванию с rollover, создавая алиасы индексов, сами индексы и шаблоны индексов:

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

    Если требуется инициализировать archive storage, добавьте -e ARCHIVE=true.

    После инициализации Jaeger можно развернуть с use_aliases: true.

    Поддержка ILM

    Elasticsearch ILM автоматически управляет индексами в соответствии с требованиями к производительности, отказоустойчивости и хранению данных.

    Поддержка ILM — это альтернатива ручному рабочему процессу rollover + lookback + index-cleaner. Когда ILM включен, Elasticsearch автоматически управляет rollover и хранением данных в соответствии с заданной политикой.

    Например:

    • Выполнять rollover на новый индекс по размеру (в байтах или количеству документов) либо по возрасту, архивируя предыдущие индексы
    • Удалять устаревшие индексы для соблюдения стандартов хранения данных

    Чтобы включить поддержку ILM:

    1. Создайте в Elasticsearch ILM policy с именем jaeger-ilm-policy.

      Например, следующая policy будет выполнять rollover для "active" индекса, когда его возраст превысит 1m, и удалять индексы, которым больше 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. Запустите инициализатор Elasticsearch с ES_USE_ILM=true:

      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

      Если требуется инициализировать archive storage, добавьте -e ARCHIVE=true.

      WARNING

      При инициализации с поддержкой ILM убедитесь, что заранее в Elasticsearch создана ILM policy с именем jaeger-ilm-policy (см. предыдущий шаг), иначе будет показано следующее сообщение об ошибке:

      "ILM policy jaeger-ilm-policy doesn't exist in Elasticsearch. Please create it and rerun init"

    После инициализации разверните Jaeger с use_ilm: true и use_aliases: true.