Spring Cloud Sleuth 主要功能就是在分布式系统中提供追踪解决方案,并且兼容支持了 zipkin,只需要在pom文件中引入相应的依赖即可。
一、首先下载并启动zipkin-server
下载地址: https://dl.bintray.com/openzipkin/maven/io/zipkin/java/zipkin-server/
得到运行jar包: zipkin-server-2.11.7-exec.jar
命令行下启动: java -jar zipkin-server-2.11.7-exec.jar (注意非后台启动)
服务默认访问地址(若是本机访问): http://localhost:9411/
可看到如下页面:
二、 以 service-hi 服务使用zipkin组件为例
pom文件配置添加如下依赖:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>
application.properties 文件添加如下配置:
##zipkin服务地址
spring.zipkin.base-url=http://localhost:9411
Controller定义部分: 说明,主要添加了Sampler的默认采样bean;
package com.springcloud.service;
import brave.sampler.Sampler;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.context.annotation.Bean;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
* @author lcl
* @version 0.1
* @date 2018/10/13
**/
@SpringBootApplication
@EnableEurekaClient
@RestController
public class ServiceHiApplication {
private static final Logger logger = Logger.getLogger(ServiceHiApplication.class.getName());
public static void main(String[] args){
SpringApplication.run(ServiceHiApplication.class,args);
}
@Value("${server.port}")
String port;
@Autowired
private RestTemplate restTemplate;
@Bean
public RestTemplate getRestTemplate(){
return new RestTemplate();
}
@RequestMapping("/hi")
public String home(@RequestParam(value = "name", defaultValue = "forezp") String name) {
String msg = "calling trace service-hi: "+ "hi " + name + " ,i am from port:" + port;
return msg;
}
@Bean
public Sampler defaultSampler(){
return Sampler.ALWAYS_SAMPLE;
}
}
三、 为验证,service-feign-fin服务添加了如上同样配置;
依次启动了服务:eurka-server,service-hi,service-feign-fin
由浏览器访问下service-feign-fin服务的地址:http://localhost:8790/hi?name=591
此时再查看http://localhost:9411/ 页面如下:
点击下面Trace可看到如下: