Opentelemetry с opentracing, отправляющим следы в jaegerJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Opentelemetry с opentracing, отправляющим следы в jaeger

Сообщение Anonymous »

Многие сервисы переходят один за другим на Java 21 и Spring Boot 3.5.
Это означает, что не все сервисы будут переведены на более новые версии одновременно.
От Openracing отказались уже много лет
https://github.com/opentracing-contrib/ ... ing-jaeger. В результате он несовместим с Java 21 и Spring Boot 3.5. Рекомендуется перейти на Micrometer и Opentelemetry.
Предположим, что приложение -api находится на Opentracing и имеет следующую конфигурацию:

Код: Выделить всё

opentracing:
spring:
web:
ignoreAutoConfiguredSkipPatterns: true
jaeger:
service-name: ${spring.application.name}
enabled: true
enable-b3-propagation: true
probabilistic-sampler:
sampling-rate: 0.1  # 10% sampling
http-sender:
url: http://${JAEGER_HOST}:14268/api/traces
-api перенаправляет запросы в приложение -srv, которое обновляется до Micrometer и Opentelemetry со следующей конфигурацией:

Код: Выделить всё

management:
tracing:
enabled: true
propagation:
type: b3_multi
sampling:
probability: 0.1
otlp:
tracing:
endpoint: http://${JAEGER_HOST}:4317
transport: grpc

otel:
propagators: [b3multi]
resource:
attributes:
service:
name: ${spring.application.name}
traces:
sampler: custom
Основные проблемы:
  • В трассировке находятся диапазоны, связанные с безопасностью: цепочка фильтров безопасности до, аутентификация токена-носителя, запрос авторизации, защищенный запрос, цепочка фильтров безопасности после. Я не вижу никакой пользы от их наличия. Может быть удалено?
  • Нет следов БД. С помощью Opentracing можно увидеть всю трассировку служб до запроса к БД. В подходе Opentelemetry такого промежутка нет. Возможно, что-то настроено неправильно, но это все равно вызывает беспокойство.
  • Код: Выделить всё

    X-B3-Sampled: 1
    не создавая никаких следов. Вы можете увидеть трассировки только при настройке Management.tracing.sampling.probability: 1.0. Однако я хочу оставить значение 0,1 и принудительно выполнить трассировку с использованием значения заголовка, упомянутого выше. Есть несколько конфигураций, пытающихся это исправить com.example.tracing.modern.configuration.TracingConfig.
  • При использовании Opentracing при возникновении ошибки я видел значок предупреждения рядом с интервалом. Сейчас оно не отображается. Конфиг пытается это исправить com.example.tracing.modern.configuration.JaegerErrorTagFilter. К сожалению, поведение не такое, как ожидалось (мне бы хотелось иметь значки по всей цепочке).
Я новичок в трассировке и могу что-то неправильно настроить или даже иметь больше конфигураций, чем необходимо.
Я подготовил "работающий" пример для воспроизведения:
https://github.com/OlegZavrazhin/jaeger ... pentracing
Как начать:

Код: Выделить всё

docker-compose up --build
Тестовые запросы, просто запустите:

Код: Выделить всё

test-endpoints.sh
он выведет следы, которые вы можете проверить в пользовательском интерфейсе jaeger http://localhost:16686/search
Спросите меня, если вам нужно что-то уточнить.
P.S. Я гуглил и читал различные документы, пробовал несколько подходов, но безуспешно. Буду признателен за любые образцы и руководства.

Подробнее здесь: https://stackoverflow.com/questions/798 ... -to-jaeger
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»