SpringCloud整合分佈式服務跟蹤zipkin

一、zipkin

zipkin是Twitter的一個開源項目,它基於Google Dapper實現。咱們可使用它來收集各個服務器上請求鏈路的跟蹤數據,並經過它提供的REST API接口來輔助咱們查詢跟蹤數據以實現對分佈式系統的監控程序,從而及時地發現系統中出現的延遲升高問題並找出系統性能瓶頸的根源。除了面向開發的API接口以外,它也提供了方便的UI組件來幫助咱們直觀的搜索跟蹤信息和分析請求鏈路明細,好比:能夠查詢某段時間內各用戶請求的處理時間等。java

zipkin的架構圖以下:git

由上面的架構圖能夠看出,zipkin有四個核心組件:

  • Collector:收集器組件,它主要用於處理從外部系統發送過來的跟蹤信息,將這些信息轉換爲zipkin內部處理的Span格式,以支持後續的存儲、分析、展現等功能。
  • Storage:存儲組件,它主要對處理收集器接收到的跟蹤信息,默認會將這些信息存儲在內存中,咱們也能夠修改此存儲策略,經過使用其餘存儲組件將跟蹤信息存儲到數據庫中,目前支持的數據庫有Mysql、Cassandra和Elasticsearch。
  • API:API組件,提供給UI組件,展現跟蹤信息。
  • UI:UI組件,基於API組件實現的上層應用。經過UI組件用戶能夠方便而有直觀地查詢和分析跟蹤信息。

二、構建zipkin-server

目前最新版的zipkin-server,是直接到官網獲取最新可執行的jar,而後直接運行該jar文件,例如:github

curl -sSL https://zipkin.io/quickstart.sh | bash -s
java -jar zipkin.jar
複製代碼

也能夠用docker啓動,在此經過docker來啓動zipkin-server服務。spring

因爲在此存儲組件使用Elasticsearch,因此先經過docker將Elasticsearch啓動,執行以下命令:sql

docker run -d -p 9200:9200 --name es elasticsearch:6.6.0
複製代碼

若是在啓動elasticsearch的時候出現以下錯誤:docker

[1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
複製代碼

能夠先執行以下命令解決:數據庫

sysctl -w vm.max_map_count=262144
複製代碼

接下來,啓動zipkin-server服務,執行以下命令:瀏覽器

docker run -d -e STORAGE_TYPE=elasticsearch -e ES_HOSTS=192.168.208.134:9200 -p 9411:9411 --name zipkin openzipkin/zipkin:2.12.1
複製代碼

經過瀏覽器打開http://192.168.208.134:9411頁面,若是出現以下界面,則表示zipkin-server服務啓動成功了:bash

三、微服務集成zipkin

在原來微服務的pom文件中,添加以下的依賴:服務器

<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>
複製代碼

而後在application.yml文件須要新增以下配置:

spring:
  zipkin:
    base-url: http://192.168.208.134:9411
  sleuth:
    sampler:
      percentage: 1
複製代碼

其中spring.sleuth.sampler.percentage表示收集跟蹤信息的比例,1表示所有收集,它的值的範圍是0-1之間的。

四、部署zipkin-dependencies

因爲新版本當中,若是須要查看各個微服務之間的依賴關係,則必須要部署zipkin-dependencies,此處仍是經過docker來部署,因爲zipkin-dependencies運行一次就會結束,因此可讓其每小時運行一次,即:

docker run -e STORAGE_TYPE=elasticsearch -e ES_HOSTS=192.168.208.134:9200 openzipkin/zipkin-dependencies:2.0.4 sh -c 'crond -f'
複製代碼

五、參考資料

zipkin.io/

github.com/openzipkin/…

github.com/openzipkin/…

關注我

以你最方便的方式關注我: 微信公衆號:

架構與我
相關文章
相關標籤/搜索