链路追踪组件
当我们在发送的请求的时候突然出现错误的时候出现错误了,如果对于单体系统来说找到对应哪里出了问题应该没有什么大问题,但对于分布式系统,尤其是微服务系统中,需要多个模块,多个中间件,多台机器相互调用才能完成,虽然控制台里面同样可以看到日志,但是我们也不能确定哪些请求调用了哪些应用?哪些模块?,因此我们是不是可以给每个微服务的日志中每个请求前面加上一个特定的key值来区分他们,就像一条链子一样,将它的每一条请求在各个微服务中连接起来,我们可以找到它
没有加Sleuth组件的日志输出格式:
集成链路追踪组件Sleuth
只需在product-server和order-server中添加sleuth依赖
<!--链路追踪组件--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-sleuth</artifactId> </dependency>
订单服务日志结果:
商品服务日志结果:
日志格式:
[order-server,c323c72e7009c077,fba72d9c65745e60,false]
1、第一个值,spring.application.name的值
2、第二个值,c323c72e7009c077,sleuth生成的一个ID,叫Trace lD,用来标识一条请求链路,一条请求链路中包含一个Trace lD,多个Span iD
3、第三个值,fba72d9c65745e60、spanlD基本的工作单元,获取元数据,如发送一个http
4、第四个值: true,是否要将该信息输出到zipkin服务中来收集和展示。
方便我们进行错误排查
Zipkin+Sleuth整合
1.下载zipkin的jar包
2.通过命令行,输入下面的命令启动ZipKin Server
java -jar zipkin-server-2.23.9-exec.jar
3.通过浏览器访问
4.在订单微服务和商品微服务中添加zipkin依赖
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-zipkin</artifactId> </dependency>
5.在订单微服务和商品微服务中添加如下配置
spring: zipkin: base-url: http://43.143.161.59:9411/ #zipkin-server的请求地址 discoveryClientEnabled: false #让nacos把它当成一个URL,而不要当成服务名 sleuth: sampler: probability: 1.0 #采样的百分比
测试: