sysAK(青囊)系統(tǒng)運維工具集:如何實現(xiàn)高效自動化運維?

系統(tǒng)運維 SIG 已在龍蜥社區(qū)建立 SIG 組。目前 sysAK 工具集已經在龍蜥社區(qū)開源,并且在系統(tǒng)運維 SIG、跟蹤診斷 SIG 一起共建,希望大家后期加入 SIG 一起討論共建。本文將從技術角度分享 sysAK 系統(tǒng)。

一、 What is sysAK

sysAK 是我們去年才提的概念,但里面的功能來自于我們多年來在阿里百萬規(guī)模的服務器運維經驗。在系統(tǒng)運維過程中,資源監(jiān)控與利用、問題排查與解決是核心訴求,因此 sysAK 覆蓋系統(tǒng)運維的三大典型場景。

sysAK(青囊)系統(tǒng)運維工具集:如何實現(xiàn)高效自動化運維?

1、系統(tǒng)監(jiān)控。除了常規(guī)的一些系統(tǒng)健康指標外,sysAK 還會針對各種系統(tǒng)資源提供更精細化的資源監(jiān)控,幫助業(yè)務運維實現(xiàn)細粒度的運維調度和資源控制,進而高效運用資源。

2、系統(tǒng)診斷。這是對于典型的問題做分析的覆蓋,比如說負載異常、網絡抖動、內存泄漏、IO 毛刺、性能瓶頸、應用異常等等。

3、系統(tǒng)介入。這塊更重要的一點是故障修復,因為我們的系統(tǒng)運維終極目標是減少或者避免業(yè)務損失,故障總是不可預期的會發(fā)生,發(fā)生之后我們能快速發(fā)現(xiàn)和分析,也需要對這個問題本身做一些修復或止血,所以 sysAK 也會提供一些系統(tǒng)不具備但常用的故障修復手段在里面。

覆蓋比較全的場景做了可用工具集,其實還是不夠的,另外一個目標是工具怎么做的好用。好用有很多因素,我認為至少要具備以下三點:

1、 對普通用戶來說易懂。比如說現(xiàn)在的一些服務越來越多,系統(tǒng)越來越復雜,現(xiàn)在一些工具對運維來說要去了解背后的專業(yè)知識才能使用。運維工具輸出結果要直達問題的核心,用戶直接能看懂,不管是診斷結果或是修復建議。

2、 對運行系統(tǒng)來說影響少。工具本身要盡量減少對系統(tǒng)的擾動,sysAK 通過高性能實現(xiàn)來做,并通過統(tǒng)一的資源框架來做管理,工具可以隨時隨地常態(tài)化運行。這樣的話,對系統(tǒng)問題及時發(fā)現(xiàn)是非常有好處的。

3、 對其他平臺接口友好,便于被集成。sysAK 工具集可以做成標準化輸出形式,在大型集群平臺上也可以做集群化運維。

sysAK(青囊)系統(tǒng)運維工具集:如何實現(xiàn)高效自動化運維?

二、典型工具介紹

下面可根據(jù)一些分類場景的典型工具來看 sysAK 是怎么達到這些目的。

系統(tǒng)運維的話,Load 作為服務器運行負載的一個典型指標,經常被運維人員用于評價系統(tǒng)運行是否良好的一個關鍵因素,其計算本身是比較簡單的,就只是簡單恒量運行任務和 IO 等待任務的數(shù)量。對于運維人員來說,他可以方便的拿到當前是哪些進程導致 Load 高,但背后是什么導致,原因各種各樣。系統(tǒng)錯誤或者硬件錯誤都可能會導致 Load 高,只是拿到進程情況,沒有專業(yè)的操作系統(tǒng)知識是無法繼續(xù)分析的。所以 loadtask 工具會進行全方位的系統(tǒng)分析,除獲取進程運行棧外,還自動分析內存壓力、cpu 壓力、IO 壓力、系統(tǒng)錯誤,并將這些因素和進程棧進行關聯(lián),跟當前進程對照,上下文結合,給出最后精確的 Load 異常原因,讓運維人員直接根據(jù)這個作出決策。

sysAK(青囊)系統(tǒng)運維工具集:如何實現(xiàn)高效自動化運維?

