Невозможно выполнить запрос требуемого трассирования

Содержание

Описание проблемы

При выполнении запроса трассирования в сервисной сетке могут возникать ситуации, когда целевое трассирование не удаётся получить.

Анализ первопричин

1. Слишком низкий уровень выборки трассирования

Если параметр уровня выборки для трассирования установлен слишком низко, система будет собирать данные трассирования пропорционально. В периоды недостаточного объёма запросов или в часы низкой нагрузки это может привести к тому, что выборочные данные окажутся ниже порога видимости.

2. Ограничения Elasticsearch по времени обновления

По умолчанию для индекса Elasticsearch задан параметр "refresh_interval": "10s", что приводит к задержке в 10 секунд перед обновлением данных из буфера памяти в состояние, доступное для поиска. При запросе недавно сгенерированного трассирования результаты могут отсутствовать, так как данные ещё не были сохранены.

Эта конфигурация индекса эффективно снижает нагрузку на слияние данных в Elasticsearch, улучшая скорость индексирования и скорость первого запроса, но в то же время снижает степень актуальности данных в реальном времени.

Решение для первопричины 1

  • Соответственно увеличить уровень выборки в зависимости от требований.
  • Использовать более продвинутые методы выборки, например, tail sampling.

Решение для первопричины 2

Настроить интервал обновления через параметр запуска --es.asm.index-refresh-interval у jaeger-collector, значение по умолчанию — 10s.

Если значение этого параметра установить в "null", конфигурация refresh_interval для индекса не будет применяться.

Примечание: Установка значения в "null" повлияет на производительность и скорость запросов Elasticsearch.