Micronaut и OpenTracing вызовов методов - PullRequest
2 голосов
/ 05 октября 2019

Мы создаем веб-приложение с использованием 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), но мы не видим детали вызовов самого метода.

Есть идеи, что здесь может пойти не так?

Ответы [ 2 ]

0 голосов
/ 16 октября 2019

Если у вас есть та же проблема, описанная в этом билете, вам нужно дождаться следующей версии микронавта или использовать обходной путь, упомянутый там парнями из микронавта.

https://github.com/micronaut-projects/micronaut-core/issues/2209

0 голосов
/ 10 октября 2019

Istio имеет эту функцию, называемую Distributed Tracing , которая позволяет пользователям отслеживать запросы в сетке, которая распределена между несколькими службами. Это можно использовать для визуализации задержки запросов, сериализации и параллелизма.

Для этого Istio использует Envoy Proxy - отслеживание .

Вы можете развернуть BookinfoПриложение и посмотрите, как Распространение контекста трассировки работает.

...