zoukankan      html  css  js  c++  java
  • Zipkin初探 + 与SpringBoot的集成+ 使用HTTP方式传送数据给zipkin server

    本地搭建zipkin server

    下载:

    启动(在下载目录): java -jar zipkin-server-2.22.1-exec.jar

    访问:http://127.0.0.1:9411/zipkin/

    SpringBoot集成zipkin文档

           https://cloud.spring.io/spring-cloud-sleuth/1.3.x/multi/multi_spring-cloud-sleuth.html,关键看第十章: Sending spans to Zipkin

    Spring Boot集成zipkin的方式

    SpringBoot application.yml里的配置方式

    spring:
      zipkin:
        base-url: http://127.0.0.1:9411    #zipkin server 的地址
        service: 
          name: customersearchapis   #默认会显示Spring Application Name,但是可以覆盖Service地址
        sender: 
          type: web    #如果ClassPath里没有kafka, active MQ, 默认是web的方式
      sleuth:
        sampler:
          probability: 1.0  #100%取样
    logging:
      level:
        root: info
        # for zipkin sender, 如果使用 web的方式,可以在日志中看到与zipkin的通信
        org.springframework.web: DEBUG

    Gradle:

    implementation 'org.springframework.cloud:spring-cloud-starter-zipkin

    加上这个Starter会Sleuth相关的包以及下面zipkin相关的包都引入

     

     使用HTTP传送给zipkin的输出日志:

     将HTTP parameter 加到zipkin tag中

    @Component
    @Order(TraceWebServletAutoConfiguration.TRACING_FILTER_ORDER + 1)
    public class CustomizedHttpTraceFilter extends GenericFilterBean {
    
        private final Tracer tracer;
    
        CustomizedHttpTraceFilter(Tracer tracer) {
            this.tracer = tracer;
        }
    
        @Override
        public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
                throws IOException, ServletException {
            Span currentSpan = this.tracer.currentSpan();
            // do nothing if current span is null
            if (currentSpan == null) {
                chain.doFilter(request, response);
                return;
            }
            // add parameter to tag
            ObjectMapper mapper = new ObjectMapper();
            currentSpan.tag("Http.parameter", mapper.writeValueAsString(request.getParameterMap()));
            chain.doFilter(request, response);
        }
        

    ZIPKIN server 存储数据到ElasticSearch

    java -DSTORAGE_TYPE=elasticsearch -DES_HOSTS=ES-host -DES_INDEX=zipkin -DES_INDEX_SHARDS=3  -DES_INDEX_REPLICAS=2 -DES_USERNAME=userName -DES_PASSWORD=password  -DES_SSL_NO_VERIFY=true -DES_HTTP_LOGGING=basic  -jar zipkin-server-2.22.1-exec.jar
    

      

    1. zipkin是服务端,用于查询分析、收集和持久化链路数据
    2. brave则是zipkin官方出品的Java语言的链路数据采集插件。同理还有js、go版本的采集插件

      业界开源的主流链路跟踪系统:

      1. skywalking
      2. pinpoint
      3. zipkin
      4. jaeger

      主要对比skywalking和zipkin

       skywalkingzipkin
      内部实现方式 javaagent,字节码增强 aop插件
      语言支持 多语言 多语言
      性能
      插件扩展 困难 容易
      接入成本 低,开发无感知 低,开发需要配置
      社区支持

      可以看到

      • skywalking相较于zipkin的优势在于接入成本低、性能稍好
      • zipkin相较于skywalking的优势在于插件扩展容易

      我们最终选择的是zipkin

  • 相关阅读:
    清除所有标签的属性
    chm提取
    视频分享
    依赖注入
    python-markdown
    light sdk
    ~
    html标签引入外部html
    微信公众平台自定义菜单
    还在为需要ajax而导入jquery吗? 纯js封装ajax操作
  • 原文地址:https://www.cnblogs.com/Ivyduan/p/13920740.html
Copyright © 2011-2022 走看看