在Zipkin链路中添加自定义数据
在实际开发中,Zipkin默认展示的链路数据有时无法满足我们想要获取的数据,比如,无法在Zipkin的UI界面中看到请求发送人的名称, 这时,可以使用Zipkin添加自定义链路数据,将请求发送人的名称添加在链路数据中。在本案例中,我们在gateway-service网关服务中添加Zipkin自定义链路数据实现在Zipkin的UI界面中看到请求发送人的名称,具体步骤如下所示。
(1)在gateway-service项目中创建Filter类。新建filter包,并在该包下创建一个LoggerFilter类,具体代码如例1所示。
例1 gateway-service\src\main\java\com\itheima\gatewayservice\filter\LoggerFilter.java
1 import brave.Tracer;
2 import com.netflix.zuul.ZuulFilter;
3 import com.netflix.zuul.exception.ZuulException;
4 import org.springframework.beans.factory.annotation.Autowired;
5 import
6 org.springframework.cloud.netflix.zuul.filters.support.FilterConstants;
7 import org.springframework.stereotype.Component;
8 @Component
9 public class LoggerFilter extends ZuulFilter {
10 @Autowired
11 Tracer tracer;
12 @Override
13 public String filterType() {
14 return FilterConstants.POST_TYPE;
15 }
16 @Override
17 public int filterOrder() {
18 return 900;
19 }
20 @Override
21 public boolean shouldFilter() {
22 return true;
23 }
24 @Override
25 public Object run() throws ZuulException {
26 System.out.print(tracer.currentSpan().tag("name","forezp"));
27 return null;
28 }
29 }
(2)启动测试。依次启动eureka-server、zipkin-server、eureka-provider、eureka-consumer、gateway-service。使用浏览器访问http://localhost:9410/eureka-provider/service1
,查看效果。
访问成功后,使用浏览器访问http://localhost:9411/
,页面会显示 Zipkin服务端的UI界面。在Service Name下拉框选择gateway-service,单击 “Find Trances”按钮,可以看到我们这次请求的节点信息,双击gateway-service服务的节点信息,可以查看gateway-service项目链路的详细信息。如图1所示。
图1 Zipkin添加自定义Span效果图
从图1中,我们在gateway-service项目链路的详细信息中可以看到自定义的请求用户的name是“forezp”,说明在Zipkin链路中添加自定义数据成功。