跟蹤診斷技術(shù)SIG?7月運(yùn)營月報:系統(tǒng)排查工具?ssar?即將開源?|?龍蜥SIG
SIG 本月亮點(diǎn)
系統(tǒng)排查工具 ssar
7月份,我們計劃將阿里云自研的 ssar 貢獻(xiàn)給龍蜥社區(qū)( OpenAnolis) ,作為跟蹤診斷 技術(shù)SIG 和 龍蜥社區(qū)(?OpenAnolis) 中第一款系統(tǒng)層面的排查工具。當(dāng)前 ssar 的開源工作正在有序進(jìn)行中,歡迎各位開發(fā)者關(guān)注跟蹤診斷技術(shù)SIG,及時獲取項目消息。ssar 簡介
大家平常會經(jīng)常遇到系統(tǒng)不穩(wěn)定的情況,往往需要依賴一款sar(System Activity Reporter)系統(tǒng)活動報告類工具來追蹤系統(tǒng)曾經(jīng)發(fā)生了什么,以便確定引起系統(tǒng)不穩(wěn)定的根源。相信不少同學(xué)在使用傳統(tǒng)的sar工具排查系統(tǒng)問題時,都會遇到如下一些苦惱:1、傳統(tǒng)sar工具固定采集一些主要的系統(tǒng)指標(biāo)。以TCP重傳為例,只采集了整機(jī)重傳數(shù)數(shù)據(jù)。若想擴(kuò)展采集更詳細(xì)的重傳子類型數(shù)據(jù),需要修改C語言代碼,增加指標(biāo)十分困難。2、傳統(tǒng)sar工具無進(jìn)程級指標(biāo)的記錄,當(dāng)整機(jī)CPU或內(nèi)存等指標(biāo)出現(xiàn)波動時,無法定位具體的進(jìn)程級因素。3、針對 linux load 這個即熟悉又陌生的指標(biāo)異常,單憑sar工具本身無能為力。4、傳統(tǒng)sar工具在系統(tǒng)異常時,采集工具本身往往也無法正常運(yùn)行,常常引起數(shù)據(jù)中斷的情況發(fā)生。這里介紹一款功能強(qiáng)大的阿里云自研sar類型工具ssar(SRE System Activity Reporter)。它是系統(tǒng)活動報告sar工具家族中嶄新的一個,幾乎涵蓋了傳統(tǒng)sar工具的大部分主要功能之外,還擴(kuò)展了更多的整機(jī)指標(biāo),新增了進(jìn)程級指標(biāo)和特色的load指標(biāo)。與其他sar家族工具相比,ssar有如下幾個特色的地方:1、ssar工具無需修改C語言代碼,只需幾分鐘簡單修改配置文件,幾乎可以擴(kuò)展采集系統(tǒng)的任意指標(biāo);2、傳統(tǒng)sar工具或者無法二次開發(fā),或二次開發(fā)門檻較高,ssar工具支持使用python語言二次開發(fā),二次開發(fā)入門的門檻低;3、ssar工具完整的記錄了系統(tǒng)所有進(jìn)程的CPU和內(nèi)存等關(guān)鍵指標(biāo),并可以按需進(jìn)行指標(biāo)排序輸出;4、針對Linux load指標(biāo),ssar工具還提供了詳細(xì)的load指標(biāo)信息,其中的load5s指標(biāo)是國內(nèi)外全行業(yè)獨(dú)創(chuàng)。5、為了避免系統(tǒng)異常時采集數(shù)據(jù)中斷情況發(fā)生,ssar工具在內(nèi)存不足和CPU資源緊張時做了最大兼容。6、最后,作為一款優(yōu)秀的sar類型工具,ssar的本身的資源消耗也是及其優(yōu)秀的,內(nèi)存資源占用只有不足5MB,CPU使用率只有不足單核的1%。當(dāng)然了,采集更多的數(shù)據(jù),必然占用更多的磁盤存儲空間。近20年來,隨著存儲技術(shù)的發(fā)展,在同樣成本結(jié)構(gòu)的前提下,磁盤空間容量增長了1000倍。基于這樣背景,適當(dāng)占用一定的存儲空間,采集更多數(shù)據(jù)指標(biāo)是值得的。ssar 上手體驗
下面帶大家搶先體驗ssar的強(qiáng)大功能:- 通過配置文件實現(xiàn)常用指標(biāo)的展示。
{src_path='/proc/stat', cfile=’stat’, turn=true},
然后,在配置文件中配置指標(biāo)項。user = {cfile='stat', line_begin='cpu', column=2, width=10, metric='d'}
system = {cfile='stat', line_begin='cpu', column=4, width=10, metric='d'}
idle = {cfile='stat', line_begin='cpu', column=5, width=10, metric='d'}
iowait = {cfile='stat', line_begin='cpu', column=6, width=10, metric='d'}
最后,在配置文件中配置視圖項。cpu??=?['user',?'system','idle','iowait']
做完上面的配置工作,就可以使用ssar –cpu命令查看指標(biāo)了$ ssar --cpu
collect_datetime user/s system/s idle/s iowait/s
2021-08-09T06:45:00 1.05 1.75 6395.72 0.01
2021-08-09T06:50:00 0.85 1.57 6396.11 0.01
2021-08-09T06:55:00???????0.94???????1.56????6395.99???????0.01?
- 通過自定義指標(biāo)靈活顯示不常用指標(biāo)的展示。
$ ssar -o 'metric=d|cfile=stat|line=2-5|column=5|alias=idle_{line};'
collect_datetime idle_2/s idle_3/s idle_4/s idle_5/s
2021-08-09T06:48:00 99.92 99.46 99.84 99.92
2021-08-09T06:53:00 99.91 99.45 99.85 99.93
2021-08-09T06:58:00 99.91 99.42 99.81 99.90
擁有了自定義指標(biāo)這個強(qiáng)大功能,可以很方便的支持我們在python等語言中實現(xiàn)二次開發(fā)功能。為了方便數(shù)據(jù)的解析,這里還提供了貼心的json格式數(shù)據(jù)輸出(選項--api)。$ ssar -o 'metric=d|cfile=stat|line=2-5|column=5|alias=idle_{line};' –api
- 排序顯示內(nèi)存資源申請增量多的進(jìn)程列表。
$ ssar procs -r 5 -o pid,ppid,rss,rss_dlt,nlwp,cmd -k rss_dlt -l 3 pid ppid rss rss_dlt nlwp cmd 197779 1 14624 472 1 syslog-ng 185017 1 136328 400 1 systemd-journal 27495 77722 360 360 1 sleep
- 國內(nèi)外全行業(yè)獨(dú)創(chuàng)load5s指標(biāo)更加精準(zhǔn)的顯示系統(tǒng)的load情況。
$ ssar load5s
collect_datetime threads load1 runq load5s
2021-08-09T14:17:35 1047 0.28 2 1
2021-08-09T14:17:40 1058 0.25 1 0
2021-08-09T14:17:47 3047 113.46 1453 1414
2021-08-09T14:17:53 3053 264.62 2002 2001
2021-08-09T14:17:59 3053 403.74 2002 2002
2021-08-09T14:18:05 1049 371.41 1 0
2021-08-09T14:18:10 1055 341.67 1 0
2021-08-09T14:18:15 1048 314.31 1 0
此外,load2p子命令還可以詳細(xì)顯示load5s偏高時刻的進(jìn)程線程信息和D狀態(tài)調(diào)用棧信息。- 工具本身采集進(jìn)程資源消耗小,并且資源使用平穩(wěn)。
$ ssar proc -p $(pidof sresar) -i1 -o collect_datetime,rss,min_flt,cmd
collect_datetime rss min_flt cmd
2021-08-09T11:40:00 1524 631 sresar
2021-08-09T11:41:00 1708 1231 sresar
2021-08-09T11:42:00 3552 1748 sresar
2021-08-09T11:43:00 3552 1748 sresar
2021-08-09T11:44:00 3552 1749 sresar
2021-08-09T11:45:00 3552 1749 sresar
2021-08-09T11:46:00 3552 1749 sresar
2021-08-09T11:47:00 3552 1749 sresar
2021-08-09T11:48:00???????3552???????1749?sresar??????????
ssar 開源計劃
ssar 項目的開源計劃正在有條不紊的進(jìn)行中,預(yù)計近期會和大家見面。同時也歡迎大家持續(xù)關(guān)注跟蹤診斷技術(shù) SIG:https://openanolis.cn/sig/tracing?,開源后我們會第一時間更新信息。SIG 近期規(guī)劃
跟蹤診斷技術(shù)SIG 近期計劃將更多的工具貢獻(xiàn)至龍蜥社區(qū)( OpenAnolis ),其中包括上文提到的 ssar、網(wǎng)絡(luò)時延跟蹤工具、內(nèi)核診斷工具集和 TCP 跟蹤診斷工具等。逐步構(gòu)建并增強(qiáng)整個龍蜥操作系統(tǒng)(Anolis OS)和內(nèi)核層面的跟蹤和診斷能力,為開發(fā)者帶來愈加清晰完整的工具生態(tài)體系,彌補(bǔ)當(dāng)前跟蹤診斷工具的碎片化和易用性的問題。同時,我們也希望更多的開發(fā)者參與到跟蹤診斷技術(shù)SIG 的討論和開發(fā),不僅僅是基于現(xiàn)有的工具與能力,希望有更多更新更酷的工具加入到 SIG 中,一同構(gòu)建業(yè)界領(lǐng)先的跟蹤診斷生態(tài)。—— 完 ——關(guān)于龍蜥社區(qū)SIGSIG是開放的,并爭取讓交付成果成為社區(qū)發(fā)行的一部分,由組內(nèi)核心成員主導(dǎo)治理,可通過郵件列表和組內(nèi)的成員進(jìn)行交流。龍蜥社區(qū)目前有近20個SIG,包括跟蹤診斷技術(shù)SIG、商密軟件棧、高性能存儲技術(shù)SIG、Java語言與虛擬機(jī)SIG、Cloud Kernel、OceanBase SIG等。SIG網(wǎng)址:https://openanolis.cn/sig關(guān)于龍蜥社區(qū)
加入微信群:添加社區(qū)助理-龍蜥社區(qū)小龍(微信:openanolis_assis),備注【龍蜥】拉你入群;加入釘釘群:掃描下方釘釘群二維碼。歡迎開發(fā)者/用戶加入龍蜥OpenAnolis社區(qū)交流,共同推進(jìn)龍蜥社區(qū)的發(fā)展,一起打造一個活躍的、健康的開源操作系統(tǒng)生態(tài)!龍蜥社區(qū)釘釘交流群龍蜥社區(qū)-小龍
更多精彩,盡在"Linux閱碼場",掃描下方二維碼關(guān)注