写点什么

spring-cloud 链路追踪

作者:Rubble
  • 2022 年 4 月 11 日
  • 本文字数:1489 字

    阅读完需:约 5 分钟

spring-cloud 链路追踪

为什么需要链路追踪?可以理清微服务间的调用关系;可以快速查询日志;可以实施系统监控;


根据 traceId 可以方便的查看这个服务的调用过程,请求参数、调用类、方法、lineNum、message 信息;


目前主要的一些 APM 工具有: Cat、Zipkin、Pinpoint、SkyWalking。

一、spring-cloud-sleuth

官网: https://spring.io/projects/spring-cloud-sleuth


准备工作:docker 安装 zipkin server,nacos 注册中心默认已有 docker pull openzipkin/zipkin


docker run --name zipkin -d -p 9411:9411 openzipkin/zipkin


访问 zipkin 服务:http://localhost:9411/zipkin/


开始构建项目 paw-trace-sleuth,添加依赖


<dependencyManagement>    <dependencies>        <dependency>            <groupId>org.springframework.cloud</groupId>            <artifactId>spring-cloud-dependencies</artifactId>            <version>${release.train.version}</version>            <type>pom</type>            <scope>import</scope>        </dependency>    </dependencies></dependencyManagement><dependencies>    <dependency>        <groupId>org.springframework.cloud</groupId>        <artifactId>spring-cloud-starter-sleuth</artifactId>    </dependency></dependencies>
复制代码


未加依赖之前日志


引入 sleuth 依赖后日志


将数据发送到 zipkin sever。zipkin 配置 spring:zipkin:base-url: http://localhost:9411/


写一个服务调用 注册中心 nacos,用 openfeign 调用增加依赖,并在启动类开始 @EnableDiscoveryClient @EnableFeignClients


<dependency>  <groupId>com.alibaba.cloud</groupId>  <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency>
<dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId></dependency>
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId></dependency>
复制代码


定义 feignclient


@FeignClient("paw-trace-sleuth-b")public interface SleuthBFeignClient {
@GetMapping("/sleuthB") public String sleuthB();}
复制代码


服务调用


@Slf4j@RestControllerpublic class SleuthController {
@Autowired private SleuthBFeignClient sleuthBFeignClient;
@GetMapping("/sleuth") public String sleuth(){ log.info("==== sleuth"); String sleuthB = sleuthBFeignClient.sleuthB(); log.info(sleuthB); return "sleuth"; }
}
复制代码


创建服务调用的项目项目 paw-trace-sleuth-b,配置过程同上增加 feign 调用的开放接口


@RestControllerpublic class SleuthBController {
@GetMapping("/sleuthB") public String sleuthB(){ log.info("sleuthB"); return "sleuthB"; }}
复制代码


启动项目,查看日志,链路已生成




访问记录已发送到 zipkin sever 端。



show 显示详细信息。



官网文档,slf4j 的 logback 日志已经添加了默认的日志格式,可以自定义 logback-spring.xml 日志。



zipkin 默认用内存存储数据,实际项目中一般用 kafa+ES 存储数据 docker 方式:


docker run -it -d --restart=always -e KAFKA_BOOTSTRAP_SERVERS=10.0.1.66:9092


-e STORAGE_TYPE=elasticsearch -e ES_HOSTS=http://10.0.1.66:9200 -p 10086:9411 openzipkin/zipkin


启动 jar 的方式 java -DKAFKA_ZOOKEEPER=10.22.0.130:2181 -DSTORAGE_TYPE=elasticsearch-DES_HOSTS=http://10.22.0.130:9200 -jar zipkin.jar

用户头像

Rubble

关注

还未添加个人签名 2021.06.01 加入

还未添加个人简介

评论

发布
暂无评论
spring-cloud 链路追踪_4月日更_Rubble_InfoQ写作平台