浅尝Spring Cloud Sleuth

共 3266字,需浏览 7分钟

 ·

2020-12-18 15:22

点击上方蓝色字体,选择“标星公众号”

优质文章,第一时间送达

  作者 |  Ken.W

来源 |  urlify.cn/Rveyau

66套java从入门到精通实战课程分享

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
    test
  


  
    io.zipkin.java
    zipkin-server
    2.11.5
  

  
  
    io.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。

作者:Ken.W





粉丝福利:Java从入门到入土学习路线图

???

?长按上方微信二维码 2 秒


感谢点赞支持下哈 

浏览 12
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报