新聞中心
使用 Grafana Tempo 進(jìn)行分布式跟蹤
作者:Annanay Agarwal 2021-03-23 22:43:09
開源
分布式 Grafana Tempo 是一個新的開源、大容量分布式跟蹤后端。Grafana 的 Tempo 是出自 Grafana 實(shí)驗(yàn)室的一個簡單易用、大規(guī)模的、分布式的跟蹤后端。Tempo 集成了 Grafana、Prometheus 以及 Loki,并且它只需要對象存儲進(jìn)行操作,因此成本低廉,操作簡單。

10多年建站經(jīng)驗(yàn), 成都做網(wǎng)站、成都網(wǎng)站建設(shè)客戶的見證與正確選擇。創(chuàng)新互聯(lián)提供完善的營銷型網(wǎng)頁建站明細(xì)報(bào)價(jià)表。后期開發(fā)更加便捷高效,我們致力于追求更美、更快、更規(guī)范。
Grafana Tempo 是一個新的開源、大容量分布式跟蹤后端。
Grafana 的 Tempo 是出自 Grafana 實(shí)驗(yàn)室的一個簡單易用、大規(guī)模的、分布式的跟蹤后端。Tempo 集成了 Grafana、Prometheus 以及 Loki,并且它只需要對象存儲進(jìn)行操作,因此成本低廉,操作簡單。
我從一開始就參與了這個開源項(xiàng)目,所以我將介紹一些關(guān)于 Tempo 的基礎(chǔ)知識,并說明為什么云原生社區(qū)會注意到它。
分布式跟蹤
想要收集對應(yīng)用程序請求的遙測數(shù)據(jù)是很常見的。但是在現(xiàn)在的服務(wù)器中,單個應(yīng)用通常被分割為多個微服務(wù),可能運(yùn)行在幾個不同的節(jié)點(diǎn)上。
分布式跟蹤是一種獲得關(guān)于應(yīng)用的性能細(xì)粒度信息的方式,該應(yīng)用程序可能由離散的服務(wù)組成。當(dāng)請求到達(dá)一個應(yīng)用時,它提供了該請求的生命周期的統(tǒng)一視圖。Tempo 的分布式跟蹤可以用于單體應(yīng)用或微服務(wù)應(yīng)用,它提供 請求范圍的信息,使其成為可觀察性的第三個支柱(另外兩個是度量和日志)。
接下來是一個分布式跟蹤系統(tǒng)生成應(yīng)用程序甘特圖的示例。它使用 Jaeger HotROD 的演示應(yīng)用生成跟蹤,并把它們存到 Grafana 云托管的 Tempo 上。這個圖展示了按照服務(wù)和功能劃分的請求處理時間。
Gantt chart from Grafana Tempo
減少索引的大小
在豐富且定義良好的數(shù)據(jù)模型中,跟蹤包含大量信息。通常,跟蹤后端有兩種交互:使用元數(shù)據(jù)選擇器(如服務(wù)名或者持續(xù)時間)篩選跟蹤,以及篩選后的可視化跟蹤。
為了加強(qiáng)搜索,大多數(shù)的開源分布式跟蹤框架會對跟蹤中的許多字段進(jìn)行索引,包括服務(wù)名稱、操作名稱、標(biāo)記和持續(xù)時間。這會導(dǎo)致索引很大,并迫使你使用 Elasticsearch 或者 Cassandra 這樣的數(shù)據(jù)庫。但是,這些很難管理,而且大規(guī)模運(yùn)營成本很高,所以我在 Grafana 實(shí)驗(yàn)室的團(tuán)隊(duì)開始提出一個更好的解決方案。
在 Grafana 中,我們的待命調(diào)試工作流從使用指標(biāo)報(bào)表開始(我們使用 Cortex 來存儲我們應(yīng)用中的指標(biāo),它是一個云原生基金會孵化的項(xiàng)目,用于擴(kuò)展 Prometheus),深入研究這個問題,篩選有問題服務(wù)的日志(我們將日志存儲在 Loki 中,它就像 Prometheus 一樣,只不過 Loki 是存日志的),然后查看跟蹤給定的請求。我們意識到,我們過濾時所需的所有索引信息都可以在 Cortex 和 Loki 中找到。但是,我們需要一個強(qiáng)大的集成,以通過這些工具實(shí)現(xiàn)跟蹤的可發(fā)現(xiàn)性,并需要一個很贊的存儲,以根據(jù)跟蹤 ID 進(jìn)行鍵值查找。
這就是 Grafana Tempo 項(xiàng)目的開始。通過專注于給定檢索跟蹤 ID 的跟蹤,我們將 Tempo 設(shè)計(jì)為最小依賴性、大容量、低成本的分布式跟蹤后端。
操作簡單,性價(jià)比高
Tempo 使用對象存儲后端,這是它唯一的依賴。它既可以被用于單一的二進(jìn)制下,也可以用于微服務(wù)模式(請參考倉庫中的 例子,了解如何輕松上手)。使用對象存儲還意味著你可以存儲大量的應(yīng)用程序的痕跡,而無需任何采樣。這可以確保你永遠(yuǎn)不會丟棄那百萬分之一的出錯或具有較高延遲的請求的跟蹤。
與開源工具的強(qiáng)大集成
Grafana 7.3 包括了 Tempo 數(shù)據(jù)源,這意味著你可以在 Grafana UI 中可視化來自Tempo 的跟蹤。而且,Loki 2.0 的新查詢特性 使得 Tempo 中的跟蹤更簡單。為了與 Prometheus 集成,該團(tuán)隊(duì)正在添加對范例exemplar的支持,范例是可以添加到時間序列數(shù)據(jù)中的高基數(shù)元數(shù)據(jù)信息。度量存儲后端不會對它們建立索引,但是你可以在 Grafana UI 中檢索和顯示度量值。盡管范例可以存儲各種元數(shù)據(jù),但是在這個用例中,存儲跟蹤 ID 是為了與 Tempo 緊密集成。
這個例子展示了使用帶有請求延遲直方圖的范例,其中每個范例數(shù)據(jù)點(diǎn)都鏈接到 Tempo 中的一個跟蹤。
Using exemplars in Tempo
元數(shù)據(jù)一致性
作為容器化應(yīng)用程序運(yùn)行的應(yīng)用發(fā)出的遙測數(shù)據(jù)通常具有一些相關(guān)的元數(shù)據(jù)。這可以包括集群 ID、命名空間、吊艙 IP 等。這對于提供基于需求的信息是好的,但如果你能將元數(shù)據(jù)中包含的信息用于生產(chǎn)性的東西,那就更好了。 例如,你可以使用 Grafana 云代理將跟蹤信息導(dǎo)入 Tempo 中,代理利用 Prometheus 服務(wù)發(fā)現(xiàn)機(jī)制輪詢 Kubernetes API 以獲取元數(shù)據(jù)信息,并且將這些標(biāo)記添加到應(yīng)用程序發(fā)出的跨域數(shù)據(jù)中。由于這些元數(shù)據(jù)也在 Loki 中也建立了索引,所以通過元數(shù)據(jù)轉(zhuǎn)換為 Loki 標(biāo)簽選擇器,可以很容易地從跟蹤跳轉(zhuǎn)到查看給定服務(wù)的日志。
下面是一個一致元數(shù)據(jù)的示例,它可用于Tempo跟蹤中查看給定范圍的日志。
云原生
Grafana Tempo 可以作為容器化應(yīng)用,你可以在如 Kubernetes、Mesos 等編排引擎上運(yùn)行它。根據(jù)獲取/查詢路徑上的工作負(fù)載,各種服務(wù)可以水平伸縮。你還可以使用云原生的對象存儲,如谷歌云存儲、Amazon S3 或者 Tempo Azure 博客存儲。更多的信息,請閱讀 Tempo 文檔中的 架構(gòu)部分。
試一試 Tempo
如果這對你和我們一樣有用,可以 克隆 Tempo 倉庫試一試。
名稱欄目:使用GrafanaTempo進(jìn)行分布式跟蹤
瀏覽路徑:http://fisionsoft.com.cn/article/ccospoo.html


咨詢
建站咨詢
