1.概述

在微服务系统中,随着业务的发展,系统会变得越来越大,那么各个服务之间的调用关系也就变得越来越复杂。一个 HTTP 请求会调用多个不同的微服务来处理返回最后的结果,在这个调用过程中,可能会因为某个服务出现网络延迟过高或发送错误导致请求失败,这个时候,对请求调用的监控就显得尤为重要了。Spring Cloud Sleuth 提供了分布式服务链路监控的解决方案。下面介绍 Spring Cloud Sleuth 整合 Zipkin 的解决方案。

2. Zipkin 整合

Zipkin 是 Twitter 的一个开源项目,它基于 Google Dapper 实现的。我们可以使用它来收集各个服务器上请求链路的跟踪数据,并通过它提供的 REST API 接口来辅助查询跟踪数据以实现对分布式系统的监控程序,从而及时发现系统中出现的延迟过高问题。除了面向开发的 API 接口之外,它还提供了方便的 UI 组件来帮助我们直观地搜索跟踪信息和分析请求链路明细,比如可以查询某段时间内各用户请求的处理时间等。

2.1 Zipkin环境搭建

下载ZIPKING SERVER

https://dl.bintray.com/openzipkin/maven/io/zipkin/java/zipkin-server/

我下载的版本是 2.11.7

zipkin-server-2.11.7-exec.jar

启动 zipkin server

java -jar .\zipkin-server-2.11.7-exec.jar

默认的端口为 9411 ,当然这个端口可以指定 server.port=7777

java -jar .\zipkin-server-2.11.7-exec.jar --server.port=7777

java -jar .\zipkin-server-2.11.7-exec.jar --server.port=7777 --logging.level.zipkin2=ERROR

指定启动日志模式。

默认启动方式会将日志数据存在内存中,一旦服务重启会清空数据,建议使用es进行持久化存储。

2.2 程序整合Zipkin

在 jpaas-share 模块中增加依赖。

<dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-zipkin</artifactId>
        </dependency>

在 nacos 中做配置如下

修改 nacos-config-dev.properties

增加配置:

//配置zipkin 的地址
spring.zipkin.base-url=http://localhost:9411/
spring.zipkin.discoveryClientEnabled=false
/*
配置采样率,配置为 1 时,表示全部采样,一般生产环境配置为 0.1 就好。
如果不采样,那么将采样率设置 为0 。
*/
spring.sleuth.sampler.probability=1

2.3 测试调用链

比如我们以启动流程,启动流程是调用了表单的微服务,我们可以通过这个图看到微服务的调用关系。

文档更新时间: 2021-04-19 10:23   作者:zyg