Клиент один, нам повезло, также использует Springboot 3+. Как по волшебству, Springboot способен «распространять», «продолжать» трассировку от клиентской.
Мы можем увидеть что-то вроде этого:

Однако есть еще и второй клиент. Они добавляют информацию для отслеживания в свой собственный заголовок.
В нашем серверном приложении мы можем видеть таможенные заголовки
Код: Выделить всё
headers.forEach((key, value) -> {
System.out.printf("Header '%s' = %s%n", key, value);
});
2024-12-10T00:00 [innertrace,,] INFO 8110 --- [innertrace] [nio-8081-exec-2] [490bdd15c3a1337b6477c965883d1ced-34af6c6a1075a0c6] com.example.innertrace.HelloController : How many header? 10
Header 'ot-custom-traceid' = 8f7ebd8a73f9a8f50e6a00a87a20952a
Header 'ot-custom-spanid' = 1b08f18b8858bb9a
Header 'content-type' = application/json
Проблемы :
- В этом примере клиент отправляет нам 8f7ebd8a73f9a8f50e6a00a87a20952a 1b08f18b8858bb9a, но мы не можем их получить.
- Наше приложение создаст новые трассировки в журнале 490bdd15c3a1337b6477c965883d1ced 34af6c6a1075a0c6
- мы не можем видеть трассировку клиента в наблюдаемости системах, но отслеживает только новые ошибки.
Хотя у нас есть сквозная информация о первом клиенте -> информация о трассировке сервера, мы теряем информацию для второго клиента. Для второго клиента мы видим только информацию со стороны сервера.
Поскольку мы используем Springboot 3.4+, нам хотелось бы, если это возможно, избежать добавления зависимостей от старого Spring Cloud Seuth.
Вопрос, как продолжить или распространить трассировки, отправленные из пользовательских заголовков, отправленных клиентом?
Подробнее здесь: https://stackoverflow.com/questions/792 ... headers-in
Мобильная версия