Распределенная трассировка Istio с Jaeger не работает

Я пытаюсь настроить локальный кластер K8S и на minikube с установленным istio и у меня есть проблема с включением распределенной трассировки с Jaeger. У меня 3 микросервиса A -> B -> C, Я распространяю все заголовки, которые необходимы:

{"x-request-id", "x-b3-traceid", "x-b3-spanid", "x-b3-parentspanid", "x-b3-sampled", "x-b3-flags", "x-ot-span-context"}

Но на интерфейсе Jaeger я могу видеть только запрос к сервису A и не могу видеть запрос к сервису B.

Я зарегистрировал заголовки, которые отправляются в запросе. Заголовки из сервиса A:

Header - x-request-id: c2804368-2ff0-9d90-a2aa-972537968924
Header - x-b3-traceid: 3a2400b40bbe5ed8
Header - x-b3-spanid: 3a2400b40bbe5ed8
Header - x-b3-parentspanid: 
Header - x-b3-sampled: 1
Header - x-b3-flags: 
Header - x-ot-span-context: 

Заголовки из сервиса B:

Header - x-request-id: c2804368-2ff0-9d90-a2aa-972537968924
Header - x-b3-traceid: 3a2400b40bbe5ed8
Header - x-b3-spanid: 3a2400b40bbe5ed8
Header - x-b3-parentspanid:
Header - x-b3-sampled: 1
Header - x-b3-flags:
Header - x-ot-span-context:

Итак x-request-id, x-b3-traceid, x-b3-sampled, а также x-b3-spanid соответствующие два. Есть некоторые заголовки, которые не установлены. Кроме того, я получаю доступ к службе A через IP-адрес службы k8s типа LoadBalancer, а не через вход. Не знаю, может ли это быть проблемой.

UPD: у меня настроен istio gateway, так что теперь я получаю доступ к сервису A через шлюз istio. Однако результат тот же, я вижу след для gateway->A но никакой дальнейшей трассировки

1 ответ

Решение

Некоторые веб-фреймворки возвращают пустую строку, если запрашивается несуществующий заголовок. Я видел это в Spring Boot и KoaJS.

Если какой-либо из заголовков трассировки не отправляется Istio, эта логика заголовка заставляет нас отправлять пустую строку для тех несуществующих заголовков, которая прерывает трассировку.

Я предлагаю после получения значений для заголовков отфильтровать значения с пустой строкой в ​​качестве своих значений и распространить оставшиеся.

Другие вопросы по тегам