Мы создаем веб-приложение с использованием Micronaut ( v1.2.0 ), которое будет развернуто в кластере Kubernetes (мы используем Istio в качестве сервисной сетки).
Мы хотели бы обработать вызовы критических методов, чтобы они могли генерировать свои собственные промежутки в контексте диапазона HTTP-запроса. Для этого мы используем поддержку Micronaut OpenTracing и интеграцию Jaeger.
Следующие зависимости включены в pom.xml
...
<dependency>
<groupId>io.micronaut</groupId>
<artifactId>micronaut-tracing</artifactId>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>io.jaegertracing</groupId>
<artifactId>jaeger-thrift</artifactId>
<scope>runtime</scope>
</dependency>
...
Реализован метод Filter с @ContinueSpan
(также пробовалто же самое с @NewSpan
), как показано ниже
@Filter("/**")
public class TraceTestFilter implements HttpServerFilter {
@Override
public Publisher<MutableHttpResponse<?>> doFilter(
HttpRequest<?> request, ServerFilterChain chain) {
return testMethodTracing(request, chain);
}
@ContinueSpan
public Publisher<MutableHttpResponse<?>> testMethodTracing(
HttpRequest<?> request, ServerFilterChain chain) {
// Details ommitted here
}
}
В application-k8s.yml
поддерживается следующее (также есть application.yml
с теми же настройками)
---
tracing:
jaeger:
enabled: true
sampler:
probability: 1
sender:
agentHost: jaeger-agent.istio-system
agentPort: 5775
Однако мывидеть только записи трассировки, сгенерированные Istio (прокси Envoy), но мы не видим детали вызовов самого метода.
Есть идеи, что здесь может пойти не так?