1. 程式人生 > >OpenTelemetry - 雲原生下可觀測性的新標準

OpenTelemetry - 雲原生下可觀測性的新標準

### CNCF 簡介 CNCF(Cloud Native Computing Foundation),中文為“雲原生計算基金會”,CNCF是Linux基金會旗下的基金會,可以理解為一個非盈利組織。 當年谷歌內部一直用於編排容器的Borg專案開源了,為了該專案更好的發展,谷歌與Linux基金會一起創辦了CNCF。同時,谷歌把Borg用Go語言重寫,更名為Kubernetes並捐贈到CNCF。 成立這個組織的初衷或者願景,簡單說: - 推動雲原生計算可持續發展; - 幫助雲原生技術開發人員快速地構建出色的產品; - CNCF通過建立社群、管理眾多開源專案等手段來推廣技術和生態系統發展。 ![](https://blog-1259586045.cos.ap-shanghai.myqcloud.com/clipboard_20210112_043032.png) ### APM 大家應該都聽說過APM(Application Performance Monitoring),也應該聽說過Distributed Tracing(分散式跟蹤),其中後者是前者的子集。分散式跟蹤該名詞是隨著微服務的流行而興起的,主要是為了解決微服務架構中請求鏈路過長導致的定位和監控難問題。 目前該領域有名的產品有:Jaeger、Pinpoint、Zipkin等等,可以說是競爭異常激烈,但是由此帶來一個問題:每一家都有自己的一套資料採集標準和SDK,雖然幾乎都是基於谷歌Dapper協議,但是彼此的實現是大相徑庭的。 為了解決這個問題,國外的大神們在之前建立了OpenTracing和OpenCensus,我們先來分別看看這兩個產品。 ### OpenTracing OpenTracing制定了一套平臺無關、廠商無關的協議標準,使得開發人員能夠方便的新增或更換底層APM的實現。 在2016年11月的時候發生了一件里程碑事件,CNCF.io接受OpenTracing,同時這也是CNCF的第三個專案,前兩個都已經鼎鼎大名了:Kubernetes,和Prometheus,由此可見開源世界對APM的重視,對統一標準的重視和渴望。 遵循OpenTracing協議的產品有Jaeger、Zipkin等等。 ### OpenCensus 中國有句老話,既生瑜何生亮,OpenTracing本身出現的更早且更流行,為什麼要有OpenCensus這個專案? > 這裡先補充一下背景知識,前面提到了分散式追蹤,其實在APM領域,還有一個極其重要的監控子類:Metrics指標監控,例如cpu、記憶體、硬碟、網路等機器指標,grpc的請求延遲、錯誤率等網路協議指標,使用者數、訪問數、訂單數等業務指標,都可以涵蓋在內。 首先,該專案有個非常牛逼的親爹:Google,要知道就連分散式跟蹤的基礎論文就是谷歌提出的,可以說谷歌就是親爹無疑了。 其次,OpenCensus的最初目標並不是搶OpenTracing的飯碗,而是為了把Go語言的Metrics採集、鏈路跟蹤與Go語言自帶的profile工具打通,統一使用者的使用方式。隨著專案的進展,野心也膨脹了,這個時候開始幻想為什麼不把其它各種語言的相關採集都統一呢?然後專案組發現了OpenTracing,突然發現,我K,作為谷歌,我們都沒玩標準,你們竟然敢玩標準敢想著統一全世界?(此處乃作者的瘋人瘋語) 於是乎,OpenCensus的場景進一步擴大了,不僅做了Metrics基礎指標監控,還做了OpenTracing的老本行:分散式跟蹤。 有個谷歌做親爹已經夠牛了,那再加入一個微軟做乾爹呢?是不是要起飛了?所以,對於OpenCensus的發展而言,微軟的直接加入可以說是打破了之前的競爭平衡,間接導致了後面OpenTelemetry專案的誕生。 ### OpenTracing vs OpenCensus 這裡直接把 Steve Flanders的對比圖拿了過來 ##### 功能特性 ![](https://blog-1259586045.cos.ap-shanghai.myqcloud.com/clipboard_20210112_040836.png) 可以看到,OpenTracing和OpenCensus從功能和特性上來看,各有優缺點。OpenTracing支援的語言更多、相對對其他系統的耦合性要更低;OpenCensus支援Metrics、分散式跟蹤,同時從API層一直到基礎設施層都進行了支援。 ##### 開源社群 ![](https://blog-1259586045.cos.ap-shanghai.myqcloud.com/clipboard_20210112_041014.png) 難分勝負?再來對比下社群活躍,我去,好像還是半斤八兩,你有更廣的使用群眾基礎,我有谷歌和微軟就足矣。 所以,從上面可以看出,兩個產品真的是各紅遍半邊天,但是作為開源專案,這種競爭未免太消耗資源了,對使用者也十分不友好,咋麼辦? ### OpenTelemetry ![](https://blog-1259586045.cos.ap-shanghai.myqcloud.com/clipboard_20210112_043219.png) 正所謂是:天下合久必分、分久必合,在此之時,必有梟雄出現:OpenTelemetry橫空出世。 兩個產品合併,首先要考慮的是什麼?有過經驗的同學都知道:如何讓兩邊的使用者能夠繼續使用。因此新專案首要核心目標就是相容OpenTracing和OpenCensus。 OpenTelemetry的核心工作目前主要集中在3個部分: 1. 規範的制定和協議的統一,規範包含資料傳輸、API的規範,協議的統一包含:HTTP W3C的標準支援及GRPC等框架的協議標準 2. 多語言SDK的實現和整合,使用者可以使用SDK進行程式碼自動注入和手動埋點,同時對其他三方庫(Log4j、LogBack等)進行整合支援; 3. 資料收集系統的實現,當前是基於OpenCensus Service的收集系統,包括Agent和Collector。 由此可見,OpenTelemetry的自身定位很明確:資料採集和標準規範的統一,對於資料如何去使用、儲存、展示、告警,官方是不涉及的,我們目前推薦使用Prometheus + Grafana做Metrics儲存、展示,使用Jaeger做分散式跟蹤的儲存和展示。 >首先,再補充一下背景知識,之前提到了APM的兩種監控子類:分散式跟蹤和Metrics,其實還有第三種,就是Logging日誌,目前常見的日誌收集平臺有EFK、Fluentd. 上圖中可以看到,缺失了Logging,主要有以下原因: 1. 優先順序是在上面提到的三個核心工作上,Logging目前優先順序相對較低(P2) 2. Logging一般是通過三方平臺完成收集,目前如何與分散式跟蹤、Metrics的資料進行整合,官方還沒有給出設計方案 ### 大一統 有了以上的背景知識,我們就可以頂一下OpenTelemetry的終極目標了:實現Metrics、Tracing、Logging的融合及大一統,作為APM的資料採集終極解決方案。 - Tracing:提供了一個請求從接收到處理完成整個生命週期的跟蹤路徑,一次請求通常過經過N個系統,因此也被稱為分散式鏈路追蹤 - Metrics:例如cpu、請求延遲、使用者訪問數等Counter、Gauge、Histogram指標 - Logging:傳統的日誌,提供精確的系統記錄 這三者的組合可以形成大一統的APM解決方案: 1. 基於Metrics告警發現異常 2. 通過Tracing定位到具體的系統和方法 3. 根據模組的日誌最終定位到錯誤詳情和根源 4. 調整Metrics等設定,更精確的告警/發現問題 ##### 該如何融合? 在以往對APM的理解中,這三者都是完全獨立的,但是隨著時間的推移,人們逐步發現了三者之間的關聯,例如我們可以把Tracing的TraceID打到Logging的日誌中,這樣可以把分散式鏈路跟蹤和日誌關聯到一起,彼此資料互通,但是還存在以下問題: 1. 如何把Metrics和其他兩者關聯起來 2. 如何提供更多維度的關聯,例如請求的方法名、URL、使用者型別、裝置型別、地理位置等 3. 關聯關係如何一致,且能夠在分散式系統下傳播 在OpenTelemetry中試圖使用Context為Metrics、Logging、Tracing提供統一的上下文,三者均可以訪問到這些資訊,同時Context可以隨著請求鏈路的深入,不斷往下傳播 - Context資料在Task/Request的執行週期中都可以被訪問到 - 提供統一的儲存層,用於儲存Context資訊,並保證在各種語言和處理模型下都可以工作(例如單執行緒模型、執行緒池模型、CallBack模型、Go Routine模型等) - 多種維度的關聯基於元資訊(標籤)實現,元資訊由業務確定,例如:通過Env來區別是測試還是生產環境等 - 提供分散式的Context傳播方式,例如通過W3C的traceparent/tracestate頭、GRPC協議等 ![](https://blog-1259586045.cos.ap-shanghai.myqcloud.com/clipboard_20210112_042710.png) ### 總結 從谷歌Dapper協議提出到現在已經很多年了,江湖也已經亂戰了很多年,這次谷歌和微軟下定決心結束江湖之亂,對於未來分散式系統的監控真的是非常巨大的利好訊息,我們也有理由相信在這兩家巨頭的主導,該專案會越發展越好,未來會有越來越多的開源專案、框架、平臺,原生的使用OpenTelemetry,最終實現監控資料標準的大一統。 ##### 引用 [https://github.com/SpringLeee/docs-cn/blob/master/OT.md](https://github.com/SpringLeee/docs-cn/blob/master/OT.md "https://github.com/SpringLeee/docs-cn/blob/master/OT.md") ### 最後 歡迎掃碼關注我們的公眾號 【全球技術精選】,專注國外優秀部落格的翻譯和開源專案分享,也可以新增QQ群 897216102

