溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

鏈路追蹤工具Zipkin如何安裝使用

發(fā)布時(shí)間:2021-12-04 11:12:22 來源:億速云 閱讀:656 作者:小新 欄目:大數(shù)據(jù)

這篇文章將為大家詳細(xì)講解有關(guān)鏈路追蹤工具Zipkin如何安裝使用,小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。

前言

Zipkin 是一個(gè)開放源代碼分布式的跟蹤系統(tǒng),每個(gè)服務(wù)向zipkin報(bào)告計(jì)時(shí)數(shù)據(jù),zipkin會根據(jù)調(diào)用關(guān)系通過Zipkin UI生成依賴關(guān)系圖。

Zipkin提供了可插拔數(shù)據(jù)存儲方式:In-Memory、MySql、Cassandra以及Elasticsearch。為了方便在開發(fā)環(huán)境我直接采用了In-Memory方式進(jìn)行存儲,生產(chǎn)數(shù)據(jù)量大的情況則推薦使用Elasticsearch。

基本操作

Zipkin是一個(gè)分布式跟蹤系統(tǒng)。它有助于收集解決服務(wù)體系結(jié)構(gòu)中的延遲問題所需的時(shí)序數(shù)據(jù)。功能包括該數(shù)據(jù)的收集和查找。

如果日志文件中有跟蹤ID,則可以直接跳至該跟蹤ID。否則,您可以基于屬性進(jìn)行查詢,例如服務(wù),操作名稱,標(biāo)簽和持續(xù)時(shí)間。將為您總結(jié)一些有趣的數(shù)據(jù),例如在服務(wù)中花費(fèi)的時(shí)間百分比以及操作是否失敗。

鏈路追蹤工具Zipkin如何安裝使用

Zipkin UI還提供了一個(gè)依賴關(guān)系圖,該關(guān)系圖顯示了每個(gè)應(yīng)用程序中跟蹤了多少個(gè)請求。這對于識別包括錯(cuò)誤路徑或?qū)Σ毁澇墒褂玫姆?wù)的調(diào)用在內(nèi)的匯總行為可能會有所幫助。

鏈路追蹤工具Zipkin如何安裝使用

構(gòu)建zipkin服務(wù)端

構(gòu)建zipkin 服務(wù)有三種構(gòu)建方式,Docker容器是推薦方式、jar安裝、源碼打包安裝

使用docker容器安裝運(yùn)行

docker run -d -p 9411:9411 openzipkin/zipkin
#或者增加es存儲環(huán)境
docker run -d -p 9411:9411 \
--env STORAGE_TYPE=elasticsearch \
--env ES_HOSTS=http://192.168.0.100:9200 \
openzipkin/zipkin

使用ElasticSearch進(jìn)行存儲,默認(rèn)啟動(dòng)方式會將日志數(shù)據(jù)存在內(nèi)存中,一旦服務(wù)重啟會清空數(shù)據(jù),建議使用es進(jìn)行持久化存儲。啟動(dòng)示例參數(shù)如下:

STORAGE_TYPE=elasticsearch ES_HOSTS=http://192.168.0.100:9200

另外還有一些其它可配置參數(shù)

* `ES_HOSTS`: A comma separated list of elasticsearch base urls to connect to ex. http://host:9200.
              Defaults to "http://localhost:9200".
* `ES_PIPELINE`: Only valid when the destination is Elasticsearch 5+. Indicates the ingest
                 pipeline used before spans are indexed. No default.
* `ES_TIMEOUT`: Controls the connect, read and write socket timeouts (in milliseconds) for
                Elasticsearch Api. Defaults to 10000 (10 seconds)
* `ES_MAX_REQUESTS`: Only valid when the transport is http. Sets maximum in-flight requests from
                     this process to any Elasticsearch host. Defaults to 64.
* `ES_INDEX`: The index prefix to use when generating daily index names. Defaults to zipkin.
* `ES_DATE_SEPARATOR`: The date separator to use when generating daily index names. Defaults to '-'.
* `ES_INDEX_SHARDS`: The number of shards to split the index into. Each shard and its replicas
                     are assigned to a machine in the cluster. Increasing the number of shards
                     and machines in the cluster will improve read and write performance. Number
                     of shards cannot be changed for existing indices, but new daily indices
                     will pick up changes to the setting. Defaults to 5.
* `ES_INDEX_REPLICAS`: The number of replica copies of each shard in the index. Each shard and
                       its replicas are assigned to a machine in the cluster. Increasing the
                       number of replicas and machines in the cluster will improve read
                       performance, but not write performance. Number of replicas can be changed
                       for existing indices. Defaults to 1. It is highly discouraged to set this
                       to 0 as it would mean a machine failure results in data loss.
* `ES_USERNAME` and `ES_PASSWORD`: Elasticsearch basic authentication, which defaults to empty string.
                                   Use when X-Pack security (formerly Shield) is in place.
* `ES_HTTP_LOGGING`: When set, controls the volume of HTTP logging of the Elasticsearch Api.
                     Options are BASIC, HEADERS, BODY

服務(wù)啟動(dòng)后默認(rèn)可以通過9411端口訪問zipkin的監(jiān)控頁面

http://localhost:9411/zipkin/

注:zipkin會在es中創(chuàng)建以zipkin開頭日期結(jié)尾的index,并且默認(rèn)以天為單位分割,使用該存儲模式時(shí),zipkin中的依賴信息會無法顯示,需要通過zipkin-dependencies工具包計(jì)算。

