您好,登錄后才能下訂單哦!
本篇內容主要講解“如何使用 Grafana Tempo 進行分布式跟蹤”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“如何使用 Grafana Tempo 進行分布式跟蹤”吧!
Grafana Tempo 是一個新的開源、大容量分布式跟蹤后端。
Grafana 的 Tempo 是出自 Grafana 實驗室的一個簡單易用、大規模的、分布式的跟蹤后端。Tempo 集成了 Grafana、Prometheus 以及 Loki,并且它只需要對象存儲進行操作,因此成本低廉,操作簡單。
我從一開始就參與了這個開源項目,所以我將介紹一些關于 Tempo 的基礎知識,并說明為什么云原生社區會注意到它。
想要收集對應用程序請求的遙測數據是很常見的。但是在現在的服務器中,單個應用通常被分割為多個微服務,可能運行在幾個不同的節點上。
分布式跟蹤是一種獲得關于應用的性能細粒度信息的方式,該應用程序可能由離散的服務組成。當請求到達一個應用時,它提供了該請求的生命周期的統一視圖。Tempo 的分布式跟蹤可以用于單體應用或微服務應用,它提供 請求范圍的信息,使其成為可觀察性的第三個支柱(另外兩個是度量和日志)。
接下來是一個分布式跟蹤系統生成應用程序甘特圖的示例。它使用 Jaeger HotROD 的演示應用生成跟蹤,并把它們存到 Grafana 云托管的 Tempo 上。這個圖展示了按照服務和功能劃分的請求處理時間。
Gantt chart from Grafana Tempo
在豐富且定義良好的數據模型中,跟蹤包含大量信息。通常,跟蹤后端有兩種交互:使用元數據選擇器(如服務名或者持續時間)篩選跟蹤,以及篩選后的可視化跟蹤。
為了加強搜索,大多數的開源分布式跟蹤框架會對跟蹤中的許多字段進行索引,包括服務名稱、操作名稱、標記和持續時間。這會導致索引很大,并迫使你使用 Elasticsearch 或者 Cassandra 這樣的數據庫。但是,這些很難管理,而且大規模運營成本很高,所以我在 Grafana 實驗室的團隊開始提出一個更好的解決方案。
在 Grafana 中,我們的待命調試工作流從使用指標報表開始(我們使用 Cortex 來存儲我們應用中的指標,它是一個云原生基金會孵化的項目,用于擴展 Prometheus),深入研究這個問題,篩選有問題服務的日志(我們將日志存儲在 Loki 中,它就像 Prometheus 一樣,只不過 Loki 是存日志的),然后查看跟蹤給定的請求。我們意識到,我們過濾時所需的所有索引信息都可以在 Cortex 和 Loki 中找到。但是,我們需要一個強大的集成,以通過這些工具實現跟蹤的可發現性,并需要一個很贊的存儲,以根據跟蹤 ID 進行鍵值查找。
這就是 Grafana Tempo 項目的開始。通過專注于給定檢索跟蹤 ID 的跟蹤,我們將 Tempo 設計為最小依賴性、大容量、低成本的分布式跟蹤后端。
Tempo 使用對象存儲后端,這是它唯一的依賴。它既可以被用于單一的二進制下,也可以用于微服務模式(請參考倉庫中的 例子,了解如何輕松上手)。使用對象存儲還意味著你可以存儲大量的應用程序的痕跡,而無需任何采樣。這可以確保你永遠不會丟棄那百萬分之一的出錯或具有較高延遲的請求的跟蹤。
Grafana 7.3 包括了 Tempo 數據源,這意味著你可以在 Grafana UI 中可視化來自Tempo 的跟蹤。而且,Loki 2.0 的新查詢特性 使得 Tempo 中的跟蹤更簡單。為了與 Prometheus 集成,該團隊正在添加對范例的支持,范例是可以添加到時間序列數據中的高基數元數據信息。度量存儲后端不會對它們建立索引,但是你可以在 Grafana UI 中檢索和顯示度量值。盡管范例可以存儲各種元數據,但是在這個用例中,存儲跟蹤 ID 是為了與 Tempo 緊密集成。
這個例子展示了使用帶有請求延遲直方圖的范例,其中每個范例數據點都鏈接到 Tempo 中的一個跟蹤。
Using exemplars in Tempo
作為容器化應用程序運行的應用發出的遙測數據通常具有一些相關的元數據。這可以包括集群 ID、命名空間、吊艙 IP 等。這對于提供基于需求的信息是好的,但如果你能將元數據中包含的信息用于生產性的東西,那就更好了。 例如,你可以使用 Grafana 云代理將跟蹤信息導入 Tempo 中,代理利用 Prometheus 服務發現機制輪詢 Kubernetes API 以獲取元數據信息,并且將這些標記添加到應用程序發出的跨域數據中。由于這些元數據也在 Loki 中也建立了索引,所以通過元數據轉換為 Loki 標簽選擇器,可以很容易地從跟蹤跳轉到查看給定服務的日志。
下面是一個一致元數據的示例,它可用于Tempo跟蹤中查看給定范圍的日志。
Grafana Tempo 可以作為容器化應用,你可以在如 Kubernetes、Mesos 等編排引擎上運行它。根據獲取/查詢路徑上的工作負載,各種服務可以水平伸縮。你還可以使用云原生的對象存儲,如谷歌云存儲、Amazon S3 或者 Tempo Azure 博客存儲。更多的信息,請閱讀 Tempo 文檔中的 架構部分。
到此,相信大家對“如何使用 Grafana Tempo 進行分布式跟蹤”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。