Jaeger 做請(qǐng)求鏈路跟蹤
1、描述
分布式擴(kuò)展插件?;?jaeger 適配的 solon cloud 插件。基于 opentracing 開(kāi)放接口提供鏈路跟蹤支持。
2、配置示例
solon.app:
?name: "demoapp"
?group: "demo"solon.cloud.jaeger:
?server: "udp://localhost:6831"
?trace:
? ?enable: true ? ? ? ? ? ? ? ? ? ? #是否啟用(默認(rèn):true)
? ?exclude: "/healthz,/_run/check/" #排除路徑,多個(gè)以,號(hào)隔開(kāi)
3、代碼應(yīng)用
啟用和配置跟蹤器實(shí)現(xiàn)
public class App { ? ?public static void main(String[] args) {
? ? ? ?Solon.start(App.class, args);
? ?}
}//相對(duì)于 opentracing-solon-plugin,省去了 Tracer 的構(gòu)建 和 jaeger 客戶端的引入
應(yīng)用代碼
// -- ?可以當(dāng)它不存在得用public class TestController { ? ?
? ?UserService userService; ? ?
? ?
? ?OrderService orderService; ? ?
? ?public String hello(String name) {
? ? ? ?name = userService.getUser(name); ? ? ? ?return orderService.orderCreate(name, "1");
? ?}
}//-- 通過(guò)注解增加業(yè)務(wù)鏈節(jié)點(diǎn) ( @Tracing )public class OrderService { ? ?
? ?public String orderCreate(String userName, String orderId) { ? ? ? ?//手動(dòng)添加 tag
? ? ? ?Spans.active(span -> span.setTag("用戶", userName)); ? ? ? ?
? ? ? ?return orderId;
? ?}
}
4、@Tracking 注意事項(xiàng)
控制器或最終轉(zhuǎn)為 Handler 的類可以不加(已由 Filter 全局處理了),加了會(huì)產(chǎn)生新的 Span
修改當(dāng)前 Span 的操作名
public class TestController { ? ?
? ?public String hello(String name) {
? ? ? ?Spans.active().setOperationName("Hello"); ?//修改當(dāng)前操作名
? ?
? ? ? ?return "Hello " + name;
? ?}
}
添加在空接口上,一般會(huì)無(wú)效(比如:Mapper)。除非其底層有適配
需加在代理的類上,不然攔截器不會(huì)生效。如:@ProxyComponent 注解的類
5、演示效果
