Как настроить istio-proxy для регистрации traceId?

Я использую istio версии 1.3.5. Есть ли какая-либо конфигурация, позволяющая istio-proxy регистрировать traceId? Я использую трассировку jaeger (с включенным протоколом zipkin). Есть одна вещь, которую я хочу достичь с помощью ведения журнала traceId: корреляция журналов в нескольких вышестоящих службах. В основном я могу фильтровать все журналы по определенному идентификатору трассировки.


person Agung Pratama    schedule 03.01.2020    source источник


Ответы (1)


Согласно документации прокси-сервера envoy для envoy v1.12.0 используется istio 1.3:

Распространение контекста трассировки

Envoy предоставляет возможность сообщать информацию об отслеживании связи между сервисами в ячеистой сети. Однако, чтобы иметь возможность сопоставлять фрагменты информации трассировки, сгенерированные различными прокси-серверами в потоке вызовов, службы должны распространять определенный контекст трассировки между входящими и исходящими запросами.

Какой бы поставщик трассировки ни использовался, служба должна распространять x-request-id, чтобы разрешить корреляцию журналов между вызываемыми службами.

Поставщикам трассировки также требуется дополнительный контекст, чтобы можно было понять родительские и дочерние отношения между диапазонами (логическими единицами работы). Этого можно добиться, используя LightStep (через OpenTracing API) или трассировщик Zipkin непосредственно в самой службе, чтобы извлечь контекст трассировки из входящего запроса и внедрить его во все последующие исходящие запросы. Этот подход также позволит службе создавать дополнительные промежутки, описывающие работу, выполняемую внутри службы, что может быть полезно при анализе сквозной трассировки.

В качестве альтернативы контекст трассировки может быть передан службой вручную:

  • При использовании трассировщика LightStep Envoy полагается на службу для распространения x-ot-span-context HTTP-заголовок при отправке HTTP-запросов другим службам.

  • При использовании трассировщика Zipkin Envoy полагается на службу для распространения заголовков HTTP B3 ( x-b3-traceid, x-b3-spanid, x-b3-parentspanid, x-b3-sampled и x-b3-flags). x-b3-sampled также может быть предоставлен внешним клиентом для включения или отключения трассировки для конкретного запроса. Кроме того, единственный b3 поддерживается формат распространения заголовка, который является более сжатым форматом.

  • При использовании трассировщика Datadog Envoy полагается на службу для распространения заголовков HTTP, характерных для Datadog ( x-datadog-trace-id, x-datadog-parent-id, x-datadog-sampling-priority).


TLDR: заголовки traceId необходимо вручную добавить в заголовки HTTP B3.

Дополнительная информация: https://github.com/openzipkin/b3-propagation

person Piotr Malec    schedule 03.01.2020
comment
Спасибо @piotr-malec Whichever tracing provider is being used, the service should propagate the x-request-id to enable logging across the invoked services to be correlated. Это в основном отвечает на мой вопрос, как я понял, по умолчанию у envoy/istio-proxy есть accessLog, который содержит значение x-request-id. - person Agung Pratama; 04.01.2020