Elasticsearch
Введение
Поддерживаемые версии 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, создавая алиасы индексов, сами индексы и шаблоны индексов:
Если требуется инициализировать archive storage, добавьте -e ARCHIVE=true.
После инициализации Jaeger можно развернуть с use_aliases: true.
Поддержка ILM
Elasticsearch ILM автоматически управляет индексами в соответствии с требованиями к производительности, отказоустойчивости и хранению данных.
Поддержка ILM — это альтернатива ручному рабочему процессу rollover + lookback + index-cleaner. Когда ILM включен, Elasticsearch автоматически управляет rollover и хранением данных в соответствии с заданной политикой.
Например:
- Выполнять rollover на новый индекс по размеру (в байтах или количеству документов) либо по возрасту, архивируя предыдущие индексы
- Удалять устаревшие индексы для соблюдения стандартов хранения данных
Чтобы включить поддержку ILM:
-
Создайте в Elasticsearch ILM policy с именем
jaeger-ilm-policy.Например, следующая policy будет выполнять rollover для "active" индекса, когда его возраст превысит 1m, и удалять индексы, которым больше 2m.
-
Запустите инициализатор Elasticsearch с
ES_USE_ILM=true:Если требуется инициализировать 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.