Мы создаем веб-приложение с использованием Micronaut (v1.2.0), которое будет развернуто в кластере Kubernetes (мы используем Istio в качестве service-mesh).
Мы хотели бы инструментировать вызовы критических методов, чтобы они могли генерировать свои собственные диапазоны в контексте диапазона 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>
...
Реализован метод фильтрации с @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), но мы не видим деталей самих вызовов методов.
Любые идеи относительно того, что здесь может быть не так?