Spring Cloud Sleuth和zipkin微服务跟踪

Spring Cloud Sleuth是为Spring Cloud实现了分布式追踪解决方案。

Spring Cloud Sleuth借用了Dapper的术语:

    跨度(Span):基本的工作单位。例如,发送一个RPC是一个新的跨度,就像向RPC发送响应一样。跨度由跨度的唯一64位ID和跨度所包含的另一个 64位ID标识。Spans还具有其他数据,例如描述,时间戳事件,键值注释(标记),导致它们的跨度的ID以及进程ID(通常为IP地址)。

跨度启动和停止,并跟踪他们的时间信息。一旦你创建了一个跨度,你必须在将来某个时候停止它。

          开始追踪的初始跨度被称为 root span。该跨度的span id的值等于trace id。

    痕迹(Trace):一组形成树状结构的跨度。例如,如果您正在运行分布式大数据存储,则跟踪可能由放入请求组成。

    标注(Annotation):用于及时记录事件的存在。用于定义请求开始和结束的一些核心注释是:

  • cs - 客户端发送 - 客户端发出请求。这个注释描述了跨度的开始。

  • sr - 服务器已收到 - 服务器端收到请求并开始处理。如果从这个时间戳中减去cs时间戳,将会收到网络延迟。

  • ss - 服务器发送 - 在请求处理

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
好的,下面是一个使用Spring Cloud Sleuth进行服务跟踪Spring Boot案例: 1. 添加依赖 在pom.xml文件中添加以下依赖: ```xml <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-sleuth</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-zipkin</artifactId> </dependency> ``` 2. 添加配置 在application.yml文件中添加以下配置: ```yaml spring: application: name: sleuth-demo sleuth: sampler: probability: 1.0 zipkin: base-url: http://localhost:9411 ``` 其中,sleuth.sampler.probability配置为1.0表示采样率为100%。 3. 编写代码 编写一个Controller,调用其他服务: ```java @RestController public class MyController { private final RestTemplate restTemplate; public MyController(RestTemplate restTemplate) { this.restTemplate = restTemplate; } @GetMapping("/hello") public String hello() { String result = restTemplate.getForObject("http://localhost:8080/world", String.class); return "Hello " + result; } } ``` 4. 启动服务 启动服务后,访问http://localhost:8080/hello,可以看到控制台输出类似于以下日志: ``` 2021-05-28 11:08:26.306 INFO [sleuth-demo,9c3a3f80e0516d7f,9c3a3f80e0516d7f,false] 14292 --- [nio-8080-exec-1] c.e.sleuthdemo.controller.MyController : hello 2021-05-28 11:08:26.311 INFO [sleuth-demo,9c3a3f80e0516d7f,9c3a3f80e0516d7f,false] 14292 --- [nio-8080-exec-1] o.apache.http.client.HttpClient : http://localhost:8080/world HTTP/1.1 2021-05-28 11:08:26.311 INFO [sleuth-demo,9c3a3f80e0516d7f,9c3a3f80e0516d7f,false] 14292 --- [nio-8080-exec-1] o.apache.http.client.HttpClient : Content-Length: 0 2021-05-28 11:08:26.311 INFO [sleuth-demo,9c3a3f80e0516d7f,9c3a3f80e0516d7f,false] 14292 --- [nio-8080-exec-1] o.apache.http.client.HttpClient : Host: localhost:8080 2021-05-28 11:08:26.316 INFO [sleuth-demo,9c3a3f80e0516d7f,9c3a3f80e0516d7f,false] 14292 --- [nio-8080-exec-1] o.apache.http.client.HttpClient : HTTP/1.1 200 2021-05-28 11:08:26.316 INFO [sleuth-demo,9c3a3f80e0516d7f,9c3a3f80e0516d7f,false] 14292 --- [nio-8080-exec-1] o.apache.http.client.HttpClient : Content-Type: application/json 2021-05-28 11:08:26.316 INFO [sleuth-demo,9c3a3f80e0516d7f,9c3a3f80e0516d7f,false] 14292 --- [nio-8080-exec-1] o.apache.http.client.HttpClient : Transfer-Encoding: chunked 2021-05-28 11:08:26.316 INFO [sleuth-demo,9c3a3f80e0516d7f,9c3a3f80e0516d7f,false] 14292 --- [nio-8080-exec-1] o.apache.http.client.HttpClient : Date: Fri, 28 May 2021 03:08:26 GMT 2021-05-28 11:08:26.316 INFO [sleuth-demo,9c3a3f80e0516d7f,9c3a3f80e0516d7f,false] 14292 --- [nio-8080-exec-1] o.apache.http.client.HttpClient : ``` 这里的日志中,sleuth-demo为当前服务名,9c3a3f80e0516d7f为当前请求的Trace ID,false表示当前请求没有被采样。 5. 查看服务跟踪 访问http://localhost:9411/zipkin/,可以看到服务跟踪页面。在搜索框中输入服务名(sleuth-demo),可以看到当前服务的请求链路和请求耗时等信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值