получить идентификатор трассировки отправленного запроса - PullRequest
0 голосов
/ 14 мая 2019

Я использую библиотеку Open Tracing Python для GRPC и пытаюсь собрать пример сценария здесь: https://github.com/opentracing-contrib/python-grpc/blob/master/examples/trivial/trivial_client.py.

Как только я отправил запрос через перехваченный канал, как мне найти значение trace-id для запроса? Я хочу использовать это для просмотра отслеженных данных в пользовательском интерфейсе Jaeger.

Ответы [ 2 ]

1 голос
/ 13 июня 2019

Я пропустил ключевой документ.Чтобы получить идентификатор трассировки, вы должны создать диапазон на стороне клиента.Этот диапазон будет иметь идентификатор трассировки, который можно использовать для проверки данных в пользовательском интерфейсе Jaeger.Интервал должен быть добавлен в сообщения GRPC через экземпляр ActiveSpanSource.

# opentracing-related imports
from grpc_opentracing import open_tracing_client_interceptor, ActiveSpanSource
from grpc_opentracing.grpcext import intercept_channel
from jaeger_client import Config

# dummy class to hold span data for passing into GRPC channel
class FixedActiveSpanSource(ActiveSpanSource):

    def __init__(self):
        self.active_span = None

    def get_active_span(self):
        return self.active_span

config = Config(
    config={
        'sampler': {
            'type': 'const',
            'param': 1,
        },
        'logging': True,
    },
    service_name='foo')

tracer = config.initialize_tracer()

# ...
# In the method where GRPC requests are sent
# ...
active_span_source = FixedActiveSpanSource()
tracer_interceptor = open_tracing_client_interceptor(
    tracer,
    log_payloads=True,
    active_span_source=active_span_source)

with tracer.start_span('span-foo') as span:
    print(f"Created span: trace_id:{span.trace_id:x}, span_id:{span.span_id:x}, parent_id:{span.parent_id}, flags:{span.flags:x}")
    # provide the span to the GRPC interceptor here
    active_span_source.active_span = span
    with grpc.insecure_channel(...) as channel:
        channel = intercept_channel(channel, tracer_interceptor)

Конечно, вы можете изменить порядок операторов with, чтобы интервал создавался после канала GRPC.,Эта часть не имеет никакого значения.

0 голосов
/ 28 мая 2019

Поправь меня, если я ошибаюсь. Если вы имеете в виду, как найти идентификатор трассировки на стороне сервера, вы можете попытаться получить доступ к диапазону OpenTracing с помощью get_active_span . Я полагаю, что идентификатор трассировки должен быть одним из тегов в нем.

...