日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
Linkerd2.10(StepbyStep)之使用Linkerd進(jìn)行分布式跟蹤

Linkerd 2.10(Step by Step)之使用 Linkerd 進(jìn)行分布式跟蹤

作者:為少 2021-06-17 14:29:39

開(kāi)發(fā)

前端

分布式 在實(shí)踐中使用分布式跟蹤可能很復(fù)雜, 為了從高層次解釋您得到了什么以及它是如何完成的, 我們整理了一個(gè)list of myths。

Linkerd 2.10 中文手冊(cè)持續(xù)修正更新中:

https://linkerd.hacker-linner.com

在實(shí)踐中使用分布式跟蹤可能很復(fù)雜, 為了從高層次解釋您得到了什么以及它是如何完成的, 我們整理了一個(gè)list of myths。

本指南將引導(dǎo)您完成 emojivoto 的配置和啟用跟蹤。關(guān)于使用 Linkerd 使用分布式跟蹤的最佳方式的一些建議,請(qǐng)?zhí)阶詈蟆?/p>

要使用分布式跟蹤,您需要:

  • 安裝 Linkerd-Jaeger 擴(kuò)展。
  • 修改您的應(yīng)用程序以發(fā)出跨度。

在 emojivoto 的情況下,一旦所有這些步驟都完成,就會(huì)有一個(gè)看起來(lái)像這樣的拓?fù)洌?/p>

先決條件

  • 要使用本指南,您需要在集群上安裝 Linkerd。如果您還沒(méi)有這樣做,請(qǐng)按照安裝 Linkerd 指南進(jìn)行操作。

安裝 Linkerd-Jaeger 擴(kuò)展

獲取分布式跟蹤設(shè)置的第一步是將 Linkerd-Jaeger 擴(kuò)展安裝到您的集群上。這個(gè)擴(kuò)展由一個(gè)收集器(collector)、一個(gè) Jaeger 后端和一個(gè) Jaeger-injector 組成。收集器消耗從網(wǎng)格和您的應(yīng)用程序發(fā)出的跨度, 并將它們發(fā)送到 Jaeger 后端,后者存儲(chǔ)它們并提供儀表板以查看它們。Jaeger-injector 負(fù)責(zé)配置 Linkerd 代理以發(fā)出 span。

要安裝 Linkerd-Jaeger 擴(kuò)展,請(qǐng)運(yùn)行以下命令:

  
 
 
 
  1. linkerd jaeger install | kubectl apply -f -

您可以通過(guò)運(yùn)行以下命令來(lái)驗(yàn)證 Linkerd-Jaeger 擴(kuò)展是否已正確安裝:

  
 
 
 
  1. linkerd jaeger check

安裝 Emojivoto

將 emojivoto 添加到您的集群并使用 Linkerd 代理注入它:

  
 
 
 
  1. linkerd inject https://run.linkerd.io/emojivoto.yml | kubectl apply -f -

在進(jìn)入下一步之前,請(qǐng)確保一切都已啟動(dòng)并使用 kubectl 運(yùn)行以下命令:

  
 
 
 
  1. kubectl -n emojivoto rollout status deploy/web

修改應(yīng)用

與服務(wù)網(wǎng)格的大多數(shù)功能不同,分布式跟蹤需要修改應(yīng)用程序的源。跟蹤需要某種方式將傳入的請(qǐng)求與您的應(yīng)用程序與傳出的請(qǐng)求綁定到相關(guān)服務(wù)。為此,將向每個(gè)請(qǐng)求添加一些標(biāo)頭,其中包含跟蹤的唯一 ID。Linkerd 使用 b3 propagation 傳播格式將這些東西聯(lián)系在一起。

我們已經(jīng)修改了 emojivoto 以使用此信息檢測(cè)其請(qǐng)求,此 commit 顯示了這是如何完成的。對(duì)于大多數(shù)編程語(yǔ)言,它只需要添加一個(gè)客戶端庫(kù)來(lái)處理這個(gè)問(wèn)題。Emojivoto 使用 OpenCensus 客戶端,但也可以使用其他客戶端。

要在 emojivoto 中啟用跟蹤,請(qǐng)運(yùn)行:

  
 
 
 
  1. kubectl -n emojivoto set env --all deploy OC_AGENT_HOST=collector.linkerd-jaeger:55678

此命令將添加一個(gè)環(huán)境變量,使應(yīng)用程序能夠傳播上下文并發(fā)出跨度。

探索 Jaeger

隨著 vote-bot 開(kāi)始跟蹤每個(gè)請(qǐng)求,跨度現(xiàn)在應(yīng)該出現(xiàn)在 Jaeger。要進(jìn)入 UI,運(yùn)行:

  
 
 
 
  1. linkerd jaeger dashboard

您可以在下拉列表中搜索任何服務(wù),然后單擊 Find Traces。vote-bot 是一個(gè)很好的入門(mén)方式。

單擊特定跟蹤將提供所有詳細(xì)信息,您將能夠看到每個(gè)代理的跨度!

該輸出中肯定有很多 linkerd-proxy 跨度。在內(nèi)部,代理具有服務(wù)器端和客戶端。當(dāng)請(qǐng)求通過(guò)代理時(shí),由服務(wù)器接收,然后由客戶端發(fā)出。對(duì)于在兩個(gè)網(wǎng)狀 Pod 之間傳遞的單個(gè)請(qǐng)求,總共會(huì)有 4 個(gè)跨度。當(dāng)請(qǐng)求遍歷該代理時(shí),兩個(gè)將在源端,當(dāng)遠(yuǎn)程代理接收到請(qǐng)求時(shí),兩個(gè)將在目標(biāo)端。

此外,由于代理添加了應(yīng)用元數(shù)據(jù)作為跟蹤屬性,用戶可以通過(guò)單擊度量表中的 Jaeger 圖標(biāo), 直接從 linkerd-web 儀表板直接跳轉(zhuǎn)到相關(guān)資源跟蹤,如下所示

清理

要進(jìn)行清理,請(qǐng)通過(guò)運(yùn)行以下命令卸載 Linkerd-Jaeger 擴(kuò)展和 emojivoto:

  
 
 
 
  1. linkerd jaeger uninstall | kubectl delete -f -
  2. kubectl delete ns emojivoto

帶上你自己的 Jaeger

如果您有一個(gè)現(xiàn)有的 Jaeger 安裝, 您可以配置 OpenCensus 收集器向它發(fā)送跟蹤, 而不是 Linkerd-Jaeger 擴(kuò)展中內(nèi)置的 Jaeger 實(shí)例。

  
 
 
 
  1. linkerd jaeger install --set collector.jaegerAddr='http://my-jaeger-collector.my-jaeger-ns:14268/api/traces' | kubectl apply -f -

也可以手動(dòng)編輯 OpenCensus 配置以將其導(dǎo)出到它支持的任何后端。有關(guān)完整列表,請(qǐng)參閱 OpenCensus 文檔。

故障排除

我沒(méi)有看到代理的任何跨度

Linkerd 代理使用 b3 propagation 傳播格式。一些客戶端庫(kù),例如 Jaeger,默認(rèn)使用不同的格式。您需要將客戶端庫(kù)配置為使用 b3 格式讓代理參與跟蹤。

建議

Ingress

ingress 是分布式跟蹤的一個(gè)特別重要的組件,因?yàn)樗鼊?chuàng)建每個(gè)跟蹤的根跨度, 并負(fù)責(zé)決定是否應(yīng)該對(duì)該跟蹤進(jìn)行采樣。讓 ingress 做出所有采樣決策可確保對(duì)整個(gè)軌跡進(jìn)行采樣或不采樣, 并避免創(chuàng)建“部分軌跡(partial traces)”。

分布式跟蹤系統(tǒng)都依賴于服務(wù)來(lái)傳播有關(guān)從接收到的請(qǐng)求到發(fā)送的請(qǐng)求的當(dāng)前跟蹤的元數(shù)據(jù)。這一元數(shù)據(jù)稱為跟蹤上下文,通常編碼在一個(gè)或多個(gè)請(qǐng)求標(biāo)頭中。有許多不同的跟蹤上下文標(biāo)頭格式,雖然我們希望生態(tài)系統(tǒng)最終會(huì)收斂于像 W3C tracecontext 跟蹤上下文這樣的開(kāi)放標(biāo)準(zhǔn), 但我們今天只使用 b3 format。作為最早廣泛使用的格式之一,它具有最廣泛的支持,尤其是在 Nginx 等入口中。

此參考架構(gòu)包括一個(gè)簡(jiǎn)單的 Nginx 配置,該配置對(duì) 50% 的跟蹤進(jìn)行采樣并將跟蹤數(shù)據(jù)發(fā)送到 收集器(使用 Zipkin 協(xié)議)。任何入口控制器都可以在這里代替 Nginx 使用,只要它:

  • 支持概率采樣
  • 以 b3 格式編碼跟蹤上下文
  • 在 OpenCensus 收集器支持的協(xié)議中發(fā)出 span

如果使用 helm 安裝 ingress-nginx,您可以使用以下命令配置跟蹤:

  
 
 
 
  1. controller:
  2.   config:
  3.     enable-opentracing: "true"
  4.     zipkin-collector-host: linkerd-collector.linkerd

客戶端庫(kù)

雖然服務(wù)可以手動(dòng)傳播跟蹤傳播標(biāo)頭,但使用執(zhí)行以下三件事的庫(kù)通常要容易得多:

  • 將跟蹤上下文從傳入請(qǐng)求頭傳播到傳出請(qǐng)求頭
  • 修改跟蹤上下文(即開(kāi)始一個(gè)新的跨度)
  • 將此數(shù)據(jù)傳輸?shù)礁櫴占?/li>

我們建議在您的服務(wù)中使用 OpenCensus 并配置它:

  • b3 propagation (這是默認(rèn)設(shè)置)
  • the OpenCensus agent exporter

OpenCensus agent exporter 將通過(guò) gRPC API 將跟蹤數(shù)據(jù)導(dǎo)出到 OpenCensus 收集器。如何配置 OpenCensus 的詳細(xì)信息會(huì)因語(yǔ)言而異,但有許多流行語(yǔ)言的指南。您還可以使用我們的示例應(yīng)用程序 Emojivoto 在 Go 中查看端到端示例。

您可能會(huì)注意到 OpenCensus 項(xiàng)目處于維護(hù)模式并將成為 OpenTelemetry 的一部分。不幸的是,OpenTelemetry 尚未準(zhǔn)備好投入生產(chǎn),因此 OpenCensus 仍然是我們目前的建議。

也可以使用許多其他跟蹤客戶端庫(kù)。只需確保正在使用 b3 傳播格式, 并且客戶端庫(kù)可以以收集器已配置為接收的格式導(dǎo)出其跨度。

收集器: OpenCensus

OpenCensus collector 從 OpenCensus agent exporter 接收跟蹤數(shù)據(jù), 并可能在將該數(shù)據(jù)發(fā)送到 Jaeger 之前進(jìn)行轉(zhuǎn)換和過(guò)濾。將 OpenCensus exporter 發(fā)送到 OpenCensus collector 為我們提供了很大的靈活性:我們可以切換到 OpenCensus 支持的任何后端,而無(wú)需中斷應(yīng)用程序。

后端: Jaeger

Jaeger 是使用最廣泛的跟蹤后端之一,并且有充分的理由:它易于使用并且在可視化跟蹤方面做得很好。但是,可以改用 OpenCensus 支持的任何后端。

Linkerd

如果您的應(yīng)用程序注入了 Linkerd,Linkerd 代理將參與跟蹤并將跟蹤數(shù)據(jù)發(fā)送到 OpenCensus 收集器。這豐富了跟蹤數(shù)據(jù),并允許您準(zhǔn)確查看請(qǐng)求在代理和線路上花費(fèi)的時(shí)間。

雖然 Linkerd 只能主動(dòng)參與使用 b3 傳播格式的trace, 但 Linkerd 將始終透明地轉(zhuǎn)發(fā)未知的請(qǐng)求頭, 這意味著它永遠(yuǎn)不會(huì)干擾使用其他傳播格式的 trace。


當(dāng)前題目:Linkerd2.10(StepbyStep)之使用Linkerd進(jìn)行分布式跟蹤
URL地址:http://www.5511xx.com/article/dpedgsc.html