Spring Cloud 学习笔记 ——Sleath、Zipkin、RabbitMQ、ElasticSearch、Stream 搭建链路项目

17.2 实践

Spring Cloud 学习笔记 —— Spring Cloud Zipkin 简介和安装的基础上,我们创建一个项目,来在项目中实现 Sleath、Zipkin、RabbitMQ 的链路追踪

  • 1.创建一个 Spring Boot 项目 zipkin01,添加 Web、Sleath、Zipkin、RabbitMQ、Stream依赖,Stream 依赖是方便发送到消息队列
    在这里插入图片描述
    创建完项目,配置 application.properties
spring.application.name=zipkin03
# 开启链路追踪
spring.sleuth.web.client.enabled=true
# 配置采用比例,默认是 0.1,这里方便测试改为 1,即 100%
spring.sleuth.sampler.probability=1
# 配置 zipkin 地址
spring.zipkin.base-url=http://192.168.99.100:9411
# 开启 zipkin
spring.zipkin.enabled=true
# 设置消息发送的类型
spring.zipkin.sender.type=rabbit

# rabbitmq 配置
spring.rabbitmq.host=192.168.99.100
spring.rabbitmq.port=32773
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest

如上配置 ip 端口,参考 docker 中的显示:
在这里插入图片描述
创建一个测试的 Controller

@RestController
public class HelloController {
    private static final Logger logger = LoggerFactory.getLogger(HelloController.class);
    @GetMapping("/hello")
    public String hello(String name){
        logger.info("zipkin03-hello");
        return "hello" + name;
    }
}
  • 2.创建一个跟 zipkin03 一样的项目 zipkin04
    依赖一样,配置 application.properties 中添加 server.port 属性和更改 spring.application.name 属性
spring.application.name=zipkin04
server.port=8081
# 开启链路追踪
spring.sleuth.web.client.enabled=true
# 配置采用比例,默认是 0.1,这里方便测试改为 1,即 100%
spring.sleuth.sampler.probability=1
# 配置 zipkin 地址
spring.zipkin.base-url=http://192.168.99.100:9411
# 开启 zipkin
spring.zipkin.enabled=true
# 设置消息发送的类型
spring.zipkin.sender.type=rabbit

# rabbitmq 配置
spring.rabbitmq.host=192.168.99.100
spring.rabbitmq.port=32773
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest

然后这个基础上,在启动类上添加 RestTemplate 的 Bean

@SpringBootApplication
public class Zipkin04Application {

    public static void main(String[] args) {
        SpringApplication.run(Zipkin04Application.class, args);
    }

    @Bean
    RestTemplate restTemplate(){
        return new RestTemplate();
    }
}

创建一个测试的 Controller

@RestController
public class HelloController {
    private static final Logger logger = LoggerFactory.getLogger(HelloController.class);
        
    @Autowired
    RestTemplate restTemplate;
    @GetMapping("/hello")
    public void hello(){

        String s = restTemplate.getForObject("http://localhost:8080/hello?name={1}", String.class, "javaboy");
        logger.info(s);
    }
}
  • 3.启动 zipkin03 和 zipkin04 然后访问 zipkin04 的 /hello 接口
    在这里插入图片描述
    zipkin04的:链路[zipkin04,a1c7cc0516de881b,a1c7cc0516de881b]
    在这里插入图片描述
    zipkin03的:[zipkin03,a1c7cc0516de881b,2d5a409c88c1dc13]
    [zipkin04,a1c7cc0516de881b,a1c7cc0516de881b]和[zipkin03,a1c7cc0516de881b,2d5a409c88c1dc13]就好像从前一个传递过来一样
    观察 zipkin 管理页面
    在这里插入图片描述
    打开
    在这里插入图片描述
    Span ID:a1c7cc0516de881b Parent ID:None
    在这里插入图片描述
    Span ID:04dfe8955136bd89 Parent ID:a1c7cc0516de881b
    在这里插入图片描述
    Span ID:2d5a409c88c1dc13 Parent ID:04dfe8955136bd89
    总计:
    Span ID:a1c7cc0516de881b Parent ID:None
    Span ID:04dfe8955136bd89 Parent ID:a1c7cc0516de881b
    Span ID:2d5a409c88c1dc13 Parent ID:04dfe8955136bd89
    可以看到其实有 3 个 spanId :
    第一个是请求进入 zipkon04 服务时;
    第二个是从 zipkin04 到 RestTemplate 调用产生的 ;
    第三个是从 RestTemplate 到 zipkon03 产生的;
    这就是 zipkin 展示链路的过程,跟 kibana 的功能类似;
  • 4.所展示的内容就是 es-head 中的数据内容
    在这里插入图片描述
    还可以观看 RabbitMQ,它有一个队列就 zipkin
    在这里插入图片描述
    这就是 Sleuth、zipkin、RabbitMQ、ElasticSearch 搭建的日志查看功能,首先 Sleuth 收集日志,发送给 RabbitMQ 队列,RabbitMQ 队列发送给 ElasticSearch 储存,然后 Zipkin 展示 ElasticSearch 中的内容,以人性化的可视页面显示调用链路过程
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值