Zipkin,是一种分布式跟踪系统。它有助于收集解决微服务架构中的延迟问题所需的时序数据。它管理这些数据的收集和查找。 Zipkin的设计基于Google Dapper论文。
在内部它有4个模块
curl -sSL https://zipkin.io/quickstart.sh | bash -s
java -jar zipkin.jar
Sleuth是Spring Cloud家族的一款工具。 它用于生成trace id,span id并将这些信息添加到头文件和MDC中的服务调用中,以便它可以被Zipkin和ELK等工具使用。
创建Spring boot 应用 添加 Web, Rest Repository, Zipkinclient 和Sleuth 依赖.
package com.jaytech.mstracing.demo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.core.ParameterizedTypeReference;
import org.springframework.http.HttpMethod;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;
import java.util.logging.Logger;
@RestController
public class ZipkinController {
@Autowired
RestTemplate restTemplate;
@Bean
public RestTemplate getRestTemplate() {
return new RestTemplate();
}
private static final Logger LOG = Logger.getLogger(ZipkinController.class.getName());
@GetMapping(value="/zipkin")
public String zipkinService1()
{
LOG.info("Inside zipkinService 1..");
String response = (String) restTemplate.exchange("http://localhost:8082/zipkin2",
HttpMethod.GET, null, new ParameterizedTypeReference() {}).getBody();
return "Hi..get response from zipkin2";
}
}
在aplication.perporties 文件中配置zipkin client 可以链接到 zipkin server,这样就可以client 就会发送监控数据到server端
spring.zipkin.baseUrl = http://192.168.148.141:9411/
spring.zipkin.locator.discovery.enabled = true
spring.zipkin.enabled = true
spring.sleuth.sampler.probability=1
spring.zipkin.sender.type=web
类似的添加zipkin2,zipkin3
访问http://127.0.0.1:8081/zipkin 微服务 然后打开zipkin server 可以看到跟踪信息如图: