系統運維 SIG 已在龍蜥社區建立 SIG 組。目前 sysAK 工具集已經在龍蜥社區開源,並且在系統運維 SIG、跟蹤診斷 SIG 一起共建,希望大家後期加入 SIG 一起討論共建。本文將從技術角度分享 sysAK 系統。一、 What is sysAKsysAK 是我們去年才提的概念,但裡面的功 ...
系統運維 SIG 已在龍蜥社區建立 SIG 組。目前 sysAK 工具集已經在龍蜥社區開源,並且在系統運維 SIG、跟蹤診斷 SIG 一起共建,希望大家後期加入 SIG 一起討論共建。本文將從技術角度分享 sysAK 系統。
一、 What is sysAK
sysAK 是我們去年才提的概念,但裡面的功能來自於我們多年來在阿裡百萬規模的伺服器運維經驗。
在系統運維過程中,資源監控與利用、問題排查與解決是核心訴求,因此 sysAK 覆蓋系統運維的三大典型場景
1、系統監控。除了常規的一些系統健康指標外,sysAK 還會針對各種系統資源提供更精細化的資源監控,幫助業務運維實現細粒度的運維調度和資源控制,進而高效運用資源。
2、系統診斷。這是對於典型的問題做分析的覆蓋,比如說負載異常、網路抖動、記憶體泄漏、IO 毛刺、性能瓶頸、應用異常等等。
3、系統介入。這塊更重要的一點是故障修複,因為我們的系統運維終極目標是減少或者避免業務損失,故障總是不可預期的會發生,發生之後我們能快速發現和分析,也需要對這個問題本身做一些修複或止血,所以 sysAK 也會提供一些系統不具備但常用的故障修複手段在裡面。
覆蓋比較全的場景做了可用工具集,其實還是不夠的,另外一個目標是工具怎麼做的好用。好用有很多因素,我認為至少要具備以下三點:
1、 對普通用戶來說易懂。比如說現在的一些服務越來越多,系統越來越複雜,現在一些工具對運維來說要去瞭解背後的專業知識才能使用。運維工具輸出結果要直達問題的核心,用戶直接能看懂,不管是診斷結果或是修複建議。
2、 對運行系統來說影響少。工具本身要儘量減少對系統的擾動,sysAK 通過高性能實現來做,並通過統一的資源框架來做管理,工具可以隨時隨地常態化運行。這樣的話,對系統問題及時發現是非常有好處的。
3、 對其他平臺介面友好,便於被集成。sysAK 工具集可以做成標準化輸出形式,在大型集群平臺上也可以做集群化運維。
二、典型工具介紹
下麵可根據一些分類場景的典型工具來看 sysAK 是怎麼達到這些目的。
系統運維的話,Load 作為伺服器運行負載的一個典型指標,經常被運維人員用於評價系統運行是否良好的一個關鍵因素,其計算本身是比較簡單的,就只是簡單恆量運行任務和 IO 等待任務的數量。對於運維人員來說,他可以方便的拿到當前是哪些進程導致 Load 高,但背後是什麼導致,原因各種各樣。系統錯誤或者硬體錯誤都可能會導致 Load 高,只是拿到進程情況,沒有專業的操作系統知識是無法繼續分析的。所以 loadtask 工具會進行全方位的系統分析,除獲取進程運行棧外,還自動分析記憶體壓力、cpu 壓力、IO 壓力、系統錯誤,並將這些因素和進程棧進行關聯,跟當前進程對照,上下文結合,給出最後精確的 Load 異常原因,讓運維人員直接根據這個作出決策。
記憶體泄露是記憶體問題的典型場景,對於記憶體泄露問題,通常我們的一些工具也是通過分配和釋放、是否匹配的模式去識別泄露點在哪裡,但這隻是第一步工作。第二步工作才是最關鍵的,因為分配和釋放不匹配其實是正常情況下也會出現,我們要對這個數據特征模式做分析,排除干擾因素,才能知道是否真的泄露了,而這塊的工作花的時間是最多的,所以我們對於內核記憶體,通過以前的歷史經驗總結出來了一些模型,把數據分析的過程總結放在工具裡面,我們通過這個工具可以自動快速的找到泄露點在哪個地方。
鎖競爭分析工具,鎖競爭是比較常見的業務效率低下或突發抖動的原因之一,通過靜態分析我們可以找到鎖的持有者是誰,但是一般業務抖動、長時間性能上不去,這是動態的鎖的過程,ulockcheck 工具會跟蹤鎖的持有釋放流程,對持有鎖的時間時長和頻率進行分析,真正判斷出來到底是因為某一些任務持有過長還是業務競爭鎖比較激烈,並且給出競爭場景的上下文,幫助業務開發人員精準判斷出優化點在哪兒。
第四個是網路類問題,網路問題分析更是專業性極強的事情,通常需要抓包並分析數據報文,耗費大量時間。我們開發的 PingTrace 工具通過在內部封裝自定義網路報文協議,在 server、clinent 對報文經過的全鏈路流程進行記錄,除各個時間段進行精準時間統計外,還包括這個過程中所有的系統中斷或者調度因素的影響,做綜合性判斷,把數據聚合出來,最後給出時延的精確原因。
第五個是性能瓶頸快速界定工具。業界有太多針對不同場景(從應用到硬體)的專業性能調優工具,找到性能瓶頸從程式或者系統級別去修改優化,我們接下來有一個議題也會講性能調優工具。appscan 工具可能更側重於運維人員,對運維人員來說,通常不會涉及到業務或系統具體怎麼調優這麼細緻的力度,他更關註的是系統是否滿足業務運行,哪一類資源是瓶頸,是否可以從運維手段上得到解決,因而除了幫助優化外,appscan 工具儘可能的從應用可能使用到資源的上去分析,幫助運維做出決策。
最後一個工具是ossre,這不是單獨的工具,它其實是我們內部運行的自動化診斷專家系統,前端會分析數據、採集數據,後端會有大數據人工智慧的方式去分析這個系統能存在的問題或者是已知問題。其前端集成到了 sysAK 中,也可單獨使用,對於一些不需要後端大量數據也可分析出的已知問題給出解決方案。
三、開源
由於不斷發展和變化的複雜業務環境,工具集也需要持續迭代,以覆蓋更多的場景,因此希望通過社區合作,共同打造出這個跨平臺的統一工具集,為此,工具集支持多種語言格式,c、shell、python、go 等,方便不同語言習慣的開發者進行開發,快速集成;同時針對需要採集系統內核數據的情況,也同時相容 Linux kernel module 和 eBPF 兩種技術,對內核版本不做限制,目前 sysAK 工具集的代碼已經在龍蜥社區進行了托管,並且在系統運維 SIG、跟蹤診斷 SIG 中進行開源.