• 【SpringCloud】Spring Cloud Sleuth 日志跟踪(二十六)


      本章使用上一章的实例【SpringCloud】Spring Cloud Sleuth + Zipkin 服务调用链路追踪(二十五)

    查看Spring Cloud Sleuth请求链路中请求头

      1、修改项目中(springcloud-provider-sleuth-payment8010)作为Sleuth服务提供者的Controller,内容如下:

     1 @RestController
     2 @Slf4j
     3 public class PaymentController {
     4 
     5     @GetMapping("/payment/zipkin")
     6     public String paymentZipkin(HttpServletRequest request){
     7         System.out.println(getHeadersInfo(request));
     8         System.out.println("traceid ====== " +  tracer.currentSpan().context().traceIdString());
     9         return "Hi, this is payment zipkin server";
    10     }
    11 
    12     // 获取Header头中的信息
    13     private Map<String, String> getHeadersInfo(HttpServletRequest request) {
    14         Map<String, String> map = new HashMap<String, String>();
    15         Enumeration headerNames = request.getHeaderNames();
    16         while (headerNames.hasMoreElements()) {
    17             String key = (String) headerNames.nextElement();
    18             String value = request.getHeader(key);
    19             System.out.println(key + "	======>	" + value);
    20             map.put(key, value);
    21         }
    22         return map;
    23     }
    24 }

      2、测试

        1)重新启动项目

        2)访问地址:http://127.0.0.1:7995/consumer/payment/zipkin,正常获取内容

        

        可以从请求头中获取信息,其中常用的请求头代表的信息如下

        * X-B3-TraceId:一条请求链路(Trace)的唯一标识,必须值

        * X-B3-SpanId:一个工作单元(Span)的唯一标识,必须值

        * X-B3-ParentSpanId::标识当前工作单元所属的上一个工作单元

        * X-B3-Sampled::是否采样,1表示需要被输出,0表示不需要被输出

    应用中获取TraceId

      1、在Controller中自动注入Tracer

     1 import brave.Tracer;
     2 ....
     3 
     4 @RestController
     5 @Slf4j
     6 public class PaymentController {
     7 
     8     @Autowired
     9     private Tracer tracer;
    10 
    11     @GetMapping("/payment/zipkin")
    12     public String paymentZipkin(HttpServletRequest request){
    13 
    14         
    15         System.out.println("traceid ====== " +  tracer.currentSpan().context().traceIdString());
    16         ....
    17 
    18         return "Hi, this is payment zipkin server";
    19     }
    20 
    21 }

      2、测试

        1)重新启动项目

        2)查看控制台输出

        

    应用日志

      1、修改项目中(springcloud-provider-sleuth-payment8010)作为Sleuth服务提供者的Controller,内容如下:

    1 log.info("Hi, this is payment zipkin server");

      2、测试

        1)重新启动项目

        2)访问地址:http://127.0.0.1:7995/consumer/payment/zipkin,正常获取内容

        3)查看控制台输出

        

        其中第一个代表应用名,

        第二个代表Trace ID,标识一条请求链路,

        第三个代表基本工作单元

        第三个代表是否将日志输出到Zipkin等服务中来收集和展示,注意采用使用1才为true,默认为0.1,则为false

  • 相关阅读:
    Mysql备份恢复
    Mysql事务学习笔记
    MongoDB进阶
    MongoDB入门
    Mysql流程解析
    Mysql Explain学习笔记
    面试题
    聚集索引和非聚集索引
    端口号占用
    classpath: 和classpath*:的区别
  • 原文地址:https://www.cnblogs.com/h--d/p/12865903.html
Copyright © 2020-2023  润新知