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