內存泄露是內存問題的典型場景,對于內存泄露問題,通常我們的一些工具也是通過分配和釋放、是否匹配的模式去識別泄露點在哪里,但這只是第一步工作。第二步工作才是最關鍵的,因為分配和釋放不匹配其實是正常情況下也會出現(xiàn),我們要對這個數(shù)據(jù)特征模式做分析,排除干擾因素,才能知道是否真的泄露了,而這塊的工作花的時間是最多的,所以我們對于內核內存,通過以前的歷史經驗總結出來了一些模型,把數(shù)據(jù)分析的過程總結放在工具里面,我們通過這個工具可以自動快速的找到泄露點在哪個地方。

鎖競爭分析工具,鎖競爭是比較常見的業(yè)務效率低下或突發(fā)抖動的原因之一,通過靜態(tài)分析我們可以找到鎖的持有者是誰,但是一般業(yè)務抖動、長時間性能上不去,這是動態(tài)的鎖的過程,ulockcheck 工具會跟蹤鎖的持有釋放流程,對持有鎖的時間時長和頻率進行分析,真正判斷出來到底是因為某一些任務持有過長還是業(yè)務競爭鎖比較激烈,并且給出競爭場景的上下文,幫助業(yè)務開發(fā)人員精準判斷出優(yōu)化點在哪兒。

sysAK(青囊)系統(tǒng)運維工具集:如何實現(xiàn)高效自動化運維?

第四個是網絡類問題,網絡問題分析更是專業(yè)性極強的事情,通常需要抓包并分析數(shù)據(jù)報文,耗費大量時間。我們開發(fā)的 PingTrace 工具通過在內部封裝自定義網絡報文協(xié)議,在 server、clinent 對報文經過的全鏈路流程進行記錄,除各個時間段進行精準時間統(tǒng)計外,還包括這個過程中所有的系統(tǒng)中斷或者調度因素的影響,做綜合性判斷,把數(shù)據(jù)聚合出來,最后給出時延的精確原因。

sysAK(青囊)系統(tǒng)運維工具集:如何實現(xiàn)高效自動化運維?

第五個是性能瓶頸快速界定工具。業(yè)界有太多針對不同場景(從應用到硬件)的專業(yè)性能調優(yōu)工具,找到性能瓶頸從程序或者系統(tǒng)級別去修改優(yōu)化,我們接下來有一個議題也會講性能調優(yōu)工具。appscan 工具可能更側重于運維人員,對運維人員來說,通常不會涉及到業(yè)務或系統(tǒng)具體怎么調優(yōu)這么細致的力度,他更關注的是系統(tǒng)是否滿足業(yè)務運行,哪一類資源是瓶頸,是否可以從運維手段上得到解決,因而除了幫助優(yōu)化外,appscan 工具盡可能的從應用可能使用到資源的上去分析,幫助運維做出決策。

sysAK(青囊)系統(tǒng)運維工具集:如何實現(xiàn)高效自動化運維?

最后一個工具是ossre,這不是單獨的工具,它其實是我們內部運行的自動化診斷專家系統(tǒng),前端會分析數(shù)據(jù)、采集數(shù)據(jù),后端會有大數(shù)據(jù)人工智能的方式去分析這個系統(tǒng)能存在的問題或者是已知問題。其前端集成到了 sysAK 中,也可單獨使用,對于一些不需要后端大量數(shù)據(jù)也可分析出的已知問題給出解決方案。

sysAK(青囊)系統(tǒng)運維工具集:如何實現(xiàn)高效自動化運維?

三、開源

由于不斷發(fā)展和變化的復雜業(yè)務環(huán)境,工具集也需要持續(xù)迭代,以覆蓋更多的場景,因此希望通過社區(qū)合作,共同打造出這個跨平臺的統(tǒng)一工具集,為此,工具集支持多種語言格式,c、shell、python、go 等,方便不同語言習慣的開發(fā)者進行開發(fā),快速集成;同時針對需要采集系統(tǒng)內核數(shù)據(jù)的情況,也同時兼容 Linux kernel module 和 eBPF 兩種技術,對內核版本不做限制。

sysAK(青囊)系統(tǒng)運維工具集:如何實現(xiàn)高效自動化運維?

目前 sysAK 工具集的代碼已經在龍蜥社區(qū)進行了托管,并且在系統(tǒng)運維 SIG、跟蹤診斷 SIG 中進行開源,希望大家后期加入 SIG 一起討論共建。謝謝!

原文鏈接:https://developer.aliyun.com/article/811850?utm_content=g_1000309913

本文為阿里云原創(chuàng)內容,未經允許不得轉載。

相關新聞

聯(lián)系我們
聯(lián)系我們
公眾號
公眾號
在線咨詢
分享本頁
返回頂部