全面認識Apache SkyWalking
Apache SkyWalking 是中國首個、也是唯一一個發展成為 Apache 頂級項目的個人開源項目。Apache SkyWalking 作為業界最為領先的開源 APM 項目之一,提供了以往只有商業 APM 或者監控公司才具有的功能特性。
一、SkyWalking 介紹
1.1 什么是SkyWalking?
SkyWalking 是一個針對分布式系統的應用性能監控(Application Performance Monitor,APM)和可觀測性分析平台(Observability Analysis Platform)。它提供了多維度應用性能分析手段,從分布式拓撲圖到應用性能指標、Trace、日志的關聯分析與告警。
SkyWalking 針對的是微服務和分布式服務,包括現在的容器化。在這樣的環境中,應用間依賴關系復雜多變,無論是設計、開發還是運維團隊,都不具備對系統實際關系和運行情況的理解能力。主流大企業的內部系統都有十幾個、幾十個字系統,其中有上百個服務和上千個實例在運行,理解這套系統的依賴關系是 SkyWalking 要解決的第一個問題。
同時,隨着技術的革新和進步,分布式框架層出不窮,以 Spring Cloud、gRPC、Dubbo 為代表的多語言 RPC 框架是當今的主流,以 Istio+Envoy 為代表的 Servie Mesh 是未來發展的方向。統一的監控平台,對於用戶理解復雜的分布式架構會起到至關重要的作用。
最重要的是,SkyWalking 保證了在生產環境中高壓力情況下的可用性。常規百億級別的處理能力、輕量級、可插拔、方便定制,是 SkyWalking 在短短 3 年時間得到廣泛應用的主要原因。
1.2 SkyWalking 的適用場景?
SkyWalking 是一個為微服務、容器化和分布式而生的高度組件化的 APM 項目。
早在 2010 年 SOA 開始興起時,應用系統開發人員就注意到,系統的調試過程越來越復雜,在線運行程序出現故障時,面臨的問題定位已經很難使用傳統日志進行排查。之后隨着微服務興起,去 IOE 及分布式架構的廣泛采用,程序性能的監控和問題定位需求也越來越急迫。
這正是 SkyWalking 項目誕生的出發點,SkyWalking 受 Google Dapper 論文啟發,整合多個初創成員在 APM 和互聯網公司的工作經驗,設立了基於分布式追蹤的應用性能監控解決方案。同時,針對中國業務流量大和系統研發團隊的特點,SkyWalking 首先提出在生產大流量環境下支持100%追蹤采樣。SkyWalking 也是目前唯一一個提出此支持的 APM 系統。
1.2.1 SkyWalking 不是一個單純的追蹤系統
SkyWalking 首先是一個應用性能監控工具,它的目標是應用性能。在語言探針的場景下,具有自動化分布式追蹤(distrbuted tracing)的能力,但這個能力是為應用性能監控服務。它提供了高性能、自動探針解決方案,支持輕量級分析拓撲圖、應用性能指標等功能。而 Zipkin 和 Jaeger 都專注於追蹤本身,得到盡可能細致的調用鏈,並建議在高流量時開啟采用。
1.2.2 SkyWalking 不是一個以大數據為基礎的APM系統
提到 APM,就不得不提早在 2012 年由韓國 Naver 公司開源的 APM 項目 Pinpoint。Pinpoint 和 SkyWalking 采用的技術棧反反映了其本質的差別:Pinpoint 立足於 HBase;SkyWalking 使用包括 Elasticsearch 在內的多種存儲,卻不支持任何一種大數據技術。
SkyWalking 在 3 之后的版本中就完全放棄了大數據技術棧,根本原因是,作為 Ops 的核心系統之一,輕量級和靈活性被放在首要位置上。SkyWalking 以監控千億級流量為基礎要求,自己不能反而成為整個大型分布式系統的部署和運維難點,而大數據技術卻適得其反,會大幅增加運維和部署難度。
同時,SkyWalking 在超過 5000 TPS 下超級優良的性能,也是其與 Pinpoint 的較大區別。無論是官方測試還是網上大量性能對比都能夠反映出巨大差異。SkyWalking 在設計之初,也是要保證探針能夠在單進程 1 萬 TPS 級別系統中,提供穩定的 100% 采樣,以及合理的性能消耗(小於 10% 增幅)。高起點也要 SkyWalking 必須能夠完成控制自己的技術棧和運算模型,使其完全符合 APM 計算的要求。
1.2.3 SkyWalking 不是方法診斷系統
首先,從技術角度上說,方法級別追蹤是 SkyWalking 技術棧能夠做到的技術,但是官方並推薦這樣使用,特別是在生產環境中。方法級別追蹤是性能診斷工具的工作,而不是 APM 系統要做的。APM 系統要求在有限要求在有限性能消耗下,在生產環境長時間低消耗運行,而方法監控會消耗大量的內存和性能,並不適合打流量系統。
當然,SkyWalking 考慮到不同的團隊的使用場景,在可選插件中提供了對 Srping 托管的類方法級別追蹤。
作為 APM 系統,SkyWalking 不建議做常規性新加 span 的方法診斷,而提供了更為高效合理的方式——性能剖析,用於生成環境的性能診斷。
1.2.3 SkyWalking 能夠追蹤方法參數
參數追蹤和方法追蹤類似,即使是針對 HTTP 請求的方法參數追蹤,也會對應用系統和 APM 造成較大的壓力。雖然目前Sky Walking 的部分插件(如 Mysql)支持用戶手動開啟參數追蹤,但依然提醒用戶,要注意考慮性能消耗。
從 SkyWalking 7 新推出了性能診斷功能,方法參數會被自動捕捉。