經過多年在混合云環境下的耕耘,云杉網絡自主研發的DeepFlow可觀測性平臺得到了多家企業客戶的認可,并在金融、電信、能源等行業得到了廣泛的應用。今天正式宣布開源DeepFlow核心的可觀測性數據流引擎,希望將高度自動化的可觀測性能力、自動追蹤和自動標簽能力開放到整個行業,幫助企業客戶優化云原生運維工作運行的效率、穩定性和計算成本。
一、為什么需要可觀測性?
大量云原生技術的采用,導致IT系統越來越復雜,快速排障變得越來越難。傳統的應用監控(APM)和網絡監控(NPM)工具,可以發現某個函數調用失敗或者某個鏈路性能下降,卻難以在復雜的云環境下找到故障發生的根本原因。Epsagon 的一項調查表明,應用開發者有高達30%的時間花在可觀測性能力建設上,另有 20% 的時間花在代碼 Debug 上,而 Debug 花費的大部分時間又恰好是可觀測性建設不足導致。
可觀測性建設的難點包括兩個方面:
埋點插碼難
開發者需要考慮為每一種語言、每一種框架進行埋點和插碼。一些公司的業務開發團隊很幸運,會有類似 IDP(Internal Developer Platform)的團隊負責整個公司的可觀測性能力建設,提供埋點和插碼的 SDK。但大部分語言缺乏類似 JVM 的字節碼注入機制,IDP 團隊每一次的 SDK 升級都需要業務開發團隊同步發版、上線。
開發者需要考慮在微服務之間如何傳遞追蹤上下文。同樣需要為每一種語言、每一種框架進行埋點和插碼,另一方面像 MQTT 3.X、MySQL、Redis 等缺乏 Header Option 字段的協議經常成為追蹤的噩夢。
開發者需要為每一個指標、追蹤、日志數據注入大量的屬性標簽,以便于后續能夠對觀測數據進行靈活的過濾、分組及關聯。然而這些標簽已經存在于 K8s apiserver、服務注冊中心、應用協議 Header 中,開發者不得不重復這份工作將他們搬遷到觀測數據中。平臺運維難
開發者需要考慮如何避免指標數據中攜帶高基標簽,有些時候因為后端 TSDB(Time Series Database)性能的不足,無奈將高基 Tag 字段轉換為 Metrics,甚至丟棄;限制觀測數據的猖獗增長,在復雜的采樣策略之間權衡選擇以降低數據量,但通常會在某次問題排查時發現數據不全而無法進行;維護復雜的可觀測平臺,他們通常有著負載均衡、消息隊列依賴。隨著復雜度的增長,可觀測性平臺本身的可觀測性能力同樣也成為問題。
二、DeepFlow可觀測性平臺
云杉網絡在SDN及云網絡領域深耕近十年,逐步從SDN核心技術走向IT系統的自動化和可觀測性,率先推出了DeepFlow云原生可觀測性平臺,面向混合云、容器、微服務的全棧虛擬化環境,實現對網絡、系統、應用的全棧指標和全鏈路追蹤,結合云資源知識圖譜實現100+維度指標數據的動態標注,擁有零侵擾部署的特性。獲得眾多大型銀行的青睞和認可,成為商用的云原生監控產品,并在近百家重點行業的企業云數據中心得到廣泛應用。
隨著云時代為了讓業務運行更加穩定、業務創新更加高效,開發、運維、SRE團隊對可觀測性的需求空前高漲,但不同的團隊所選擇的可觀測性方案和實踐路徑又各有不同,從應用開發團隊看來可觀測性建設已成為一項必要工作。
為幫助大家有效應對以上困境,正式將DeepFlow核心的可觀測性數據流引擎開源,這一個為云原生應用開發者建設可觀測性能力而量身打造的全棧、全鏈路、高性能數據引擎,能夠顯著降低開發者的埋點、插碼、維護負擔,通過 AutoTagging 機制打破數據孤島,解鎖數據下鉆能力;基于創新的高性能 SmartEncoding 機制告別高基煩惱和資源焦慮;利用DeepFlow的可編程能力和開放接口,開發者可以快速將其融入到自己的可觀測性技術棧中。
三、開源的DeepFlow(原名:MetaFlow)有什么優勢?
全棧
DeepFlow開源版使用 AF_PACKET、BPF、eBPF 技術實現的 AutoMetrics 機制,可以自動采集任何應用的 RED性能指標,精細至每一次應用調用,覆蓋從應用到基礎設施的所有軟件技術棧。在云原生環境中,DeepFlow開源版 的 AutoTagging 機制自動發現服務、實例、API的屬性信息,自動為每個觀測數據注入豐富的標簽,從而消除數據孤島,并釋放數據的下鉆能力。
全鏈路
DeepFlow開源版使用 eBPF 技術創新的實現了 AutoTracing 機制,在云原生環境中自動追蹤任意微服務、基礎設施服務的分布式調用鏈。在此基礎上,通過與 OpenTelemetry 的數據集成,將 eBPF Event 與 OTel Span 自動關聯,實現完整的全棧、全鏈路追蹤,讓追蹤無盲點。
高性能
DeepFlow開源版創新的 SmartEncoding 標簽注入機制,能夠將標簽數據的存儲性能提升 10 倍,從此告別高基標簽和數據采樣焦慮。使用 Rust 實現 Agent,擁有極致處理性能的同時保證內存安全。使用 Golang 實現 Server,重寫了 Golang 的 map、pool 基礎庫,數據查詢和內存申請均有近10倍的性能提升。
可編程
DeepFlow開源版目前支持了對 HTTP、HTTPS、Dubbo、MySQL、Redis、Kafka、MQTT、DNS協議的解析,并將保持迭代增加更多的應用協議支持。除此之外,DeepFlow開源版計劃基于 WASM技術提供了可編程接口,讓開發者可以快速具備對私有協議的解析能力,并可用于構建特定場景的業務分析能力,例如 5GC 信令分析、金融交易分析、車機通信分析等。
開放接口
DeepFlow開源版支持接收廣泛的可觀測數據源,并利用 AutoTagging 和 SmartEncoding 提供高性能、統一的標簽注入能力。支持插件式的數據庫接口,開發者可自由增加和替換最合適的數據庫。向上為所有觀測數據提供統一的標準 SQL 查詢能力,便于使用者快速集成到自己的可觀測性平臺中,也提供了在此基礎上繼續開發方言 QL 的可能性。
易于維護
DeepFlow開源版僅由 Agent、Server 兩個組件構成,將復雜度隱藏在進程內部,將維護難度降低至極致。DeepFlow Server 集群可對多資源池、異構資源池、跨 Region/AZ 資源池中的 Agent 進行統一管理,且無需依賴任何外部組件即可實現水平擴展與負載均衡。
四、為什么要開源?
建設可觀測性已經成為云原生應用開發者的必要工作,然而現有的解決方案正悄無聲息的消耗著開發者越來越多的時間。開發者需要考慮如何為新的框架插入追蹤代碼?如何為新的語言增加打樁點?如何為每條日志和指標注入上百個標簽?如何維護越來越復雜的可觀測性數據平臺?這些工作嚴重擠占了業務開發工作的時間。
開源DeepFlow是云杉網絡送給新時代開發人員、運維人員的一份禮物。希望開發人員能有更多的時間聚焦在業務上,將可觀測性更多的交給自動化的 DeepFlow,讓自己的代碼更清晰整潔。通過DeepFlow,希望讓觀測更自動,讓開發者更自由。
五、擁抱DeepFlow!
你是否正在規劃或者實施云原生可觀測性、提升網絡故障定位效率的項目?
你是否正在頭痛數據孤島、資源開銷的問題?Metrics、Tracing、Logging三類數據無法關聯、無法流通,使用困難?
你是否正在經歷追蹤和日志數據體量大,經常需要削足適履,做采樣抹掉高基數字段?
非常歡迎你通過 GitHub/微信 的方式聯系我們體驗DeepFlow。
免責聲明:市場有風險,選擇需謹慎!此文僅供參考,不作買賣依據。
標簽: