首页 > 其他分享 >使用 Solon Cloud 的 Jaeger 做请求链路跟踪

使用 Solon Cloud 的 Jaeger 做请求链路跟踪

时间:2023-04-04 09:12:15浏览次数:49  
标签:Solon name jaeger Jaeger class solon public Cloud String

<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 注解的类

5、演示效果

6、代码演示

标签:Solon,name,jaeger,Jaeger,class,solon,public,Cloud,String
From: https://www.cnblogs.com/noear/p/17285211.html

相关文章

  • SAP Commerce Cloud 里的 jsapps 和 jsapps-ssr 容器
    SAPCommerceCloudVersion2,简称SAPCCV2,上面有两种container,jsapps和jsapps-ssr,二者区别是什么?SAPCommerceCloudVersion2(简称SAPCCV2)是SAP提供的一款云端电商解决方案。在SAPCCV2中,"jsapps"和"jsapps-ssr"都是用于部署Web应用程序的容器,但它们之间存在一些区别......
  • SpringCloud Admin健康检查
    1.什么是SpringBootAdmin?SpringBootAdmin是codecentric公司开发的一款开源社区项目,目标是让用户更方便的管理以及监控SpringBoot®应用。应用可以通过我们的SpringBootAdmin客户端(通过HTTP的方式)或者使用SpringCloud(比如Eureka,consul的方式)注册。而前端UI则......
  • mac电脑icloud登出
    mac电脑中会涉及到软件下载或者备份,所以可能存在个人账号登录到公司电脑然后忘记登出的情况1.从mac电脑登出 Mac电脑如何登录iCloud【百科全说】(bkqs.com.cn) 但是需要密码            2.登录官网顶号        ......
  • SpringCloud大文件上传解决方案支持分片断点上传
    ​IE的自带下载功能中没有断点续传功能,要实现断点续传功能,需要用到HTTP协议中鲜为人知的几个响应头和请求头。 一. 两个必要响应头Accept-Ranges、ETag        客户端每次提交下载请求时,服务端都要添加这两个响应头,以保证客户端和服务端将此下载识别为可以断点续传......
  • day01-SpringCloud基本介绍
    SpringCloud基本介绍SpringCloud官方文档1.提出问题先思考一个问题,没有微服务技术,是不是程序员就不能开发大型项目?是可以的,对大型项目进行模块划分,对各个模块进行实现。但模块之间更多地是以API调用完成,耦合度较高,不利于拓展和维护(在没有微服务技术时,很多大型项目就已经使......
  • SpringCloud之sleuth
    在大型分布式系统中,一次调用可能要经过很多不同的系统,调用很多服务。每个服务之间的调用会越来越复杂。会引入以下问题:如何快速发现问题?如何判断故障影响范围?如何梳理服务依赖以及依赖的合理性?如何分析链路性能问题以及实时容量规划? 为了快速定位问题及时解决问题,引入了......
  • SpringCloud之zuul
    后台的微服务和客户端之间都有一个类似于酒店的前台,叫做网关。网关一般有以下作用:1、统一登录认证,由网关来进行身份认证,调用每个微服务时就不用各自认证了。2、解决跨越问题,微服务一般是部署在内网中。客户端调用时存在跨域。3、动态路由和负载均衡,根据请求路径动态分发到不同......
  • 记录一: Spring Cloud Alibaba 2021.X 搭建
    一》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》下载nacos  https://github.com/alibaba/nacos   nacos-server-2.0.3.zip  Windows版 解压后,数据库新建nacos库,将X:\nacos\conf目录下的 nacos-mysql.s......
  • vue+webSocket+springCloud消息推送交互
    一、后台代码:1、pom里面加上依赖;<!--webSocket坐标依赖--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId><version>2.2.4.RE......
  • Spring Cloud LoadBalancer
    ReactiveLoadBalancer与ServiceInstanceListSupplierSpringCloud提供了client的load-balance抽象和实现。在load-balance机制中添加了ReactiveLoadBalancer接口,并且为其提供了Round-Robin-based和Random实现。为了从反应式服务中选择服务实例,使用了ServiceInstanceListSupplier......