zoukankan      html  css  js  c++  java
  • SpringCloud学习(六):sleuth/zipkin 链路追踪

    菜鸟学渣接触spring cloud 系列...

    公司也上微服务了,再不学习下就凉了,所以来踩坑吧...

    版本:

      spring-boot:  2.0

      spring-cloud: Finchley.SR1

    已有项目:

      [eureka-server]              # 注册中心   port 8761

      [eureka-client-one]       #  微服务1    port 8501

      [eureka-client-two]       #  微服务2    port 8502

      [eureka-client-turbine] #  断路监控   port 8503

      [eureka-client-zuul]      #  网关服务   port 8601

    能上图绝不BB

      

      sleuth可以列出如图一个请求中微服务的依赖关系,即依次调用顺序

      以及跟踪每个微服务处理时间及是否出错

      核心组件在于 Twitter 推出的 zipkin 监控组件

    一、sleuth   [eureka-client-sleuth]

      新建微服务 [eureka-client-sleuth]

      引入依赖  spring-cloud-starter-sleuth、spring-cloud-starter-zipkin、zipkin-server、zipkin-autoconfigure-ui

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
        <groupId>com.renzku</groupId>
        <artifactId>eureka-client-sleuth</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <packaging>jar</packaging>
    
        <name>eureka-client-sleuth</name>
        <description>Demo project for Spring Boot</description>
    
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.0.4.RELEASE</version>
            <relativePath/> <!-- lookup parent from repository -->
        </parent>
    
        <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
            <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
            <java.version>1.8</java.version>
            <spring-cloud.version>Finchley.SR1</spring-cloud.version>
        </properties>
    
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
            </dependency>
            
            <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>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
    
            <!--1. zipkin 从aliyun的仓库居然下不下来 <url>http://maven.aliyun.com/nexus/content/groups/public/</url>   -->
            <!--2. zipkin-server 依赖包下来了,单名为'zipkin-server'本身没下来,也不报错,'@EnableZipkinServer'使用
                    不了。单独新建个空maven项目引用zipkin-server,再回本项目reimport又好了,我靠2个小时啊
            -->
            <dependency>
                <groupId>io.zipkin.java</groupId>
                <artifactId>zipkin-server</artifactId>
                <version>2.11.4</version>
            </dependency>
            <dependency>
                <groupId>io.zipkin.java</groupId>
                <artifactId>zipkin-autoconfigure-ui</artifactId>
                <version>2.11.4</version>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-actuator</artifactId>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
        </dependencies>
    
        <dependencyManagement>
            <dependencies>
                <dependency>
                    <groupId>org.springframework.cloud</groupId>
                    <artifactId>spring-cloud-dependencies</artifactId>
                    <version>${spring-cloud.version}</version>
                    <type>pom</type>
                    <scope>import</scope>
                </dependency>
            </dependencies>
        </dependencyManagement>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>
    
    
    </project>
    pom.xml

      配置文件  application.yml

    server:
      port: 8602
    
    spring:
      application:
        name: eureka-client-sleuth
    
    eureka:
      client:
        service-url:
          defaultZone: http://localhost:8761/eureka/
    
    # 启动报错 -- 见 https://github.com/openzipkin/zipkin/issues/2043#issuecomment-385932918
    management:
      metrics:
        web:
          server:
            auto-time-requests: false

      启动类  EurekaClientSleuthApplication.java

    @SpringBootApplication
    @EnableEurekaClient
    @EnableZipkinServer  // 启用zipkin-server
    public class EurekaClientSleuthApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(EurekaClientSleuthApplication.class, args);
        }
    }

      依次启动  [eureka-server]、[eureka-client-one]、[eureka-client-two]、[eureka-client-zuul]、[eureka-sleuth]

      访问   http://localhost:8602/zipkin/  

      

     

    二、结果

      访问  http://localhost:8601/client-two/test/home 产生一起请求(请求顺序:request -> clientTwo -> clientOne -> response)

      点击 【Find Traces】按钮,出现请求记录列表

      

      点击一条数据,可展示详细请求数据: 经过的微服务和耗时

      

       

      另外,点击Dependencies 查看微服务依赖关系

      

    三、坑

      如果操作正常但点击 【Find Traces】就是没数据,F12报错: 手贱用QQ浏览器调试--> zipkin前端用来ES6语法,QQ浏览器用的老版chrome核。

  • 相关阅读:
    POJ 2018 二分
    873. Length of Longest Fibonacci Subsequence
    847. Shortest Path Visiting All Nodes
    838. Push Dominoes
    813. Largest Sum of Averages
    801. Minimum Swaps To Make Sequences Increasing
    790. Domino and Tromino Tiling
    764. Largest Plus Sign
    Weekly Contest 128
    746. Min Cost Climbing Stairs
  • 原文地址:https://www.cnblogs.com/renzku/p/9615065.html
Copyright © 2011-2022 走看看