Я пытаюсь добавить дополнительные атрибуты в свои интервалы OpenTelemetry, я запускаю Spring Boot (3.3.4) с включенным типом веб-приложения: реактивный.
Мне нужно добавить определенные предопределенные атрибуты, а также нужно реагировать на определенные входящие заголовки, добавляя атрибуты в текущий диапазон в зависимости от их значения.
Но на данный момент это единственный способ я могу добавлять атрибуты, используя CustomSpanProcessor, но я могу заставить этот подход работать только для предварительно определенных атрибутов, поскольку я не могу добавить информацию, специфичную для запроса доступа (например, RequestContextHolder недоступен) .
@Component
public class CustomSpanProcessor implements SpanProcessor {
@Override
public void onStart(Context parentContext, ReadWriteSpan span) {
span.setAttribute("customAttribute", "value"))
}
//other interface methods...
}
Я пытался получить информацию, специфичную для запроса, в процессоре с помощью WebFilter.
public class TracingRequestFilter implements WebFilter {
Map attr = Map.of("dynamicAttribute", getValue(exhange));
return chain.filter(exchange)
.contextWrite(reactor.util.context.Context.of(WEB_REQUEST_ATTRIBUTES, attr));
}
И затем доступ к нему в onStart CustomProcessor
@Component
public class CustomSpanProcessor implements SpanProcessor {
@Override
public void onStart(Context parentContext, ReadWriteSpan span) {
Mono.deferContextual(ctx -> {
Map attributes = ctx.get(TracingRequestFilter.WEB_REQUEST_ATTRIBUTES);
attributes.forEach((s, o) -> span.setAttribute(s, o.toString()));
return Mono.empty();
}).subscribeOn(Schedulers.boundedElastic())
.subscribe(); // as i'm not allowed to block the thread..
}
//other interface methods...
}
Подробнее здесь: https://stackoverflow.com/questions/791 ... ux-applica
Как я могу добавить атрибуты диапазона, специфичные для запроса, для запросов в приложении WebFlux ⇐ JAVA
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение