环球新资讯:使用 Solon Cloud 的 Jaeger 做请求链路跟踪
2023-04-04 09:23:51
来源:博客园
(资料图片)
org.noear jaeger-solon-cloud-plugin
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 客户端的引入
应用代码// -- 可以当它不存在得用@Controllerpublic class TestController { @NamiClient UserService userService; @Inject OrderService orderService; @Mapping("/") public String hello(String name) { name = userService.getUser(name); return orderService.orderCreate(name, "1"); }}//-- 通过注解增加业务链节点 ( @Tracing )@ProxyComponentpublic 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 的操作名
@Controllerpublic class TestController { @Mapping("/") public String hello(String name) { Spans.active().setOperationName("Hello"); //修改当前操作名 return "Hello " + name; }}
添加在空接口上,一般会无效(比如:Mapper)。除非其底层有适配需加在代理的类上,不然拦截器不会生效。如:@ProxyComponent 注解的类5、演示效果6、代码演示源码:https://gitee.com/noear/solon-examples/tree/main/9.Solon-Cloud/demo9072-jaeger视频:https://www.bilibili.com/video/BV1E24y1j7w3/ 关键词: