解决如何定位哪一段微服务间的过程耗时问题
zipkin为分布式链路调用监控系统,聚合各业务系统调用延迟数据,达到链路调用监控跟踪。zipkin类似于日志的高级版,跟踪监控。访问地址:localhost:9411/zipkin/
如何使用 ZipKin
1.添加starter-zipkin依赖(包含了sleuth-zipkin、starter-sleuth依赖)
2.配置zipkin的base-url
3.抽样的百分比观察,比如默认只把百分之10的发到zipkin,配置sleuth-sampler-percentage为1,1就是所有的都发过去
- docker 方式运行 zipkin
<!--包含sleuth和zipkin--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-zipkin</artifactId> </dependency>
spring: application: name: order cloud: config: discovery: enabled: true service-id: CONFIG profile: test stream: bindings: myMessage: group: order content-type: application/json zipkin: base-url: http://localhost:9411/ sleuth: sampler: percentage: 1 eureka: client: service-url: defaultZone: http://localhost:8761/eureka/ hystrix: command: default: execution: isolation: thread: timeoutInMilliseconds: 3000 getProductInfoList: execution: isolation: thread: timeoutInMilliseconds: 3000 feign: hystrix: enabled: true logging: level: org.springframework.cloud.netflix.feign: debug
- org.springframework.cloud.netflix.feign: debug:只对这个包进行 debug 日志输出。
- percentage:设置抽样比例,1就是100% ,0.1就是10%,默认 0.1
- 链路追踪的记录,第一个当前服务名,第二个链路ID整条就一个,第三个是各个阶段的ID各自不同。第四个值是否输出到外部(默认:false,如果配置了百分比则为 true),比如zipkin去观察。