我正在尝试将jaeger跟踪集成到我的java spring应用程序中。 我在配置文件中添加了以下代码:
@Bean public io.opentracing.Tracer jaegerTracer(){
Sender sender = new HttpSender("http://localhost:14268/api/traces");
com.uber.jaeger.Configuration.SenderConfiguration senderConfiguration = new com.uber.jaeger.Configuration
.SenderConfiguration.Builder()
.sender(sender)
.build();
return new com.uber.jaeger.Configuration("pilot-tracking",
new com.uber.jaeger.Configuration.SamplerConfiguration(ProbabilisticSampler.TYPE, 1),
new com.uber.jaeger.Configuration.ReporterConfiguration(sender)).getTracer();
}
并使用以下docker命令:
docker run -d -p 5775:5775 / udp -p 6831:6831 / udp -p 6832:6832 / udp -p 5778:5778 -p 16686:16686 -p 14268:14268 jaegertracing / all-in-one :最新
但是,我无法在jaeger-ui找到我的服务
点击此网址时: http://localhost:5778/?service=pilot-tracking 输出是: tcollector错误:tchannel错误ErrCodeBadRequest:没有服务“jaeger-collector”的处理程序和方法“SamplingManager :: getSamplingStrategy”
请帮助!!
答案 0 :(得分:0)
这似乎有些陈旧,很难分辨出什么地方出了问题。我的第一个猜测将是采样策略,因为Jaeger会千分之一地采样痕迹,但看起来您确实设置了它。
JAEGER_SAMPLER_TYPE=const
JAEGER_SAMPLER_PARAM=1
我建议您先使用简单的Configuration.fromEnv().getTracer()
来获取跟踪器。然后,通过env vars对其进行控制,可能将JAEGER_REPORTER_LOG_SPANS
设置为true
。使用此选项,只要Jaeger发出跨度,您就应该能够在日志中看到。
您还可以为代理和收集器(在您的情况下为一体)设置--log-level=debug
选项,以查看这些组件何时从客户端接收跨度。