相關推薦

OpenTelemetry - 原生觀測標準

### CNCF 簡介 CNCF(Cloud Native Computing Foundation),中文為“雲原生計算基金會”,CNCF是Linux基金會旗下的基金會,可以理解為一個非盈利組織。 當年谷歌內部一直用於編排容器的Borg專案開源了,為了該專案更好的發展,谷歌與Linux基金會一起創辦了C

原生 - Istio觀察之分散式跟蹤(三)

作者:justmine 頭條號:大資料與雲原生 微信公眾號:大資料與雲原生 創作不易,在滿足創作共用版權協議的基礎上可以轉載,但請以超連結形式註明出處。 為了方便閱讀,微信公眾號已按分類排版,後續的文章將在移動端首發,想學習雲原生相關知識,請關注我。 一、回顧 雲原生 - 體驗Istio的完美入門之旅(一

原生 - Istio觀察之監控(四)

作者:justmine 頭條號:大資料與雲原生 微信公眾號:大資料與雲原生 創作不易,在滿足創作共用版權協議的基礎上可以轉載,但請以超連結形式註明出處。 為了方便閱讀,微信公眾號已按分類排版,後續的文章將在移動端首發,想學習雲原生相關知識,請關注我。 一、回顧 雲原生 - 體驗Istio的完美入門之旅(一

捕獲和增強原生系統的觀測來發現錯誤

作者:唐劉 在對 TiDB 進行 Chaos 實踐的時候,我一直在思考如何更好的發現 TiDB 整個系統的故障。最開始,我們參考的就是 Chaos Engineering 裡面的方式,觀察系統的穩定狀態,注入一個錯誤,然後看 metrics 上面有啥異常,這樣等實際環境中出現類似的 me

混合場景容器技術在能源功率預測產品中的最佳實踐

研發 container orf 技術分享 五個 作用 並且 保護 proc 能源互聯網是物聯網和“互聯網+”在能源行業深度融合的產物,是中國制造2025的重要組成部分,我們現在還處於能源互聯網的早期階段。絕大部分能源行業的應用都部署在私有局域網內,並且網絡結構異常復雜,這

Istio on ACK整合生態(2): 擴充套件AlertManager整合釘釘助力觀測監控能力

阿里雲容器服務Kubernetes(簡稱ACK)支援一鍵部署Istio,可以參考文件在ACK上部署使用Isito。Istio on

從零開始入門 K8s | 觀測:你的應用健康嗎?

作者 | 莫源 阿里巴巴技術專家 一、需求來源 首先來看一下,整個需求的來源:當把應用遷移到 Kubernetes 之後,要如何去保障應用的健康與穩定呢?其實很簡單,可以從兩個方面來進行增強: 首先是提高應用的可觀測性; 第二是提高應用的可恢復能力。 從可觀測性上來講,可以在三個方面來去做增強:

從零開始入門 K8s | 觀測:監控與日誌

作者 | 莫源  阿里巴巴技術專家 一、背景 監控和日誌是大型分散式系統的重要基礎設施,監控可以幫助開發者檢視系統的執行狀態,而日誌可以協助問題的排查和診斷。 在 Kubernetes 中,監控和日誌屬於生態的一部分,它並不是核心元件,因此大部分的能力依賴上層的雲廠商的適配。Kubernetes 定

【譯文連載】 理解Istio服務網格(第六章 觀測

全書目錄 第一章 概述 第二章 安裝 第三章 流控 第四章 服務彈性 第五章 混沌測試  ​本文目錄 第6章 可觀測性 6.1 分散式呼叫鏈跟蹤(tracing) 6.1.1 基本概念 6.1.2 Jaeger 6.1.3 Istio對

Istio觀測

# Istio可觀測性 Istio的可觀測性包括metrics,日誌,分散式鏈路跟蹤以及視覺化展示。下面主要介紹如何在istio中部署基於Prometheus的metrics監控,基於jaeger的鏈路跟蹤和基於kiali的視覺化介面。 [TOC] ## Prometheus ### 配置說明 在i

原生離線上混部實踐系列】深入淺出 Google Borg

Google Borg 是資源排程管理和離線上混部領域的鼻祖,同時也是 Kubernetes 的起源與參照,已成為從業人員首要學習的典範。本文嘗試管中窺豹,簡單從《Large-scale cluster management at Google with Borg》一文中剖析 Google Borg 的設計理

在Windows獲取控制檯(DOS)執行檔案的標準輸入輸出

我們在開發軟體時,常常會用到控制檯下的程式,比如make,link,ftp等等。除此之外,還有一些開源的軟體都是在控制檯下使用的,這樣,如果我們想方便的在Windows程式中直接呼叫這些程序和他們進行互動,那麼就需要獲取它們的標準輸入輸出。 在Windows下獲取這種輸出

原生移植的神話

雲原生可移植性的神話 原文連結:https://thenewstack.io/myth-cloud-native-portability/ 作者:Bilgin Ibryam 譯者:殷龍飛 隨著大量新平臺和支援工具的出現,雲原生勢頭正在增長。 這些新平臺為開發人員提

觸手得的原生 | 阿裏中間件發布多項功能?

數字化轉型 曲線 應用服務 全量 其中 新功能 png 應用監控 部署方式 3月21日,在阿裏雲峰會·北京企業級互聯網架構專場的現場,阿裏雲中間件 PaaS 平臺的多項新功能重磅發布 ,覆蓋應用服務管理、消息收發管理、全鏈路灰度管理和監控管理等應用場景,旨在降

OpenTelemetry-觀察時代

有幸在2019KubeCon上海站聽到Steve Flanders關於OpenTelemetry的演講,之前Ops領域兩個網

原生時代的12-factor應用與實踐

在雲的時代,應用會更多地遷移到雲端,基於雲的架構設計和開發模式需要一套全新的理念去承載,於是雲原生思想應運而生,而針對雲原生應用開發的最佳實踐原則,12-Factor脫穎而出,同時也帶來了新的解讀。本次分享將結合 Docker等技術,介紹在 Cloud Native時代下,如何一一實踐 12

環境運維工作面對的諸多挑戰

隨著公有云(尤其是公有云IaaS)的普及,整個雲上運維和傳統IDC中的運維還是呈現出比較明顯的不同點,我們可以從下面幾個角度來理解這種不同點。 1.應用運維成為雲上使用者的運維重心。 一般來說,很多企業的運維部門主要工作包括基礎運維(針對企業IT基礎設施的運維)、應用運維(針對企業具體業務的運維),較大的

姜健:VP9視訊編碼(SVC)特性

與VP8相比,VP9進行了大量的設計改進以儘可能的獲得更高的視訊編碼質量。Google軟體工程師 姜健詳細介紹了VP9可適性視訊編碼(SVC)中多種新功能的實現與相應API。本文來自姜健在LiveVideoStack 線上交流分享,並由LiveVideoStack整理

Windows環境通過SSH登入

在後端系統開發中,開發完成之後,如果需要對外提供服務,需要部署到相應的對外公網伺服器上。而作為個人開發者,或者測試使用者,可以選用現在比較成熟的雲,將程式碼託管,著名的有阿里雲(需要備案),本文為了方便說明,我選擇了新浪雲,文件配置地址如下。 Window