天天看點

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