在需要加监控的服务上进行以下操作
一、加入Sleuth
- 加依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-sleuth</artifactId>
</dependency>
二、加入Zipkin
2.1 使用http的方式
sleuth加入之后是没有界面的,所以我们需要使用Zipkin。
服务端:
- 下载Zipkin,下载地址:https://dl.bintray.com/openzipkin/maven/io/zipkin/java/zipkin-server/
- 启动zipkin Server
java -jar .\zipkin-server-2.12.9-exec.jar
- 进入网页
客户端:
- 加依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>
- 加配置文件
spring.zipkin.base-url=http://localhost:9411/
spring.sleuth.web.client.enabled=true
#采样比例,默认0.1,1表示全部上报
spring.sleuth.sampler.probability=1
配置完成,接下来可以在调用接口,然后进入zipkin的网页里查找调用记录了
2.2 升级为使用MQ
因为每次调用微服务接口都要上报数据,服务端的压力就会很大,所以可以选择采用mq的方式进行削峰,解耦
- 加参数启动zipkin服务端
RABBIT_ADDRESSES=localhost java -jar ../zipkin-server-2.12.9-exec.jar
- 加依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-stream-binder-rabbit</artifactId>
</dependency>
- 修改参数
#配置zipkin
#spring.zipkin.base-url=http://localhost:9411/
spring.zipkin.sender.type=rabbit
spring.sleuth.web.client.enabled=true
#采样比例,默认0.1,1表示全部上报
spring.sleuth.sampler.probability=1
spring.rabbitmq.host=localhost
spring.rabbitmq.port=5672
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest
spring.rabbitmq.virtual-host=/
再次调用就是使用mq的方式上报了。
2.3 使用数据库存储
目前数据上报都是存在内存中的,zipkin Server重启数据就没了,所以我们可以需要持久化一下,常用的方式是存ES或者mysql,这里演示mysql的做法。
- 创建数据库zipkin
- 执行官方提供的sql脚本建表
- 使用以下命令启动
RABBIT_ADDRESSES=localhost STORAGE_TYPE=mysql MYSQL_USER=root MYSQL_PASS=root MYSQL_HOST=localhost MYSQL_TCP_PORT=3306 java -jar zipkin-server-2.12.9-exec.jar
- 调用微服务
发现数据库已经开始写入数据,重启zipkin,再查找,数据还在,表示成功