, поэтому я играю с Jaeger и OpenTracing, чтобы отслеживать запросы между моими микросервисами Spring Boot. Я настроил все необходимые конфигурации и добавил зависимость:
<dependency>
<groupId>io.opentracing.contrib</groupId>
<artifactId>opentracing-spring-jaeger-web-starter</artifactId>
<version>2.0.3</version>
</dependency>
Пока все работает нормально. Я вижу все следы и пролеты в моем Jaeger UI, никаких проблем.
Но теперь у меня есть задача добавить новые промежутки к указанной c трассе, которая уже завершена. Думайте об этом так. Клиент вызывает одну из служб, и начинается отслеживание. После того, как работа сделана, я вижу след в моем пользовательском интерфейсе Jaeger. Но теперь вызывающие клиенты хотят добавить некоторые дополнительные данные трассировки в указанную c трассировку. Как и отслеживание информации из других служб, которые не входят в сферу моих микросервисов. Я добавил фильтр, чтобы можно было извлечь идентификатор трассировки и отправить его клиенту. Теперь клиент выполняет запрос, содержащий дополнительную информацию о трассировке и идентификатор трассировки. Затем эту информацию следует добавить в качестве дополнительного отрезка в уже законченную трассировку.
Теперь к моему вопросу. Есть ли способ создать диапазон и добавить его к трассе, используя только идентификатор трассы в виде строки?
Я попробовал Zipkin, и я мог бы просто сделать:
Span span = new SpanBuilder()
.name(someName)
.traceId(traceId)
.parentId(traceId)
.id(someId)
.kind(Kind.CLIENT)
.build()
Этот промежуток можно затем добавить, выполнив POST-запрос к моему zipkin-серверу через порт 9411, который выполнил magi c добавления этого промежутка к трассе с заданным идентификатором.
Используя OpenTracing, я могу сделать:
Span span = tracer.buildSpan(someName)
.asChildOf(**traceSpan**)
.withStartTimestamp(someTime)
.ignoreActiveSpan()
.start();
К сожалению, для этого подхода требуется трассировка в форме промежутка для создания нового промежутка. как дитя этого следа. Учитывая тот факт, что я могу предоставить только идентификатор трассы, я не знаю, как получить необходимый диапазон этой трассы. Мне действительно нужно позвонить на мой Jaeger-запрос, чтобы получить необходимый диапазон трассировки, или есть другой подход, о котором я не думал?
Действительно хотел бы получить некоторую помощь по этому вопросу.
Ура!