使用jar運(yùn)行

如果您安裝了Java 8或更高版本,那么最快速的安裝方法是以獨(dú)立的可執(zhí)行jar形式獲取最新版本:

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

使用源碼安裝運(yùn)行

如果要開發(fā)新功能,則可以從源代碼運(yùn)行Zipkin。為此,您需要獲取Zipkin的源代碼并進(jìn)行構(gòu)建。

# 獲取最新源碼git地址
git clone https://github.com/openzipkin/zipkin
cd zipkin
# mvn編譯打包
./mvnw -DskipTests --also-make -pl zipkin-server clean install
# jar包運(yùn)行
java -jar ./zipkin-server/target/zipkin-server-*exec.jar
zipkin-dependencies生成依賴鏈

zipkin-dependencies基于spark job來生成全局的調(diào)用鏈,下載地址:https://github.com/openzipkin/zipkin-dependencies

STORAGE_TYPE=elasticsearch ES_HOSTS=127.0.0.1:9200 java -jar zipkin-dependencies.jar &

下載完成后通過上述命令啟動(dòng)zipkin-dependencies,這里要注意的是程序只會根據(jù)當(dāng)日的zipkin數(shù)據(jù)實(shí)時(shí)計(jì)算一次依賴關(guān)系,并以索引zipkin:dependency-2020-9-28方式存入es中,然后就退出了,因此要做到實(shí)時(shí)更新依賴的話需要自己想辦法實(shí)現(xiàn)周期性執(zhí)行zipkin-dependencies`。

依賴配置
<properties> 
	<spring.cloud-version>Hoxton.SR8</spring.cloud-version> 
</properties>

<dependencyManagement>
      <dependencies>
          <dependency>
              <groupId>org.springframework.cloud</groupId>
              <artifactId>spring-cloud-dependencies</artifactId>
              <version>${spring.cloud-version}</version>
              <type>pom</type>
              <scope>import</scope>
          </dependency>
      </dependencies>
</dependencyManagement>


<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>
參數(shù)配置
spring:
  zipkin:
    base-url: http://127.0.0.1:9411

這里的base-url是zipkin服務(wù)端的地址,默認(rèn)地址也是http://localhost:9411/ ,配置好后,我們訪問我們服務(wù)的API,點(diǎn)擊run query即可有如下圖追蹤信息。

鏈路追蹤工具Zipkin如何安裝使用

商業(yè)化鏈路追蹤產(chǎn)品推薦

阿里云商業(yè)鏈路追蹤(TracingAnalysis)為分布式應(yīng)用的開發(fā)者提供了完整的調(diào)用鏈路還原、調(diào)用請求量統(tǒng)計(jì)、鏈路拓?fù)?、?yīng)用依賴分析等工具。能夠幫助開發(fā)者快速分析和診斷分布式應(yīng)用架構(gòu)下的性能瓶頸,提高微服務(wù)時(shí)代下的開發(fā)診斷效率。

鏈路追蹤工具Zipkin如何安裝使用

商業(yè)化產(chǎn)品架構(gòu)

鏈路追蹤的產(chǎn)品架構(gòu)如圖所示。

圖 1. 鏈路追蹤產(chǎn)品架構(gòu)鏈路追蹤工具Zipkin如何安裝使用

主要工作流程為:

  • 客戶側(cè)的應(yīng)用程序通過集成鏈路追蹤的多語言客戶端 SDK 上報(bào)服務(wù)調(diào)用數(shù)據(jù)。鏈路追蹤支持多種開源社區(qū)的 SDK,且支持 OpenTracing 標(biāo)準(zhǔn)。

  • 數(shù)據(jù)上報(bào)至鏈路追蹤控制臺后,鏈路追蹤組件進(jìn)行實(shí)時(shí)聚合計(jì)算和持久化,形成鏈路明細(xì)、性能總覽、實(shí)時(shí)拓?fù)涞缺O(jiān)控?cái)?shù)據(jù)。您可以據(jù)此進(jìn)行問題排查與診斷。

  • 調(diào)用鏈數(shù)據(jù)可對接下游阿里云產(chǎn)品,例如 LogSearch、CloudMonitor、MaxCompute 等,用于離線分析、報(bào)警等場景。

商業(yè)化產(chǎn)品功能

鏈路追蹤的主要功能有:

  • 分布式調(diào)用鏈查詢和診斷:追蹤分布式架構(gòu)中的所有微服務(wù)用戶請求,并將它們匯總成分布式調(diào)用鏈。

  • 應(yīng)用性能實(shí)時(shí)匯總:通過追蹤整個(gè)應(yīng)用程序的用戶請求,來實(shí)時(shí)匯總組成應(yīng)用程序的單個(gè)服務(wù)和資源。

  • 分布式拓?fù)鋭?dòng)態(tài)發(fā)現(xiàn):用戶的所有分布式微服務(wù)應(yīng)用和相關(guān) PaaS 產(chǎn)品可以通過鏈路追蹤收集到的分布式調(diào)用信息。

  • 多語言開發(fā)程序接入:基于 OpenTracing 標(biāo)準(zhǔn),全面兼容開源社區(qū),例如 Jaeger 和 Zipkin。

  • 豐富的下游對接場景:收集的鏈路可直接用于日志分析,且可對接到 MaxCompute 等下游分析平臺。

關(guān)于“鏈路追蹤工具Zipkin如何安裝使用”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學(xué)到更多知識,如果覺得文章不錯(cuò),請把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI