Если уровень выборки трассировок в вашем Service Mesh установлен слишком низко, вы можете видеть данные трассировок только при достаточном объёме запросов.
Вы можете увеличить уровень выборки в зависимости от ваших потребностей.
При запросе данных трассировки за недавний период (например, за последние 30 минут), если результаты трассировки не включают данные за последние 10 секунд, это нормально. Вы можете подождать немного и обновить страницу, чтобы попробовать снова.
Это связано с тем, что данные трассировки хранятся в Elasticsearch, который обеспечивает поиск с близкой к реальному времени задержкой.
Кроме того, ASM настраивает индекс трассировок в Elasticsearch с параметром по умолчанию "refresh_interval": "10s"
, что означает, что Elasticsearch обновляет данные из памяти на диск каждые 10 секунд, после чего данные становятся доступными для поиска.
Эта конфигурация индекса эффективно снижает нагрузку на слияние данных в Elasticsearch, улучшая скорость индексирования и начальную производительность запросов, но немного снижает актуальность данных в реальном времени.
Вы можете изменить эту настройку с помощью параметра запуска --es.asm.index-refresh-interval
для jaeger-collector
. Значение по умолчанию — 10s
.
Если этот параметр установлен в "null"
, параметр refresh_interval
для индекса не будет настроен.
При выполнении запросов трассировок, если технические принципы параметра Span kind
недостаточно понятны, это может привести к отсутствию возвращаемых данных. Поэтому не рекомендуется использовать этот параметр произвольно. Особенно если указаны одновременно Client
и Server
, это может привести к пустым результатам запроса.
Span kind
установлен в Root Span
с указанием и Client
, и Server
В этом случае запрос вернёт пустой результат. Причина в том, что когда и клиент, и сервер управляются OTel Agent, корневой спан трассировки обычно находится на стороне клиента, и данные сервера не будут получены. Чтобы решить проблему, удалите условие Server
или не выбирайте Root Span
.
Span kind
установлен в Service Entry Span
с указанием и Client
, и Server
Аналогично, этот запрос также вернёт пустой результат. Причина в том, что когда и клиент, и сервер имеют Sidecar, Service Entry Span
относится к первому запросу, полученному сервером, но данные трассировки хранятся на стороне клиента. Чтобы решить проблему, удалите условие Client
или не выбирайте Service Entry Span
.
При запросе данных трассировки за недавний период (например, за последние 30 минут), если спаны внутри трассировок неполные, это нормально. Вы можете подождать немного и обновить страницу, чтобы попробовать снова.
Это происходит потому, что в момент обновления Elasticsearch последних спанов на диск некоторые спаны могут ещё не быть сгенерированы или записаны на диск, что приводит к неполным результатам трассировки.
Если запрошенные трассировки имеют длительную продолжительность (например, более часа), может быть возвращена неполная информация, что является нормальным.
По умолчанию, когда ASM запрашивает трассировки для спана, временной диапазон расширяется на один час до и после времени начала и окончания спана.
Например, если спан начинается в 08:12:30 и заканчивается в 08:12:32 , временной диапазон запроса для этой трассировки будет с 07:12:30 до 09:12:32 .
Таким образом, если трассировка длится более часа, запрос по этому спану может не вернуть полную трассировку.
Если в вашей среде трассировки обычно имеют более длительную продолжительность, вы можете настроить временной диапазон запроса для отдельных трассировок с помощью параметра запуска --es.asm.span-trace-query-time-adjustment-hours
для jaeger-query
.
Значение по умолчанию для этого параметра — один час, но вы можете увеличить его при необходимости.