浅尝Spring Cloud Sleuth

2021-06-17 10:03

阅读:705

标签:image   spring   应用程序   logger   with   ima   XML   local   span   

Spring Cloud Sleuth提供了分布式追踪(distributed tracing)的一个解决方案。其基本思路是在服务调用的请求和响应中加入ID,标明上下游请求的关系。利用这些信息,可以方便地分析服务调用链路和服务间的依赖关系。

Only Sleuth

在Spring Tool Suite的文件菜单中,点击新建Spring Starter Project。
技术分享图片

在请求处理方法内加上一行日志代码。

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@SpringBootApplication
public class SpringcloudSleuthApplication {

    private static Logger log = LoggerFactory.getLogger(SpringcloudSleuthApplication.class);
    @RequestMapping("/")
    public String home() {
        log.info("Handling home");
        return "Hello World";
    }

    public static void main(String[] args) {
        SpringApplication.run(SpringcloudSleuthApplication.class, args);
    }
}

设定应用程序端口及名称。

server.port=10001

spring.application.name=sleuth-demo-without-zipkin

启动程序并浏览页面后,可以看到日志信息里多了点东西。

技术分享图片

[sleuth-demo-without-zipkin,6c00dba1679ee164,6c00dba1679ee164,false]

这一串数据里包含四个部分

  • appname - 应用程序名称
  • traceId - 追踪系统中的唯一标识
  • spanId - 具体操作的唯一标识
  • exportable - 是否日志要导出到Zipkin

Sleuth + Zipkin

Zipkin Server

要想把追踪数据发送到Zipkin上,首先需要建立一个Zipkin Server应用程序,在pom.xml里加上如下依赖:

org.springframework.boot
    spring-boot-starter
  org.springframework.boot
    spring-boot-starter-test
    testio.zipkin.java
    zipkin-server
    2.11.5io.zipkin.java
    zipkin-autoconfigure-ui
    2.11.5

然后在启动类加上@EnableZipkinServer标记。

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

import zipkin2.server.internal.EnableZipkinServer;

@EnableZipkinServer
@SpringBootApplication
public class SpringcloudZipkinServerApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringcloudZipkinServerApplication.class, args);
    }
}

application.properties文件中可修改默认端口,server.port=10000

打开相关页面,如下:
技术分享图片

Zipkin Client

再新建一个应用程序。
技术分享图片

启动程序代码基本一样。

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@SpringBootApplication
public class SpringcloudZipkinApplication {

    private static Logger log = LoggerFactory.getLogger(SpringcloudZipkinApplication.class);
    @RequestMapping("/")
    public String home() {
        log.info("Handling home");
        return "Hello World";
    }
    
    public static void main(String[] args) {
        SpringApplication.run(SpringcloudZipkinApplication.class, args);
    }
}

application.properties文件里加上Zipkin Server的地址,同时为了每次都将数据传入Zipkin,需要把spring.sleuth.sampler.probability的值改为1.0。

server.port=10002

spring.application.name=sleuth-demo-with-zipkin
spring.zipkin.base-url=http://localhost:10000
spring.sleuth.sampler.probability=1.0

启动Zipkin Client后,可以看到Zipkin Server页面上多了一条追踪数据。

技术分享图片

再次刷新Zipkin Client页面,又会有条新的数据。

技术分享图片

在看控制台的日志记录,exportable项变成了true,说明数据已传入Zipkin。

技术分享图片

浅尝Spring Cloud Sleuth

标签:image   spring   应用程序   logger   with   ima   XML   local   span   

原文地址:https://www.cnblogs.com/kenwoo/p/9716282.html


评论


亲,登录后才可以留言!