跟蹤診斷技術(shù)SIG?7月運(yùn)營(yíng)月報(bào):系統(tǒng)排查工具?ssar?即將開源?|?龍蜥SIG
SIG 本月亮點(diǎn)
系統(tǒng)排查工具 ssar
7月份,我們計(jì)劃將阿里云自研的 ssar 貢獻(xiàn)給龍蜥社區(qū)( OpenAnolis) ,作為跟蹤診斷 技術(shù)SIG 和 龍蜥社區(qū)(?OpenAnolis) 中第一款系統(tǒng)層面的排查工具。當(dāng)前 ssar 的開源工作正在有序進(jìn)行中,歡迎各位開發(fā)者關(guān)注跟蹤診斷技術(shù)SIG,及時(shí)獲取項(xiàng)目消息。ssar 簡(jiǎn)介
大家平常會(huì)經(jīng)常遇到系統(tǒng)不穩(wěn)定的情況,往往需要依賴一款sar(System Activity Reporter)系統(tǒng)活動(dòng)報(bào)告類工具來追蹤系統(tǒng)曾經(jīng)發(fā)生了什么,以便確定引起系統(tǒng)不穩(wěn)定的根源。相信不少同學(xué)在使用傳統(tǒng)的sar工具排查系統(tǒng)問題時(shí),都會(huì)遇到如下一些苦惱: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)程級(jí)指標(biāo)的記錄,當(dāng)整機(jī)CPU或內(nèi)存等指標(biāo)出現(xiàn)波動(dòng)時(shí),無法定位具體的進(jìn)程級(jí)因素。3、針對(duì) linux load 這個(gè)即熟悉又陌生的指標(biāo)異常,單憑sar工具本身無能為力。4、傳統(tǒng)sar工具在系統(tǒng)異常時(shí),采集工具本身往往也無法正常運(yùn)行,常常引起數(shù)據(jù)中斷的情況發(fā)生。這里介紹一款功能強(qiáng)大的阿里云自研sar類型工具ssar(SRE System Activity Reporter)。它是系統(tǒng)活動(dòng)報(bào)告sar工具家族中嶄新的一個(gè),幾乎涵蓋了傳統(tǒng)sar工具的大部分主要功能之外,還擴(kuò)展了更多的整機(jī)指標(biāo),新增了進(jìn)程級(jí)指標(biāo)和特色的load指標(biāo)。與其他sar家族工具相比,ssar有如下幾個(gè)特色的地方:1、ssar工具無需修改C語言代碼,只需幾分鐘簡(jiǎn)單修改配置文件,幾乎可以擴(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、針對(duì)Linux load指標(biāo),ssar工具還提供了詳細(xì)的load指標(biāo)信息,其中的load5s指標(biāo)是國(guó)內(nèi)外全行業(yè)獨(dú)創(chuàng)。5、為了避免系統(tǒng)異常時(shí)采集數(shù)據(jù)中斷情況發(fā)生,ssar工具在內(nèi)存不足和CPU資源緊張時(shí)做了最大兼容。6、最后,作為一款優(yōu)秀的sar類型工具,ssar的本身的資源消耗也是及其優(yōu)秀的,內(nèi)存資源占用只有不足5MB,CPU使用率只有不足單核的1%。當(dāng)然了,采集更多的數(shù)據(jù),必然占用更多的磁盤存儲(chǔ)空間。近20年來,隨著存儲(chǔ)技術(shù)的發(fā)展,在同樣成本結(jié)構(gòu)的前提下,磁盤空間容量增長(zhǎng)了1000倍?;谶@樣背景,適當(dāng)占用一定的存儲(chǔ)空間,采集更多數(shù)據(jù)指標(biāo)是值得的。ssar 上手體驗(yàn)
下面帶大家搶先體驗(yàn)ssar的強(qiáng)大功能:- 通過配置文件實(shí)現(xiàn)常用指標(biāo)的展示。
{src_path='/proc/stat', cfile=’stat’, turn=true},
然后,在配置文件中配置指標(biāo)項(xiàng)。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'}
最后,在配置文件中配置視圖項(xiàng)。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)這個(gè)強(qiáng)大功能,可以很方便的支持我們?cè)趐ython等語言中實(shí)現(xiàn)二次開發(fā)功能。為了方便數(shù)據(jù)的解析,這里還提供了貼心的json格式數(shù)據(jù)輸出(選項(xiàng)--api)。$ ssar -o 'metric=d|cfile=stat|line=2-5|column=5|alias=idle_{line};' –api
- 排序顯示內(nèi)存資源申請(qǐng)?jiān)隽慷嗟倪M(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
- 國(guó)內(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偏高時(shí)刻的進(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 開源計(jì)劃
ssar 項(xiàng)目的開源計(jì)劃正在有條不紊的進(jìn)行中,預(yù)計(jì)近期會(huì)和大家見面。同時(shí)也歡迎大家持續(xù)關(guān)注跟蹤診斷技術(shù) SIG:https://openanolis.cn/sig/tracing?,開源后我們會(huì)第一時(shí)間更新信息。SIG 近期規(guī)劃
跟蹤診斷技術(shù)SIG 近期計(jì)劃將更多的工具貢獻(xiàn)至龍蜥社區(qū)( OpenAnolis ),其中包括上文提到的 ssar、網(wǎng)絡(luò)時(shí)延跟蹤工具、內(nèi)核診斷工具集和 TCP 跟蹤診斷工具等。逐步構(gòu)建并增強(qiáng)整個(gè)龍蜥操作系統(tǒng)(Anolis OS)和內(nèi)核層面的跟蹤和診斷能力,為開發(fā)者帶來愈加清晰完整的工具生態(tài)體系,彌補(bǔ)當(dāng)前跟蹤診斷工具的碎片化和易用性的問題。同時(shí),我們也希望更多的開發(fā)者參與到跟蹤診斷技術(shù)SIG 的討論和開發(fā),不僅僅是基于現(xiàn)有的工具與能力,希望有更多更新更酷的工具加入到 SIG 中,一同構(gòu)建業(yè)界領(lǐng)先的跟蹤診斷生態(tài)。—— 完 ——關(guān)于龍蜥社區(qū)SIGSIG是開放的,并爭(zhēng)取讓交付成果成為社區(qū)發(fā)行的一部分,由組內(nèi)核心成員主導(dǎo)治理,可通過郵件列表和組內(nèi)的成員進(jìn)行交流。龍蜥社區(qū)目前有近20個(gè)SIG,包括跟蹤診斷技術(shù)SIG、商密軟件棧、高性能存儲(chǔ)技術(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ā)展,一起打造一個(gè)活躍的、健康的開源操作系統(tǒng)生態(tài)!龍蜥社區(qū)釘釘交流群龍蜥社區(qū)-小龍
更多精彩,盡在"Linux閱碼場(chǎng)",掃描下方二維碼關(guān)注