CNCF(Cloud Native Computing Foundation),中文爲「雲原生計算基金會」,CNCF是Linux基金會旗下的基金會,能夠理解爲一個非盈利組織。git
當年谷歌內部一直用於編排容器的Borg項目開源了,爲了該項目更好的發展,谷歌與Linux基金會一塊兒創辦了CNCF。同時,谷歌把Borg用Go語言重寫,改名爲Kubernetes並捐贈到CNCF。github
成立這個組織的初衷或者願景,簡單說:網絡
你們應該都據說過APM(Application Performance Monitoring),也應該據說過Distributed Tracing(分佈式跟蹤),其中後者是前者的子集。分佈式跟蹤該名詞是隨着微服務的流行而興起的,主要是爲了解決微服務架構中請求鏈路過長致使的定位和監控難問題。 目前該領域有名的產品有:Jaeger、Pinpoint、Zipkin等等,能夠說是競爭異常激烈,可是由此帶來一個問題:每一家都有本身的一套數據採集標準和SDK,雖然幾乎都是基於谷歌Dapper協議,可是彼此的實現是截然不同的。 爲了解決這個問題,國外的大神們在以前建立了OpenTracing和OpenCensus,咱們先來分別看看這兩個產品。架構
OpenTracing制定了一套平臺無關、廠商無關的協議標準,使得開發人員可以方便的添加或更換底層APM的實現。app
在2016年11月的時候發生了一件里程碑事件,CNCF.io接受OpenTracing,同時這也是CNCF的第三個項目,前兩個都已經鼎鼎大名了:Kubernetes,和Prometheus,因而可知開源世界對APM的重視,對統一標準的重視和渴望。框架
遵循OpenTracing協議的產品有Jaeger、Zipkin等等。分佈式
中國有句老話,既生瑜何生亮,OpenTracing自己出現的更早且更流行,爲何要有OpenCensus這個項目?微服務
這裏先補充一下背景知識,前面提到了分佈式追蹤,其實在APM領域,還有一個極其重要的監控子類:Metrics指標監控,例如cpu、內存、硬盤、網絡等機器指標,grpc的請求延遲、錯誤率等網絡協議指標,用戶數、訪問數、訂單數等業務指標,均可以涵蓋在內。工具
首先,該項目有個很是牛逼的親爹:Google,要知道就連分佈式跟蹤的基礎論文就是谷歌提出的,能夠說谷歌就是親爹無疑了。測試
其次,OpenCensus的最初目標並非搶OpenTracing的飯碗,而是爲了把Go語言的Metrics採集、鏈路跟蹤與Go語言自帶的profile工具打通,統一用戶的使用方式。隨着項目的進展,野心也膨脹了,這個時候開始幻想爲何不把其它各類語言的相關採集都統一呢?而後項目組發現了OpenTracing,忽然發現,我K,做爲谷歌,咱們都沒玩標準,大家居然敢玩標準敢想着統一全世界?(此處乃做者的瘋人瘋語) 因而乎,OpenCensus的場景進一步擴大了,不只作了Metrics基礎指標監控,還作了OpenTracing的老本行:分佈式跟蹤。
有個谷歌作親爹已經夠牛了,那再加入一個微軟作乾爹呢?是否是要起飛了?因此,對於OpenCensus的發展而言,微軟的直接加入能夠說是打破了以前的競爭平衡,間接致使了後面OpenTelemetry項目的誕生。
這裏直接把 Steve Flanders的對比圖拿了過來
能夠看到,OpenTracing和OpenCensus從功能和特性上來看,各有優缺點。OpenTracing支持的語言更多、相對對其餘系統的耦合性要更低;OpenCensus支持Metrics、分佈式跟蹤,同時從API層一直到基礎設施層都進行了支持。
難分勝負?再來對比下社區活躍,我去,好像仍是半斤八兩,你有更廣的使用羣衆基礎,我有谷歌和微軟就足矣。
因此,從上面能夠看出,兩個產品真的是各紅遍半邊天,可是做爲開源項目,這種競爭未免太消耗資源了,對用戶也十分不友好,咋麼辦?
正所謂是:天下合久必分、分久必合,在此之時,必有梟雄出現:OpenTelemetry橫空出世。
兩個產品合併,首先要考慮的是什麼?有過經驗的同窗都知道:如何讓兩邊的用戶可以繼續使用。所以新項目首要核心目標就是兼容OpenTracing和OpenCensus。
OpenTelemetry的核心工做目前主要集中在3個部分:
因而可知,OpenTelemetry的自身定位很明確:數據採集和標準規範的統一,對於數據如何去使用、存儲、展現、告警,官方是不涉及的,咱們目前推薦使用Prometheus + Grafana作Metrics存儲、展現,使用Jaeger作分佈式跟蹤的存儲和展現。
首先,再補充一下背景知識,以前提到了APM的兩種監控子類:分佈式跟蹤和Metrics,其實還有第三種,就是Logging日誌,目前常見的日誌收集平臺有EFK、Fluentd.
上圖中能夠看到,缺失了Logging,主要有如下緣由:
有了以上的背景知識,咱們就能夠頂一下OpenTelemetry的終極目標了:實現Metrics、Tracing、Logging的融合及大一統,做爲APM的數據採集終極解決方案。
這三者的組合能夠造成大一統的APM解決方案:
在以往對APM的理解中,這三者都是徹底獨立的,可是隨着時間的推移,人們逐步發現了三者之間的關聯,例如咱們能夠把Tracing的TraceID打到Logging的日誌中,這樣能夠把分佈式鏈路跟蹤和日誌關聯到一塊兒,彼此數據互通,可是還存在如下問題:
在OpenTelemetry中試圖使用Context爲Metrics、Logging、Tracing提供統一的上下文,三者都可以訪問到這些信息,同時Context能夠隨着請求鏈路的深刻,不斷往下傳播
從谷歌Dapper協議提出到如今已經不少年了,江湖也已經亂戰了不少年,此次谷歌和微軟下定決心結束江湖之亂,對於將來分佈式系統的監控真的是很是巨大的利好消息,咱們也有理由相信在這兩家巨頭的主導,該項目會愈加展越好,將來會有愈來愈多的開源項目、框架、平臺,原生的使用OpenTelemetry,最終實現監控數據標準的大一統。
https://github.com/SpringLeee/docs-cn/blob/master/OT.md
歡迎掃碼關注咱們的公衆號 【全球技術精選】,專一國外優秀博客的翻譯和開源項目分享,也能夠添加QQ羣 897216102