夜已深,注意休息哦!

编程开发

Spring Cloud 微服务入门教程(十一):Spring Cloud Sleuth zipkin 服务追踪链路监控

2020年03月02日 12:26:19 · 本文共 2,873 字阅读时间约 10分钟 · 3,991 次浏览
Spring Cloud 微服务入门教程(十一):Spring Cloud Sleuth zipkin 服务追踪链路监控

上一节我们讲了服务熔断和降级,基本已经可以搭建出一个比较完整的微服务架构了,但是微服务架构是分布式的,每个服务之间相互独立运行又相互依赖,如果一旦出现问题,我们很难排查是哪里出现了问题,所以还需要一个服务追踪的解决办法,那就是 Spring Cloud Sleuth 可以实现服务追踪和链路监控。

Google开源的 Dapper链路追踪组件,并在2010年发表了论文《Dapper, a Large-Scale Distributed Systems Tracing Infrastructure》,这篇文章是业内实现链路追踪的标杆和理论基础,具有非常大的参考价值。目前,链路追踪有Google的Dapper,Twitter 的Zipkin,以及阿里的Eagleeye (鹰眼)等。本节主要讲解在Spring Cloud Sleuth中集成Zipkin。在Spring Cloud Sleuth中集成Zipkin非常的简单,只需要引入相应的依赖和做相关的配置即可。

安装必要的环境

在开始之前,你还需要准备一下环境,我使用的是在docker中运行Zipkin,因为主题是微服务,docker的安装就不再赘述了,直接提供docker的安装镜像命令:

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

添加依赖

我们以democlient为演示案例,修改POM文件,添加spring-cloud-starter-zipkin依赖,它其实还会依赖spring-cloud-starter-sleuth和spring-cloud-sleuth-zipkin,所以我们不用写这两个的依赖了,只写spring-cloud-starter-zipkin即可,POM文件如下:

<?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">
    <parent>
        <artifactId>cloud</artifactId>
        <groupId>net.renfei</groupId>
        <version>1.0.0</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>
    <groupId>net.renfei</groupId>
    <artifactId>democlient</artifactId>
    <version>1.0.0</version>
    <name>demo-client</name>
    <description>演示服务</description>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>net.renfei</groupId>
            <artifactId>apicenter</artifactId>
            <version>1.0.0</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-config-client</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bus-amqp</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-stream-rabbit</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-zipkin</artifactId>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

然后修改配置文件,为了方便演示,我直接修改bootstrap.yml配置文件:

spring:
  zipkin:
    base-url: http://localhost:9411/
  sleuth:
    sampler:
      rate: 100

其中配置了spring.zipkin.base-url,这个是配置我们Zipkin的访问地址;spring.sleuth.sampler.rate是配置了每秒速率限制,如果不做限制当业务量非常大时我们的网络和监控服务可能会有非常大的压力,所以需要配置一个限制,每秒上报多少,基本就能找到原因了。

然后我们依次启动注册中心、配置中心、各个服务模块、服务网关,然后访问以下democlient提供的服务,再到Zipkin上去看一下,就可以看到这次请求的链路和内容了,如图:

zipkin

在控制台我们也看到了链路的ID,最后的true就是指对外发送给Zipkin,如图:

链路监控
商业用途请联系作者获得授权。
版权声明:本文为博主「任霏」原创文章,遵循 CC BY-NC-SA 4.0 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.renfei.net/posts/1003332
评论与留言

以下内容均由网友提交发布,版权与真实性无法查证,请自行辨别。

微信搜一搜:任霏博客