追踪微服务的调用路径
因为想要一个结果可能是由一个微服务调用另一个,另一个继续调用,这个过程中需要进行监控,其中一个出问题都会引起整个请求失败,不建议微服务中链路调用超过3次
sleuth+Zipkin
spring cloud从F版开始不需要自己构建Zipkun server,只需要调用jar包
下载地址:
https://repo1.maven.org/maven2/io/zipkin/zipkin-server/
运行:
java -jar zipkin-server-2.23.9-exec.jar


继续使用feign结构化工程项目,因为项目中都是对api进行依赖,所以需在api的pom中添加zipkin依赖
<dependency>
<groupId>org.springframework.cloudgroupId>
<artifactId>spring-cloud-starter-zipkinartifactId>
dependency>
修改order-center、user-center的yml
spring:
zipkin:
base-url: http://localhost:9411
sleuth:
sampler:
probability: 1 #配置采样率 默认的采样比例为: 0.1,即 10%,所设 置的值介于 0 到 1 之间,1 则表示全部采集
rate: 10 #为了使用速率限制采样器,选择每秒间隔接受的 trace 量,最小数字为 0,最大值为 2,147,483,647(最大 int) 默认为 10
启动服务,进行调用后,查看Zipkin


会发现速度越来越快,但有时候突然变慢,因为采集数据也有影响
创建一个spring boot项目,搜索admin依赖,server是监控端,client是被监控端

选择server,在加入web依赖

修改版本号

当要监控多个微服务时,每个都进行client依赖是很麻烦的,所以可以将admin监控端在注册中心中注册,拉取服务列表后通过心跳监测就能做到监控

加入Eureka、Spring Cloud依赖
<properties>
<java.version>1.8java.version>
<project.build.sourceEncoding>UTF-8project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8project.reporting.outputEncoding>
<spring-boot-admin.version>2.3.0spring-boot-admin.version>
<spring-boot.version>2.3.12.RELEASEspring-boot.version>
<spring-cloud.version>Hoxton.SR12spring-cloud.version>
properties>
<dependency>
<groupId>org.springframework.cloudgroupId>
<artifactId>spring-cloud-dependenciesartifactId>
<version>${spring-cloud.version}version>
<type>pomtype>
<scope>importscope>
dependency>
<dependency>
<groupId>org.springframework.cloudgroupId>
<artifactId>spring-cloud-starter-netflix-eureka-clientartifactId>
<version>2.2.9.RELEASEversion>
dependency>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-dependenciesartifactId>
<version>${spring-boot.version}version>
<type>pomtype>
<scope>importscope>
dependency>
<dependency>
<groupId>de.codecentricgroupId>
<artifactId>spring-boot-admin-dependenciesartifactId>
<version>${spring-boot-admin.version}version>
<type>pomtype>
<scope>importscope>
dependency>
dependencies>
dependencyManagement>
修改启动类名称,添加Eureka客户端注解、admin监控端注解
@EnableEurekaClient
@EnableAdminServer
修改yml文件
server:
port: 1000
spring:
application:
name: admin-server
eureka:
client:
service-url: http://localhost:8761/eureka
instance:
instance-id: ${eureka.instance.hostname}:${spring.application.name}:${server.port}
hostname: localhost
启动,访问

在yml添加配置:
management:
endpoints:
web:
exposure:
include: '*' #暴露所有的监控端点
会显示它的详细信息

若某一个服务想被监控,需要添加依赖
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-actuatorartifactId>
dependency>
专门暴露自身情况
接着修改yml文件
management:
endpoints:
web:
exposure:
include: '*' #暴露所有的监控端点
若添加,在EndPoints中的Mappings会有信息,反之不会有
