springcloud-sleuth +zipkin 完成日志追踪

介绍

在微服务架构中,随着业务的发展,系统越来越复杂,调用关系越来越错综复杂。几乎每一个请求都会形成一条调用链路,每一条链路都有可能由于各种原因出错。这时候发现,对全链路调用跟踪显得越来越重要。
Srping Cloud Sleuth提供了一套完整的解决方案。Sleuth生成的一个ID,叫Trace ID,用来标识一条请求链路路,一条请求链路路中包含一个Trace ID,多个Span ID

1.首先sleuth创建TraceFilter,对所有的网络请求进行拦截,如果请求的header中没有span信息,则创建Span对象,生成span id、trace id等,如果header中有,则直接使用header中的数据创建Span对象
2.之后将span id、trace id设置到sl4j的MDC中。当使用RestTemplate发送请求RestTemplateInterceptorInjector拦截器对请求拦截,将新生成的span id、trace id等信息设置到请求的header中。这样服务端收到请求后就可以从header中解析出Span信息

1.安装zipkin

curl -sSL https://zipkin.io/quickstart.sh | bash -s

2.启动zipkin

nohup java -jar zipkin.jar >> zipkin.log 2>&1 &

访问zipkin 客户端页面 localhost:9411

在这里插入图片描述

3.springcloud 项目中 引入sleuth 和zipkin 的依赖

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-sleuth-zipkin</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud </groupId>
            <artifactId>spring-cloud-starter-sleuth</artifactId>
        </dependency>

4.配置文件

spring.zipkin.enabled=true
spring.zipkin.discovery-client-enabled=false
spring.zipkin.base-url=http://localhost:9411
spring.sleuth.sampler.probability=1.0

5.启动项目

调用一个接口
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_46645840/article/details/129087209