在spring-cloud的Finchley.SR1 版本中使用 zipkin+kafka+elasticsearch实现链路追踪

本文主要使用Spring Cloud Sleuth来实现分布式链路追踪,利用Kafka实现异步的方式通信实现分布式追踪,使用Elasticsearch持久化追踪日志数据,使用Zipkin-Server查看追踪内容。

关于搭建Spring Cloud微服务,安装zk、kafka、elasticsearch的就不在此重复了。直接进入主题。

1、搭建Zipkin-Server

     在Spring Cloud Finchley.SR1之前可以通过配置和代码自己搭建Zipkin-Server​​​​​​​,笔者也是在此入坑,找相关资料试着搭建,始终找不到相关依赖。通过看官方文档才发现,可以直接下载Zipkin-Server的jar包直接运行,但是默认通过http方式进行通信,而且数据默认存到内存,缺点就是如果在Zipkin-Server挂了的情况下,http请求失败,造成数据丢失,存量数据可能也无法找回。所以可以通过运行参数,设置Zipkin-Server 通过利用Kafka实现异步的分布式追踪,使用Elasticsearch持久化追踪日志数据。

jar包下载地址:

https://search.maven.org/remote_content?g=io.zipkin.java&a=zipkin-server&v=LATEST&c=exec

启动命名如下:

java -DKAFKA_BOOTSTRAP_SERVERS=10.6.20.122:9092,10.6.20.165:9092 -DSTORAGE_TYPE=elasticsearch -DES_HOSTS=http://10.6.20.122:9200 -jar zipkin-server-2.10.1-exec.jar

参数说明:

KAFKA_BOOTSTRAP_SERVERS:kafka的ip和端口

STORAGE_TYPE 存储数据方式可以为 memmysqlcassandraelasticsearch

ES_HOSTS  es的url 

详细请移步官方githup https://github.com/openzipkin/zipkin/tree/master/zipkin-server

启动后访问url :

http://***:9411/zipkin

 

2、在需要追踪的服务中添加 dependency

  <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-zipkin</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.kafka</groupId>
            <artifactId>spring-kafka</artifactId>
            <version>2.1.8.RELEASE</version>
        </dependency>

3、在需要追踪的服务中添加配置   修改 application.yml

spring:
#  zipkin:
#      base-url: http://127.0.0.1:9411  #默认http通信的配置方式
  zipkin:
    sender:
      type: kafka  # 支持三种 方式  RABBIT, KAFKA, WEB
    service:
      name: microservicedemo-orders #可以和 application.name 同名 但是必须设置
  sleuth:
    sampler:
      probability: 1.0 # 定义抽样比率,默认为0.1
  kafka:
    bootstrap-servers: 10.6.20.122:9092,10.6.20.165:9092

4、测试:模拟调用服务,可以测试A调B、B调C。打开 http://***:9411/zipkin

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值