天天看点

zipkin基于RabbitMQ消息中间件收集数据

在默认情况下,Zipkin客户端和Server之间是使用HTTP请求的方式进行通信(即同步的请求方式),在
网络波动,Server端异常等情况下可能存在信息收集不及时的问题。Zipkin支持与rabbitMQ整合完成异
步消息传输。
           

RabbitMQ的安装与启动

(1):下载erlang,原因在于RabbitMQ服务端代码是使用并发式语言erlang编写的,下载地址:http://www.erlang.org/downloads,双击.exe文件进行安装就好,安装完成之后创建一个名为ERLANG_HOME的环境变量,其值指向erlang的安装目录,同时将bin目录路径加入到PATH变量中,最后打开命令行,输入erl,如果出现erlang的版本信息就表示erlang语言环境安装成功;

zipkin基于RabbitMQ消息中间件收集数据
zipkin基于RabbitMQ消息中间件收集数据

(2):下载RabbitMQ,下载地址:http://www.rabbitmq.com/

(3):安装RabbitMQ-Plugins,这个相当于是一个管理界面,方便我们在浏览器界面查看RabbitMQ各个消息队列以及exchange的工作情况,安装方法是:打开命令行cd进入rabbitmq的sbin目录,输入:rabbitmq-plugins enable rabbitmq_management命令,稍等会会发现出现plugins安装成功的提示,默认是安装6个插件,我安装RabbitMQ插件时只成功了3个,一开始无法访问页面。

解决方法是:首先在命令行输入:rabbitmq-service stop,接着输入rabbitmq-service remove,再接着输入rabbitmq-service install,接着输入rabbitmq-service start,最后重新输入rabbitmq-plugins enable rabbitmq_management

这样就成功访问了,访问地址:127.0.0.1:15672

客户端配置

(1) 配置依赖

<!--sleuth链路追踪-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-sleuth</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-zipkin</artifactId>
        </dependency>
        <!--使用rabbitmq消息中间件-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-sleuth-zipkin</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.amqp</groupId>
            <artifactId>spring-rabbit</artifactId>
        </dependency>
           

导入spring-rabbit 依赖,是Spring提供的对rabbit的封装,客户端会根据配置自动的生产消息并发送

到目标队列中

(2) 配置消息中间件rabbit mq地址等信息

zipkin:
    #base-url: http://127.0.0.1:9411/  #zipkin server的请求地址
    sender:
      #type: rabbit
      type: web  #请求方式,默认以http的方式向zipkin server发送追踪数据
  sleuth:
    sampler:
      probability: 1.0  #采样的百分比
  rabbitmq:
    host: localhost
    port: 5672 #
    username: guest
    password: guest
    listener: # 这里配置了重试策略
      direct:
        retry:
          enabled: true
      simple:
        retry:
          enabled: true
           

15672 为网页管理端口 这里是5672端口

(3) 测试

关闭Zipkin Server,并随意请求连接。打开rabbitmq管理后台可以看到,消息已经推送到rabbitmq。

当Zipkin Server启动时,会自动的从rabbitmq获取消息并消费,展示追踪数据

可以看到如下效果:

请求的耗时时间不会出现突然耗时特长的情况

当ZipkinServer不可用时(比如关闭、网络不通等),追踪信息不会丢失,因为这些信息会保存在

Rabbitmq服务器上,直到Zipkin服务器可用时,再从Rabbitmq中取出这段时间的信息.

zipkin server启动命令:

java -jar zipkin-server-2.19.2-exec.jar --RABBIT_ADDRESSES=127.0.0.1:5672