首页 > 解决方案 > python opentracing with jaeger extract span 未使用微服务登录 UI

问题描述

我在我们的微服务系统中使用 jaeger 开放跟踪项目时遇到问题。我使用的配置如下。

        config = Config(
            config={
                'sampler': {
                    'type': 'const',
                    'param': 1,
                },
                'local_agent': {
                    'reporting_host': '127.0.0.1',
                },
                'logging': True,
            },
            service_name='DB - API',
            validate=True,
        )

        tracer = config.initialize_tracer()
        active_span_source = FixedActiveSpanSource()
        tracer_interceptor = open_tracing_client_interceptor(
            tracer,
            log_payloads=True,
            active_span_source=active_span_source)

痕迹的来源与此相同。

            with t.tracer.start_span('Request Post') 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}")
                span.log_kv({'event': 'Request Posted', 'life': 42})
                with t.tracer.start_span('GraphQl', child_of=span) as span2:
                    span2.log_kv({'event': 'Graphql Executed', 'life': 42})
                    carrier = {}
                    t.tracer.inject(span, Format.HTTP_HEADERS, carrier)
                    print(carrier)

这工作正常,并记录在 UI 中,并在下面打印结果。

Created span: trace_id:2b55203a8773aa14, span_id:77cceca94f4cfe74, parent_id:None, flags:1
{'uber-trace-id': '2b55203a8773aa14:77cceca94f4cfe74:0:1'}

但是,当我在另一个服务中提取 {'uber-trace-id': '2b55203a8773aa14:77cceca94f4cfe74:0:1'} 时,它说已按预期创建了一个新跨度,但 UI 中没有记录任何内容。

    carrier = {'uber-trace-id': '2b55203a8773aa14:77cceca94f4cfe74:0:1'}

    parentspan = t.tracer.extract(Format.HTTP_HEADERS, carrier)
    print(t.tracer.sampler)
    with t.tracer.start_span('TEST', child_of=parentspan) as span3:
        print(
            f"Created span: trace_id:{span3.trace_id:x}, span_id:{span3.span_id:x}, parent_id:{span3.parent_id:x}, flags:{span3.flags:x}")
        span3.log_kv({'event': 'test', 'life': 42})
        time.sleep(1)
        span3.log_kv({'event': 'test34', 'life': 43})
        time.sleep(30)

打印结果:

Created span: trace_id:2b55203a8773aa14, span_id:af7fef928ff1cd13, parent_id:77cceca94f4cfe74, flags:1

使用 Format.HTTP_HEADERS 和 Format.TEXT_MAP 是相同的结果。有谁知道为什么 UI 中没有记录任何内容以及如何解决这个问题?

提前致谢。

标签: pythonpython-3.xmicroservicesjaegeropentracing

解决方案


推荐阅读