美文网首页
springBoot链路追踪之jaeger使用

springBoot链路追踪之jaeger使用

作者: _Kantin | 来源:发表于2021-09-28 15:54 被阅读0次

背景

  • 最近在使用opentracing来监控整个系统服务的调用链路。
  • 本文的前提是假设就已经部署好了jaeger服务(这个服务用docker部署是比较简单的)。
  • 最后配置mongo访问调用上报,需要在每个mongo client中注册上对应的listener对象,此举相对入侵性较中, 因此只在压测的时候使用!

代码

  • pom.xml配置(可选择更高的版本)
        <dependency>
            <groupId>io.opentracing.contrib</groupId>
            <artifactId>opentracing-spring-web-autoconfigure</artifactId>
            <version>0.0.4</version>
        </dependency>
        <dependency>
            <groupId>com.uber.jaeger</groupId>
            <artifactId>jaeger-core</artifactId>
            <version>0.18.0</version>
        </dependency>
  • service配置。在项目的service类注册opentracing的bean即可。
     //opentracing服务端ip
    @Value("${opentracing.report.host}")
    private String agentHost;
    //opentracing服务端port
    @Value("${opentracing.report.port}")
    private Integer agentPort;
    //采样率(0.01表示只采集1%)
    @Value("${opentracing.sampler.percent}")
    private double percent;


    @Bean
    public io.opentracing.Tracer jaegerTracer() {
    //1000表示队列的长度
    Configuration.ReporterConfiguration reporterConfiguration = new Configuration.ReporterConfiguration(null, agentHost, agentPort, null, 1000);
        //spring-boot是显示在jaeger上的应用名字
        return new Configuration("spring-boot", new Configuration.SamplerConfiguration(ProbabilisticSampler.TYPE, percent),
                reporterConfiguration).getTracer();
    }
  • Controller层
    @Bean
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }

    @RequestMapping("/tracing")
    public String tracing() throws InterruptedException {
        Thread.sleep(100);
        return "tracing";
    }

    @RequestMapping("/open")
    public String open() throws InterruptedException {
        String url = "http://localhost:8080/demo/tracing";
        ResponseEntity<String> response =
                restTemplate.getForEntity(url, String.class);
        Thread.sleep(200);
        return "open " + response.getBody();
    }
  • jarger上查看详情(先请求URL:http://localhost:8080/demo/open
    • 如果项目上报到jarger成功的话,那么服务端上可自动发现我们的项目名,如上我配置的spring-boot
    • 根据服务名查询
    • 接口方法trace详情

相关文章

网友评论

      本文标题:springBoot链路追踪之jaeger使用

      本文链接:https://www.haomeiwen.com/subject/ricrnltx.html