在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

  
            org.springframework.cloud
            spring-cloud-starter-zipkin
        

        
            org.springframework.kafka
            spring-kafka
            2.1.8.RELEASE
        

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

在spring-cloud的Finchley.SR1 版本中使用 zipkin+kafka+elasticsearch实现链路追踪_第1张图片

 

你可能感兴趣的:(java)