為什麼我們需要分散式追蹤 ? 日誌 (Log) 跟指標 (Metrics) 不夠用嗎
隨者科技的進步,測量系統指標和發送警報也變得更加複雜;許多組織每天處理數百甚至數千萬個請求,以 Uber 為例內部系統有 4,000 個微服務彼此關聯。
如果你的架構圖像是下面圖示,一個請求可能會經過數十或是數百個網路節點。架構切分這麼細的情況下,這使得了解請求所經過的路徑變得相當困難,如果你只有日誌跟指標,要進行故障排除也是相當複雜的。在問題發生時,對開發或是運維團隊來說,需要了解的是怎麼找到根本問題(Root Cause)及經過哪些服務。
分散式追蹤可協助您查看整個請求 (Request) 期間服務之間的交互,並讓您深入了解系統中請求的整個生命週期。它幫助我們發現應用程式中的錯誤、瓶頸和效能問題。
意味著當使用者透過瀏覽器發送請求到伺服器應用程式的那一刻起,我們可以可看到整個請求的過程。
(追蹤)資料(以跨度的形式)產生遙測資料,可以幫助了解延遲或錯誤是什麼,以及為什麼會發生還有對整個請求的影響。
近期很多在看很多 Open Source 專案都用相似方式來在介紹,為了跟上這股潮流我們也不能輸,以下參考官網說明
OpenTelemetry 是什麼
OpenTelemetry 是一個雲端原生運算基金會(CNCF)專案。
OpenTelemetry 是一個可觀察性框架和工具包,旨在創建和管理遙測數據,例如追蹤、指標和日誌。
OpenTelemetry 與供應商和工具無關,這意味著它可以與各種可觀察性後端一起使用,包括 Jaeger和 Prometheus 等開源工具以及商業產品。
OpenTelemetry 不是什麼
OpenTelemetry 不是像 Jaeger、Prometheus 或商業供應商那樣的可觀察性後端。
OpenTelemetry 專注於遙測資料的產生、收集、管理和匯出。該資料的儲存和視覺化有意留給其他工具。
了解其設計初衷跟方向,才會知道為什麼這樣設計與其它想要試圖解決的問題
OpenTelemetry 的願景是實現一個有效的可觀測性世界。這個願景的核心思想是,有效的可觀測性需要高品質的遙測技術,以及使其成為可能的高性能、一致的儀器。在這樣的世界中,遙測應該是容易的、通用的、與供應商無關的、鬆散耦合的、內建的。
OpenTelemetry 重視以下四個關鍵價值:
在過去為了嘗試解決分散式追蹤 (Distributed Tracing) 問題,有多種不同的 Open Source 專案,以下是簡單的整理 (圖片來源)
OpenTelemetry (aka OTel) 在可觀測性的領域中扮演越來越重要的角色,近幾年已成為 CNCF 中第二個活耀的 Open source 專案,受歡迎程度僅次於 Kubernetes,它的貢獻者遍布所有主要的可觀測性供應商,其協議在可觀測性供應商中幾乎被普遍採用。有興趣可以參考 CNCF Dev Status。
OpenTelemetry 核心分為兩個部分,分別是規範與實作
+------------------------------------------------------+
| OpenTelemetry (OTEL) |
+------------------------------------------------------+
| |
| +-------------------------+ +---------------------+ |
| | Specifications | | Implementations | |
| +-------------------------+ +---------------------+ |
| | - OTel Specification | | - OTel SDKs | |
| | | | | |
| | - OTel Protocol | | - OTel Collector | |
| | | | | |
| | - Open Agent Management | | - OTel API | |
| | Protocol | | | |
| | | | | |
| | - OTel Semantic | | | |
| | Conventions | | | |
| +-------------------------+ +---------------------+ |
| |
+------------------------------------------------------+
由於資料內容過多體力不支,下一章節再繼續介紹核心的元件 XDDD
小結呼應主題搭配梗圖
OpenTelemetry mission, vision, and values