3

我们正在使用 Micronaut ( v1.2.0 ) 构建一个 Web 应用程序,它将部署在 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 代理)生成的跟踪条目,而看不到方法调用本身的详细信息。

关于这里可能出现什么问题的任何想法?

4

2 回答 2

0

如果您遇到此票证中解释的相同问题,则需要等待 micronaut 的下一个版本或使用那里的 micronaut 人员提到的解决方法。

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

于 2019-10-16T13:14:47.013 回答
0

Istio 有这个称为分布式跟踪的功能,它使用户能够跟踪分布在多个服务中的网格中的请求。这可用于可视化请求延迟、序列化和并行性。

为此,Istio 使用Envoy Proxy - Tracing功能。

您可以部署Bookinfo 应用程序并查看Trace 上下文传播是如何工作的。

于 2019-10-10T08:31:45.477 回答