service1 -> очередь aws sqs -> service2
Авто. распространение контекста не работает с aws sqs и aws sdk v2 atm (https://github.com/open-telemetry/opent ... ssues/3684), хотя AwsTraceHeader фактически установлен в сообщении sqs, я об этом нужно явно позаботиться с помощью
[*]service1: запись идентификатора трассировки в пользовательский атрибут сообщения sqs
Код: Выделить всё
traceId=Span.current().getSpanContext().getTraceId()
< /ul>
Однако теперь неясно, как на самом деле перезаписать span.traceId в диапазоне, созданном сервисом2, что сбивает с толку, потому что, например, с Golang это кажется простым: как создать диапазон opentelemetry из stringtraceid
Я вижу только геттеры, например. Span.current().getSpanContext().getTraceId()
но без методов установки или построения.
Обновление:
Даже создав новый диапазон и сделав его текущим (не уверен, что это идет в правильном направлении), трассировщик.spanBuilder не предлагает установщики для TraceId AFAIU)
Код: Выделить всё
@Inject
io.opentelemetry.api.trace.Tracer tracer;
Span consumeMessageSpan = tracer.spanBuilder("consumeMessage").startSpan();
consumeMessage.makeCurrent();
Этот фрагмент из официальной документации отеля выглядит многообещающе
Чтобы связать диапазоны из удаленных процессов, достаточно установить
Удаленный контекст в качестве родительского.
Код: Выделить всё
Span childRemoteParent = tracer.spanBuilder("Child").setParent(remoteContext).startSpan();
Любые подсказки, как это сделать ?
Подробнее здесь: https://stackoverflow.com/questions/726 ... -telemetry