spring-cloud 链路追踪

举报
琴岛蛏子 发表于 2022/03/21 00:03:48 2022/03/21
【摘要】 spring-cloud 链路追踪为什么需要链路追踪?可以理清微服务间的调用关系;可以快速查询日志;可以实施系统监控;根据traceId可以方便的查看这个服务的调用过程,请求参数、调用类、方法、lineNum、message信息;目前主要的一些 APM 工具有: Cat、Zipkin、Pinpoint、SkyWalking。 一、spring-cloud-sleuth官网: https:/...

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
@RestController
public 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调用的开放接口

@RestController
public class SleuthBController {

  @GetMapping("/sleuthB")
  public String sleuthB(){
    log.info("sleuthB");
    return "sleuthB";
  }
}

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

image062101.png

image062102.png

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

062103.png

show 显示详细信息。

062104.png

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

062105.png

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

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。