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

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


咨詢
建站咨詢
