在springcloud工程中添加链路跟踪,提高运维能力
首先说下整体逻辑,springcloud中提供了sleuth作为链路跟踪框架,能够很好的和zipkin结合。服务中集成zipkin后,会生成相应的traceId和spanId, traceId和spanId根据请求链路传到相应的微服务中,保持一个请求的整个traceId一致,这样在服务日志分散在各处的微服务系统中查询问题日志比较简单。Zipkin会将trace消息通过http、mq、kafka等形式发送给zipkin服务器,zipkin服务器可以将消息存储在服务器本地、es、mysql、Cassandra等存储器中。通过zipkin服务的页面可以查看到相应的请求链路、耗时等信息
样图:
- 配置客户端
每个微服务都需要添加如下信息
- 添加maven依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>
zipkin-starter 中包含spring-cloud-starter-sleuth和spring-cloud-sleuth-zipkin,所以不用单独添加sleuth
- 配置文件中添加相应配置
spring:
application:
name: server-zipkin-01
sleuth:
#监控开关
enabled: true
#采样率
sampler:
percentage: 1.0
#kafka配置
kafka:
bootstrap-servers: 172.22.3.11:9091,172.22.3.11:9092,172.22.3.11:9093
spring.sleuth.enabled=true 打开链路跟踪功能
spring.sleuth.sampler.percentage-1.0 采样率为100%
spring.kafka.bootstrap-servers=… kafka集群的zookeeper地址
- 配置服务端
Zipkin官网:https://zipkin.io/
下载zipkin.jar
curl
-sSL https://zipkin.io/quickstart.sh | bash
-s
java -jar zipkin.jar
通过java –jar 启动。
java -DCOLLECTOR_KAFKA_ENABLED=true -DKAFKA_BOOTSTRAP_SERVERS=172.22.3.11:9091,172.22.3.11:9092,172.22.3.11:9093 -DSTORAGE_TYPE=elasticsearch -DES_HOSTS=http://172.19.135.222:9200/ -DES_INDEX=zipkin -jar zipkin.jar
COLLECTOR_KAFKA_ENABLED是否启用kafka接收消息
KAFKA_BOOTSTRAP_SERVERS kafka集群的zookeeper地址
STORAGE_TYPE 存储数据源仓库类型
ES_HOSTS es地址
启动的时候可以带入相应参数,其中参数定义可以参考jar包里的配置文件
此文省略kafka、es的搭建