分布式追踪
分布式追踪涉及提供一个图形化的展示,展示事务在不同微服务之间是如何流动的。分布式追踪工具还可以提供对单个微服务响应时间的粗略估计。
Zipkin 是一个分布式追踪平台,允许我们追踪跨多个服务调用的事务。它让我们以图形方式看到事务所需的时间,并分解了调用涉及的每个微服务所花费的时间。Zipkin对于在微服务架构中识别性能问题非常有价值。
设置Micrometer Tracing和Zipkin包括:
将Micrometer Tracing和Zipkin的JAR文件添加到需要捕获追踪数据的服务中。
在每个服务中配置一个Spring属性,指向将收集追踪数据的Zipkin服务器。
安装和配置Zipkin服务器以收集数据。
定义每个客户端将使用的采样策略,以将追踪信息发送到Zipkin。
添加依赖
指向收集追踪数据的Zipkin服务器Zipkin服务器
可以通过RabbitMQ或Kafka将追踪数据发送到Zipkin服务器。
从功能的角度来看,使用HTTP、RabbitMQ或Kafka,Zipkin的行为没有区别。对于HTTP追踪,Zipkin使用异步线程发送性能数据。
使用RabbitMQ或Kafka收集追踪数据的主要优势是,如果Zipkin服务器宕机,发送到Zipkin的追踪消息将被“排队”,直到Zipkin可以恢复并接收数据。
配置Zipkin服务器
要运行Zipkin服务器,只需要进行少量配置。运行Zipkin时,需要配置的少数几件事之一是Zipkin使用的后端数据存储,Zipkin支持四种不同的后端数据存储:
内存数据
MySQL
Cassandra
Elasticsearch
默认情况下,Zipkin使用内存数据存储进行存储。
在这个例子中,将演示如何使用Elasticsearch作为数据存储。为此,需要添加的唯一额外设置是在配置文件的环境部分中添加STORAGE_TYPE和ES_HOSTS变量,如下所示:
设置抽样比例
默认情况下,Zipkin 仅将 10% 的事务写入Zipkin服务器。
可以通过设置 management.tracing.sampling.probability 属性来调整这个比例,该属性接受0 到 1 之间的值。
添加自定义span
可以通过启动一个观察来创建自己的span。为此,需要将 ObservationRegistry 注入到您的组件中。
以下示例为名为 readLicensingDataFromRedis 的许可服务创建了一个自定义跨度:
Last updated