提问者:小点点

分布式跟踪跨越节点时,获取Jaeger代理错误。js和Java服务


在我们的应用程序中是一个节点。js前端与Java Spring后端对话。一切都是集装箱运输,在库伯内特斯运行。不久前,我们在前端和后端服务中添加了对Jaeger分布式跟踪的支持。杰格直到最近一直运转良好。

我们的Elasticsearch集群已经过时,所以我们升级了。这就要求对Jaeger进行升级--我们最终得到了以下信息:

Jaeger Helm Chart: 0.13.3  from https://github.com/helm/charts/tree/master/incubator/jaeger
Jaeger Client for Node: 3.17.1
Jaeger Client for Java:
   opentracing-spring-jaeger-cloud-starter 2.0.3
   opentracing-spring-jaeger-web-starter 2.0.3

这两个opentracing库都依赖于Jaeger Java客户端的0.35.1版本。

自升级以来,在一侧或另一侧创建的跟踪似乎很好。但跨越边界的跟踪(即从Node.js前端开始,在Java后端完成)会在jaeger代理盒中生成如下错误:

{"level":"error","ts":1574224941.7531824,"caller":"processors/thrift_processor.go:119",
"msg":"Processor failed","error":"*jaeger.Batch error reading struct: *jaeger.Span error
 reading struct: *jaeger.Log error reading struct: *jaeger.Tag error reading struct: 
error reading field 3: Invalid data length","stacktrace":"github.com/jaegertracing/jaeger/cmd/agent/app/processors.
(*ThriftProcessor).processBuffer\n\t/home/travis/gopath/src/github.com/jaegertracing/jaeger/cmd/
agent/app/processors/thrift_processor.go:119\ngithub.com/jaegertracing/jaeger/cmd/agent/app/proc
essors.NewThriftProcessor.func2\n\t/home/travis/gopath/src/github.com/jaegertracing/jaeger/cmd/a
gent/app/processors/thrift_processor.go:83"}

对于这些跟踪,Jaeger UI向我们显示了前端在调用后端API之前创建的跨度,但子后端跨度并没有像您预期的那样显示。

什么可能导致这种处理器错误?


共1个答案

匿名用户

看起来您有不同版本的opentRacing。spring-starter-jaeger version 2. x升级了opentRacing的版本,因此您可能在升级依赖版本时引入了这种突破性的更改。