跟蹤診斷技術(shù)SIG?7月運(yùn)營(yíng)月報(bào):系統(tǒng)排查工具?ssar?即將開(kāi)源?|?龍蜥SIG
SIG 本月亮點(diǎn)
系統(tǒng)排查工具 ssar
7月份,我們計(jì)劃將阿里云自研的 ssar 貢獻(xiàn)給龍蜥社區(qū)( OpenAnolis) ,作為跟蹤診斷 技術(shù)SIG 和 龍蜥社區(qū)(?OpenAnolis) 中第一款系統(tǒng)層面的排查工具。當(dāng)前 ssar 的開(kāi)源工作正在有序進(jìn)行中,歡迎各位開(kāi)發(fā)者關(guān)注跟蹤診斷技術(shù)SIG,及時(shí)獲取項(xiàng)目消息。ssar 簡(jiǎn)介
大家平常會(huì)經(jīng)常遇到系統(tǒng)不穩(wěn)定的情況,往往需要依賴(lài)一款sar(System Activity Reporter)系統(tǒng)活動(dòng)報(bào)告類(lèi)工具來(lái)追蹤系統(tǒng)曾經(jīng)發(fā)生了什么,以便確定引起系統(tǒng)不穩(wěn)定的根源。相信不少同學(xué)在使用傳統(tǒng)的sar工具排查系統(tǒng)問(wèn)題時(shí),都會(huì)遇到如下一些苦惱:1、傳統(tǒng)sar工具固定采集一些主要的系統(tǒng)指標(biāo)。以TCP重傳為例,只采集了整機(jī)重傳數(shù)數(shù)據(jù)。若想擴(kuò)展采集更詳細(xì)的重傳子類(lèi)型數(shù)據(jù),需要修改C語(yǔ)言代碼,增加指標(biāo)十分困難。2、傳統(tǒng)sar工具無(wú)進(jìn)程級(jí)指標(biāo)的記錄,當(dāng)整機(jī)CPU或內(nèi)存等指標(biāo)出現(xiàn)波動(dòng)時(shí),無(wú)法定位具體的進(jìn)程級(jí)因素。3、針對(duì) linux load 這個(gè)即熟悉又陌生的指標(biāo)異常,單憑sar工具本身無(wú)能為力。4、傳統(tǒng)sar工具在系統(tǒng)異常時(shí),采集工具本身往往也無(wú)法正常運(yùn)行,常常引起數(shù)據(jù)中斷的情況發(fā)生。這里介紹一款功能強(qiáng)大的阿里云自研sar類(lèi)型工具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工具無(wú)需修改C語(yǔ)言代碼,只需幾分鐘簡(jiǎn)單修改配置文件,幾乎可以擴(kuò)展采集系統(tǒng)的任意指標(biāo);2、傳統(tǒng)sar工具或者無(wú)法二次開(kāi)發(fā),或二次開(kāi)發(fā)門(mén)檻較高,ssar工具支持使用python語(yǔ)言二次開(kāi)發(fā),二次開(kāi)發(fā)入門(mén)的門(mén)檻低;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類(lèi)型工具,ssar的本身的資源消耗也是及其優(yōu)秀的,內(nèi)存資源占用只有不足5MB,CPU使用率只有不足單核的1%。當(dāng)然了,采集更多的數(shù)據(jù),必然占用更多的磁盤(pán)存儲(chǔ)空間。近20年來(lái),隨著存儲(chǔ)技術(shù)的發(fā)展,在同樣成本結(jié)構(gòu)的前提下,磁盤(pán)空間容量增長(zhǎng)了1000倍?;谶@樣背景,適當(dāng)占用一定的存儲(chǔ)空間,采集更多數(shù)據(jù)指標(biāo)是值得的。ssar 上手體驗(yàn)
下面帶大家搶先體驗(yàn)ssar的強(qiáng)大功能:- 通過(guò)配置文件實(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?- 通過(guò)自定義指標(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等語(yǔ)言中實(shí)現(xiàn)二次開(kāi)發(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 load5scollect_datetime threads load1 runq load5s2021-08-09T14:17:35 1047 0.28 2 12021-08-09T14:17:40 1058 0.25 1 02021-08-09T14:17:47 3047 113.46 1453 14142021-08-09T14:17:53 3053 264.62 2002 20012021-08-09T14:17:59 3053 403.74 2002 20022021-08-09T14:18:05 1049 371.41 1 02021-08-09T14:18:10 1055 341.67 1 02021-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,cmdcollect_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 開(kāi)源計(jì)劃
ssar 項(xiàng)目的開(kāi)源計(jì)劃正在有條不紊的進(jìn)行中,預(yù)計(jì)近期會(huì)和大家見(jiàn)面。同時(shí)也歡迎大家持續(xù)關(guān)注跟蹤診斷技術(shù) SIG:https://openanolis.cn/sig/tracing?,開(kāi)源后我們會(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)核層面的跟蹤和診斷能力,為開(kāi)發(fā)者帶來(lái)愈加清晰完整的工具生態(tài)體系,彌補(bǔ)當(dāng)前跟蹤診斷工具的碎片化和易用性的問(wèn)題。同時(shí),我們也希望更多的開(kāi)發(fā)者參與到跟蹤診斷技術(shù)SIG 的討論和開(kāi)發(fā),不僅僅是基于現(xiàn)有的工具與能力,希望有更多更新更酷的工具加入到 SIG 中,一同構(gòu)建業(yè)界領(lǐng)先的跟蹤診斷生態(tài)。—— 完 ——關(guān)于龍蜥社區(qū)SIGSIG是開(kāi)放的,并爭(zhēng)取讓交付成果成為社區(qū)發(fā)行的一部分,由組內(nèi)核心成員主導(dǎo)治理,可通過(guò)郵件列表和組內(nèi)的成員進(jìn)行交流。龍蜥社區(qū)目前有近20個(gè)SIG,包括跟蹤診斷技術(shù)SIG、商密軟件棧、高性能存儲(chǔ)技術(shù)SIG、Java語(yǔ)言與虛擬機(jī)SIG、Cloud Kernel、OceanBase SIG等。SIG網(wǎng)址:https://openanolis.cn/sig關(guān)于龍蜥社區(qū)
加入微信群:添加社區(qū)助理-龍蜥社區(qū)小龍(微信:openanolis_assis),備注【龍蜥】拉你入群;加入釘釘群:掃描下方釘釘群二維碼。歡迎開(kāi)發(fā)者/用戶(hù)加入龍蜥OpenAnolis社區(qū)交流,共同推進(jìn)龍蜥社區(qū)的發(fā)展,一起打造一個(gè)活躍的、健康的開(kāi)源操作系統(tǒng)生態(tài)!龍蜥社區(qū)釘釘交流群龍蜥社區(qū)-小龍
更多精彩,盡在"Linux閱碼場(chǎng)",掃描下方二維碼關(guān)注





