Трассировка задач в сельдерее 4.1.1 с использованием примера кода.Каждый работник запускает:
import logging
from jaeger_client import Config
import opentracing
def get_tracer(service="Vienna"):
config = Config(
config={
'sampler': {
'type': 'const',
'param': 1,
},
'logging': True,
},
service_name=service,
)
return config.initialize_tracer() or opentracing.global_tracer()
Когда я впервые запускаю задачи сельдерея и запускаю задачи, каждый работник получает трассировщик работ, и для каждого из них есть:
[2019-07-04 19:17:00,527: INFO/ForkPoolWorker-2] Initializing Jaeger Tracer with UDP reporter
[2019-07-04 19:17:00,546: INFO/ForkPoolWorker-2] opentracing.tracer initialized to <jaeger_client.tracer.Tracer object at 0x7f804d079c10>[app_name=SocketIOTask]
Любая запускаемая задачапосле того, как начальный получает глобальный трассировщик от Config.initialze_tracer
(который возвращает None
) и предупреждение журнала Jaeger tracer already initialized, skipping
.
Просмотр tcpdump на консоли показывает, что UDP-пакеты не отправляются, я думаю, что я получаю неинициализированный трассировщик по умолчанию, и он использует репортер noop.
Я перебралкод в opentracing и jaeger_client, и я не могу найти канонический способ обойти это.