128-битный идентификатор трассировки на PCF - PullRequest
0 голосов
/ 27 ноября 2018

Я пытаюсь использовать 128-битный сгенерированный Sleuth TraceId в качестве уникального идентификатора для запроса на мой контроллер.Я понимаю, что по умолчанию traceId равен 64, и чтобы изменить его, я должен добавить следующее в application.properties :

spring.sleuth.trace-id128=true

Это работает на моем локальном компьютере, но когда я его развертываюдля PCF идентификатор трассировки составляет 64 бита.Я создал пример проекта, в котором есть только простой контроллер, чтобы продемонстрировать это.

@RestController
public class Controller {
    private Logger logger = LoggerFactory.getLogger(Controller.class);
    @Autowired
    private Tracer tracer;
    @GetMapping("/")
    public void test(){
        logger.info("LOGGED +["+tracer.currentSpan().context().traceIdString()+"]");
    }
}

В моем регионе он напечатает:

com.example.demo.Controller: LOGGED + [5bfcb33c9d564481479f2c212ec08143]

В PCF, он печатает:

om.example.demo.Controller : LOGGED + [97a1168857dc7088]

Перезаписывает ли PCF эту конфигурацию?

Обновления

Включено "X-B3-TraceId "и" X-B3-SpanId "в моем запросе, а traceId теперь 128-битный, но не совпадает со строкой, указанной в заголовке запроса.

Подробности из журнала

1 Ответ

0 голосов
/ 28 ноября 2018

Возможно, что PCF, а точнее Gorouter, создает идентификатор трассировки, который распространяется в ваше приложение, которое вместо создания нового 128-битного идентификатора трассировки повторно использует существующий 64-битный идентификатор трассировки.

PCF поддерживает Zipkin Tracing, и он включен по умолчанию, поэтому он включен в большинстве сред.

https://docs.pivotal.io/pivotalcf/2-3/adminguide/zipkin_tracing.html

Согласно документации, Gorouter проверит наличиеналичие заголовков Zipkin для входящих запросов и, если они отсутствуют, создаст их.

Если в запросе отсутствуют HTTP-заголовки X-B3-TraceId и X-B3-SpanId, то Gorouterгенерирует для них значения и вставляет заголовки в запрос, пересылаемый приложению.

и

Если HTTP-заголовки X-B3-TraceId и X-B3-SpanIdприсутствуют в запросе, Gorouter перенаправляет их без изменений.

https://docs.pivotal.io/pivotalcf/2-3/concepts/http-routing.html#zipkin-headers

Здесь вы можете видеть, что он создает 64-битный идентификатор трассировки.

https://github.com/cloudfoundry/gorouter/blob/master/handlers/zipkin.go#L49-L57

Вы можете подтвердить, отправив запрос с установленными заголовками X-B3-TraceId и X-B3-SpanId.В этом случае Гороутер должен переслать их по неизмененному.

Пример: curl -v -H 'X-B3-TraceId: 5bfcb33c9d564481479f2c212ec08143' -H X-B3-SpanId: 5bfcb33c9d564481479f2c212ec08143' https://your-cool-app.com/test.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...