Spring Cloud分布式链路跟踪(zipkin kafka elasticsearch)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/h_sn9999/article/details/102698763

一、安装zk和kafka

请参照:https://blog.csdn.net/h_sn9999/article/details/102622751

二、安装 elasticsearch

1、下载elasticsearch-5.5.0.zip

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.5.0.zip

2、解压

unzip elasticsearch-5.5.0.zip

3、移动到固定的目录

mv /elasticsearch-5.5.0 /usr/software/el

4、el属于开箱即用,进入目录

cd elasticsearch-5.5.0/bin ./elasticsearch

三、系统数据的处理流程

Zipkin 是一款开源的分布式实时数据追踪系统,其主要功能是聚集来自各个异构系统的实时监控数据,用来追踪微服务架构下的系统延时问题。Zipkin 的用户界面可以呈现一幅关联图表,以显示有多少被追踪的请求通过了每一层应用。在微服务架构中,一次用户请求可能会由后台若干个服务负责处理,那么每个处理请求的服务就可以理解为一个 Span,因此 Span 是一个树形结构,以体现服务之间的调用关系。Zipkin 的用户界面除了可以查看 Span 的依赖关系之外,还以瀑布图的形式显示了每个 Span 的耗时情况,可以一目了然的看到各个服务的性能状况。打开每个 Span,还有更详细的数据以键值对的形式呈现。

下图借用前辈画的


四、Zipkin Server 

https://github.com/openzipkin/zipkin/releases

Running via Java:

curl -sSL https://zipkin.io/quickstart.sh | bash -s io.zipkin:zipkin-server:LATEST:slim zipkin.jar
java -jar zipkin.jar

Running via Docker:

docker run -d -p 9411:9411 openzipkin/zipkin-slim

download jar: https://mvnrepository.com/artifact/io.zipkin.java/zipkin-server

java -DKAFKA_BOOTSTRAP_SERVERS=kafka001:9092 -DSTORAGE_TYPE=elasticsearch -DES_HOSTS=http://localhost:9300 -jar zipkin.jar

五、应用配置

项目依赖:


<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">
    <!-- <parent>
        <groupId>demo</groupId>
        <artifactId>zipkin-demo</artifactId>
        <version>1.0.0.BUILD-SNAPSHOT</version>
    </parent> -->
    <modelVersion>4.0.0</modelVersion>

    <artifactId>backend</artifactId>
    <version>1.0-SNAPSHOT</version>

    <name>backend</name>
    <!-- FIXME change it to the project's website -->
    <url>http://www.example.com</url>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
                <java.version>1.8</java.version>
        <spring-cloud.version>Greenwich.SR1</spring-cloud.version>
         <maven-jar-plugin.version>3.1.1</maven-jar-plugin.version>
    </properties>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.5.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
 

 
    <dependencies>
        <!--kafka依赖-->
        <dependency>
            <groupId>org.springframework.kafka</groupId>
            <artifactId>spring-kafka</artifactId>
        </dependency>
        <!--zipkin客户端依赖,其包含了sleuth依赖-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-zipkin</artifactId>
        </dependency>
 
        <!--feign依赖-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>
        <!--actuator依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </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>

application.yaml:

server:
  port: 9000

spring:
  application:
    name: app2
  zipkin:
    base-url: http://localhost:9411
    sender:
      type: kafka
  sleuth:
    sampler:
      percentage: 1.0
  kafka:
    bootstrap-servers: kafka001:9092

详细代码请参考:https://github.com/hsn999/zipkin

                   或者:https://github.com/hsn999/start-cloud

猜你喜欢

转载自blog.csdn.net/h_sn9999/article/details/102698763