Sleuth 服务跟踪

一、spingcloud 集成 sleuth

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

然后在方法中打印日志 就可以看到下面的信息

2020-07-11 11:08:57.045  INFO [eureka-client-article-service,d83fdd5f69448a87,d83fdd5f69448a87,true] 7952 --- [nio-8082-exec-4] com.learn.controller.ArticleController   : article/callhello2 consume

可以发现在日志的最前面加了一部分的内容,这部分内容是Sleuth为服务直接提供的链路信息。

appName:服务的名称,也就是spring.application.name的值

traceId:整个请求的唯一id,他不傲世整个请求的链路

spanId:基本的工作单元,发起一次远程调用就是一个span

exportable:决定是否导入数据到ZipKin

二、整合Zipkin

1. 下载并启动 zipkin

下载地址:https://dl.bintray.com/openzipkin/maven/io/zipkin/java/zipkin-server/

2. 启动:

将jar包下载到本地后,使用 java-jar 启动jar包,当看到下面的情况就说明启动成功了

启动访问 http://localhost:9411/ 可以看到下面的界面

3. 项目中集成 Zipkin

a. 引入依赖

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

b. 在配置文件中加入下面的配置

spring.zipkin.base-url=http://127.0.0.1:9411

这时访问接口会在 zipkin的界面看到请求信息

点击红框中的信息会看到下面的界面

点击红框中的信息会看到请求的详细信息

4. 配置抽样采集数据

spring.sleuth.sampler.probability=1.0

5.手动标记信息

TracingFilter 是负责处理请求和响应的组件,我们可以通过注册自定义的 TracingFilter实例来实现一些扩展性的需求,代码实例如下

@Component
@Order(TraceWebServletAutoConfiguration.TRACING_FILTER_ORDER+1)
public class MyFilter extends GenericFilterBean {

    private final Tracer tracer;

    MyFilter(Tracer tracer) {
        this.tracer = tracer;
    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        Span span = this.tracer.currentSpan();
        if(null == span){
            filterChain.doFilter(servletRequest,servletResponse);
        }
        ((HttpServletResponse) servletResponse).addHeader("ZIPKIN-TRACE-ID",span.context().traceIdString());
        span.tag("custom","tag");
        filterChain.doFilter(servletRequest,servletResponse);
    }
}

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值