istio-jaeger-spring boot调用链配置
虽然,istio ingress controller已经生成了jaeger 记录所需要的信息,但是多个分布式之间没法清晰记录相互之间的依赖关系。所以相关的项目还需要加入特殊配置。
如:有四个服务 portal、service-a、service-b、service-c,它们之间的关系如下
portal调用服务service-a和service-c,service-a调用service-b
服务加入特殊处理前Jaeger ui记录的结果为:
服务特殊处理后:
1.实现request header信息传递
写子类实现 HttpSpanInjector、HttpSpanExtractor实现分布式调用链http header信息的传递(spanid,traceid,span-parentid....)
2.服务启动类注入类
@Bean
HttpSpanInjector istioHttpSpanInjector() {
return new IstioHttpSpanInjector();
}
@Bean
HttpSpanExtractor istioHttpSpanExtractor() {
return new IstioHttpSpanExtractor();
}
3.具体配置参考项目
https://github.com/jiuchongxiao/istio-sample-springboot-jaeger-v0.3