<dependency>
<groupId>org.noear</groupId>
<artifactId>jaeger-solon-cloud-plugin</artifactId>
</dependency>
1、描述
分散式擴充套件外掛。基於 jaeger 適配的 solon cloud 外掛。基於 opentracing 開放介面提供鏈路跟蹤支援。
2、配置示例
solon.app:
name: "demoapp"
group: "demo"
solon.cloud.jaeger:
server: "udp://localhost:6831"
trace:
enable: true #是否啟用(預設:true)
exclude: "/healthz,/_run/check/" #排除路徑,多個以,號隔開
3、程式碼應用
- 啟用和配置跟蹤器實現
public class App {
public static void main(String[] args) {
Solon.start(App.class, args);
}
}
//相對於 opentracing-solon-plugin,省去了 Tracer 的構建 和 jaeger 客戶端的引入
- 應用程式碼
// -- 可以當它不存在得用
@Controller
public class TestController {
@NamiClient
UserService userService;
@Inject
OrderService orderService;
@Mapping("/")
public String hello(String name) {
name = userService.getUser(name);
return orderService.orderCreate(name, "1");
}
}
//-- 透過註解增加業務鏈節點 ( @Tracing )
@ProxyComponent
public class OrderService {
@Tracing(name = "建立訂單", tags = "訂單=${orderId}")
public String orderCreate(String userName, String orderId) {
//手動新增 tag
Spans.active(span -> span.setTag("使用者", userName));
return orderId;
}
}
4、@Tracking 注意事項
-
控制器或最終轉為 Handler 的類可以不加(已由 Filter 全域性處理了),加了會產生新的 Span
-
修改當前 Span 的操作名
@Controller
public class TestController {
@Mapping("/")
public String hello(String name) {
Spans.active().setOperationName("Hello"); //修改當前操作名
return "Hello " + name;
}
}
- 新增在空介面上,一般會無效(比如:Mapper)。除非其底層有適配
- 需加在代理的類上,不然攔截器不會生效。如:@ProxyComponent 註解的類