天天看點

系統運維利器,百萬伺服器運維實戰總結!一文了解最新版SysAK

作者:龍蜥社群小龍

在剛剛結束的龍蜥峰會 eBPF & Linux 穩定性專場上,龍蜥系統運維 SIG Maintainer 張毅做了《SysAK 系統運維工具集》的主題演講,以下為演講實錄。

系統運維利器,百萬伺服器運維實戰總結!一文了解最新版SysAK

大家好,在去年的雲栖大會,我們在龍蜥社群開源了系統運維工具集 SysAK,并提供了多種診斷功能。作為系統運維 SIG(Special Interest Group) 主力項目之一。這一年來,SysAK 為适應更多場景,在技術架構和應用場景上也做出了更多更新。今天分享下最新版本的核心技術結構和使用場景,限于時間關系,會重點介紹監控模式的相關元件,利用龍蜥 OS、SysAK 的增強特色,去做疑難問題和系統健康度的監控。

一、SysAK 架構介紹

系統運維利器,百萬伺服器運維實戰總結!一文了解最新版SysAK

SysAK 全稱為 System Analyse Kit,是龍蜥系統運維 SIG。我們通過對過往百萬伺服器運維經驗進行抽象總結,提供了一個全方位的系統運維工具集,可以覆寫系統日常監控、線上問題診斷和系統故障修複等常見運維場景。主要包括三個方面:

  • 系統監控:針對各種系統資源(CPU、記憶體、網絡、檔案 IO、核心管理結構等)提供更精細化的資源監控,幫助業務運維實作細粒度的運維排程,高效運用資源。
  • 系統診斷:診斷的典型問題如負載異常、網絡抖動、記憶體洩漏、IO毛刺、性能瓶頸、應用異常等,針對性提供工具,同時盡量減少工具的專業性,讓使用者更易使用和解讀。
  • 系統介入:主要針對故障注入、系統恢複和故障隔離3種情況提供系統介入的能力。
系統運維利器,百萬伺服器運維實戰總結!一文了解最新版SysAK

SysAK 架構包括兩大模式,分别為監控模式和診斷模式。

系統資源瓶頸名額包括 CPU 瓶頸、記憶體瓶頸、網絡瓶頸、IO 瓶頸,通過對瓶頸的監控可以發現應用運作過程中對資源的依賴度,再通過依賴度有效配合其他資料,對應用做合理的排程和資源配置設定。

除了硬體四大資源之外,系統軟體本身也也存在瓶頸,比如 Linux 核心系統實作各種檔案、句柄、cache、共享資源的通路過程中都有可能會産生并發瓶頸, SysAK 針對此瓶頸也做了很多工作。

幹擾是應用運作過程中是比較常見的因素,會引發抖動或運作中斷等。針對目前雲原生的趨勢下,SysAK 實作了容器資源可視化。

診斷模式指及時發現問題,并根據問題根因做診斷,随用随起。根據使用者運維場景,目前支援以下這三類:

  • 系統負載分析:系統負載時系統運維過程中的典型問題,可以針對于此進行根因分析,避免影響程序堆棧。
  • 系統健康一鍵診斷:比如對系統各個資源次元進行分析,檢視配置是否合理等。
  • IO 問題自動診斷:比如分析 IO 打滿時,是應用瓶頸還是業務底層存儲瓶頸導緻。

除了使用者場景,我們也針對進階技術人員提供了更深層次的資料診斷,比如系統調用資料耗時較長的函數、中斷運作統計、排程子產品、記憶體子產品、延時抖動、記憶體洩露等,會根據每個子系統的特點做專項功能診斷。

系統運維利器,百萬伺服器運維實戰總結!一文了解最新版SysAK

SysAK 通過松散耦合、依賴管理、多架構多版本的建構支援等方式保障工具的開發者僅需一次開發、無需額外工作,即可在主流的架構和作業系統版本上內建。

二、SysAK 監控場景應用

系統運維利器,百萬伺服器運維實戰總結!一文了解最新版SysAK

SysAK 的監控服務 mservice 主要提供了資源監控、異常告警、根因分析三大能力。其中異常告警功能會設定特殊門檻值,提供告警,并進行自動分析。

系統運維利器,百萬伺服器運維實戰總結!一文了解最新版SysAK

SysAK 能夠利用增強名額監控容器資源的使用,主要依托于龍蜥 OS 核心的增強特性以及 SysAK 本身的擴充。

計算資源方面:包括容器負載、運作和阻塞任務數。

記憶體資源方面:記憶體使用過程中會頻繁遇到瓶頸,主要針對延遲做了增強監控。記憶體回收延遲包括全局記憶體回收和容器記憶體回收,兩者都都會影響容器的服務運作狀态。是以我們對回收延遲分布以及規整次數做了統計,根據統計結果判斷容器業務運作過程是否遇到瓶頸。

IO資源方面:包括容器讀寫等待時間、排隊個數以及平均位元組數。

系統運維利器,百萬伺服器運維實戰總結!一文了解最新版SysAK

抖動是日常運維過程偶發的問題。而偶發過程中難以采集實際的根因資料。如果資料采集過多,會影響整體系統性能;而采集過少則不足以分析問題根因。引發業務抖動的原因可以總結為以下三類:

  • 進行/線程排程延遲:比如運作隊列擠壓、排隊時間過長以及高優先級應用搶占或本身排程政策設定不合理。
  • 中斷和軟中斷響應不及時:業務運作過程會依賴于中斷和軟中斷執行過程,包括網絡收發包、IO 讀寫等。是以可以分析關中斷時長來判斷中斷的響應時間。
  • 核心态執行過長:包括系統本身存在的瓶頸以及核心裡其他資源競争等情況。

上述三大類原因基本能夠覆寫 70%-80% 的抖動根因,是以針對以上三類問題進行檢測,大多可以解決抖動問題。

系統運維利器,百萬伺服器運維實戰總結!一文了解最新版SysAK

SysAk 對系統健康告警也做了增強。

比如應用沒有發生抖動,但突然變慢,長時間的積累會導緻系統進入不可用狀态,比如夯機。夯機會造成較大影響,且大多不可恢複。但在此之前可以通過多種手段提前預警,比如可以通過算法檢視夯機的影響名額,判斷是否會發生夯機,提前做健康度預判等。主要判斷名額包括排程的延遲、核心态鎖競争時延、記憶體回收時延等。

結合過往經驗,我們将目前的異常參考門檻值定為 50%。

系統運維利器,百萬伺服器運維實戰總結!一文了解最新版SysAK

SysAK 目前主要用于單機診斷和監控,而除了在機器上使用 SysAK mservice 指令直接檢視資料外,也支援以 http 端口的形式對外提供資料服務,如上圖。同時,也可根據資料做圖形化展示。

三、未來演進路線

系統運維利器,百萬伺服器運維實戰總結!一文了解最新版SysAK

未來,除了完善工具本身的使用場景,我們将持續增強 SysAK 的其他能力。目前,SysAK 僅能在系統級做診斷,後續我們也将考慮從應用級别做診斷,為應用診斷提供更多資料。

另外,SysAK 已經在龍蜥開源,我們希望更多開發者加入,讓運維發展得更好。我們也希望 SysAK 工具持續發展,作為運維平台的技術資料采集發揮特性,是以會着重于平台插件化。目前,它已經作為 SysOM 和雲監控的元件在使用,未來希望能夠作為 Prometheus 的插件擴充以滿足更多場景。

相關位址連結:

系統運維SIG:

源碼官網:

關于龍蜥 eBPF & Linux 穩定性專場課件擷取方式:

【PPT 課件擷取】:關注公衆号(OpenAnolis),回複“龍蜥課件” 即可擷取。有任何疑問請随時咨詢龍蜥助手—小龍(微信:openanolis_assis)。

【視訊回放】:視訊回訪已上傳至龍蜥官網:檢視。

繼續閱讀