系統運維 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 中進行開源.

轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/541404.html
標籤:架構設計
上一篇:風控規則引擎構建及挑戰
下一篇:風控規則引擎構建及挑戰
