SpringCloud笔记六:分布式链路追踪系统Sleuth和ZipKin
文章目录
微服务下链路追踪
- 链路系统就是追踪数据在各个服务传递的情况。可以通过链路追踪系统知道那个系统传递的比较慢。
分布式链路追踪组件Sleuth
- 什么是Sleuth
一个组件,专门用于追踪每个请求的完整调用链路。做日志埋点。
- 官方学习文档
- 引入Sleuth后,console会打印一些信息
[api-gateway,e4686f96e42f9d3c,e4686f96e42f9d3c,false]
第一个:是服务名
第二个:是e4686f96e42f9d3c,这个是sleuth生成的一个ID,叫TraceID,用来标识一条请求链路,一条请求链路中包含一个Trace ID,多个Span ID
第三个:spanID,基本的工作单元,获取元数据,如发送一个http
第四个:false,是否要将该信息输出到zipkin服务中来收集和展示。
链路组件Sleuth常见问题
- 日志级别问题:会出现有的服务没有TraceId和spanID
解决方案:
1、添加LoggerBack日志,通过打点日志得以解决。
private final Logger logger=LoggerFactory.getLogger(getClass());
logger.info(“service findById”);
可视化链路跟踪系统Zipkin
- 什么是Zipkin
官网:https://zipkin.io/
大规模分布式系统的APM工具:基于Google Dapper的基础实现和Sleuth结合可以提供可视化界面分析调用链路耗时情况。
- 同类产品
鹰眼(EagleEye)
twitter开源Zipkin结合Sleuth
pinpint,运用javaAgent字节码增强技术
StackDriver Trace(google)
- 开始使用
Zipkin组成:Controller,Storage,Restful,API,Web UI组成。
- OpenTracing知识扩展
OpenTrancing 已经进入CNCF,正在为全球的分布式追踪,提供统一的概念和数据标准。通过提供平台无关,厂商无关的API,使得开发人员能够方便的添加或更换追踪系统的实现。
链路追踪组件Zipkin+Sleuth
- 官方文档
- Sleuth和Zipkin关系
Sleuth收集跟踪信息通过http请求发送给zipkin Server,zipkinServer进行跟踪信息的存储以及提供Rest API即可,Zipkin UI调用其API接口进行数据展示。
默认存储是内存,也可用mysql,ElasticSearch等存储。
- 加入依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>
这个依赖里面又包含 spring-cloud-starter-sleuth、spring-cloud-sleuth-zipkin
- 配置basse-url 这个是访问zipkin的路径
spring:
zipkin:
base-url: http://localhost:9411/
- 配置采样百分比:生产环境默认配置,10%,测试环境可以配置100%
spring:
zipkin:
base-url: http://localhost:9411/
sleuth:
sampler:
probability: 1