浅尝Spring Cloud Sleuth

当前位置:首页易利官方手机版 >

易利官方手机版

浅尝Spring Cloud Sleuth

时间:2019-06-10本站浏览次数:349

       

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@SpringBootApplicationpublic 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=10001spring.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里加上如下依赖:

<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>io.zipkin.java</groupId> <artifactId>zipkin-server</artifactId> <version>2.11.5</version> </dependency> <dependency> <groupId>io.zipkin.java</groupId> <artifactId>zipkin-autoconfigure-ui</artifactId> <version>2.11.5</version> </dependency></dependencies>

然后在启动类加上@EnableZipkinServer标记。

import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import zipkin2.server.internal.EnableZipkinServer;@EnableZipkinServer@SpringBootApplicationpublic 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@SpringBootApplicationpublic 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=10002spring.application.name=sleuth-demo-with-zipkinspring.zipkin.base-url=http://localhost:10000spring.sleuth.sampler.probability=1.0

启动Zipkin Client后,可以看到Zipkin Server页面上多了一条追踪数据。

再次刷新Zipkin Client页面,又会有条新的数据。

在看控制台的日志记录,exportable项变成了true,说明数据已传入Zipkin。




公司地址:新疆维吾尔自治省乌鲁木齐市乌鲁木齐 市沙依巴克区仓房沟路51号附8号
联系人:杨伟 15125755319
任加尧 15182509019
电话:15293813100 传真:qbc6f2g@163.com
邮箱:a9qqe5@163.com

粤公网安备 44030702001579号

易利GO最新手机版@