系統效能監控工具ssar例項精選 | 龍蜥SIG
跟蹤診斷技術 SIG 致力於為作業系統生態提供系統性,工具化,並以資料為支撐的發現、跟蹤和診斷問題的能力。
歡迎更多開發者加入跟蹤診斷技術SIG:
網址:
郵件列表: cloud-kernel@lists.openanolis.cn
前言
ssar 是阿里自研並貢獻至龍蜥社群的一款系統效能監控工具。該工具系統開銷很小,已經在公司部分業務規模化部署, 且持續穩定執行 1 年以上。
ssar 工具近期在國內領先的作業系統開源社群及創新平臺龍蜥社群開源,歡迎大家訪問龍蜥社群( )下載 ssar 工具原始碼適用。原始碼中提供了相關的編譯和安裝步驟,還提供了具體《使用參考手冊》。
ssar 工具在日常使用中也解決了很多實際的生產問題,為了能讓大家更快速的瞭解 ssar 的用途, 這裡特別從案例使用的角度挑選了工具的十大典型使用場景進行介紹。
一、定位 CPU 和記憶體波動時的程式級因素
日常運維中,整機 CPU 和記憶體經常出現較大的增長,從而引起系統不穩定。此時特別需要能回朔歷史資料,檢視指標波動時刻的程式級 CPU 和記憶體等影響因素。
ssar 檢視整機 CPU 和記憶體變化趨勢方法 。其中 user、system 和 anonpages 分別是核心用於指代使用者空間 CPU 使用、核心空間 CPU 使用和匿名頁記憶體的指標名。
$ ssar -i 1 -o user,system,anonpages collect_datetime user/s system/s anonpages 2021-09-08T18:36:00 787.38 145.30 6590885 2021-09-08T18:37:00 299.93 230.25 12808418 2021-09-08T18:38:00 116.58 79.43 14119096 2021-09-08T18:39:00 401.88 101.75 10580258 2021-09-08T18:40:00 332.68 279.62 8759586
ssar 檢視程式級 CPU 影響因素的方法 。透過 procs 子命令可以顯示出 2021-09-08T18:38:00 到 2021-09-08T18:40:00 這 2 分鐘內,核心態 CPU 使用最多的 3 個程式列表。pucpu、pscpu 和 pcpu 分別表示該程式的使用者空間 CPU 利用率,核心空間 CPU 利用率和總 CPU 利用率。
$ ssar procs -f 2021-09-08T18:40:00 -r 2 -o pid,ppid,pcpu,pucpu,pscpu,cmd -k pscpu -l 3 pid ppid pcpu pucpu pscpu cmd 1537 1536 95.3 65.0 30.3 java 29349 1 0.3 0.1 0.2 sresar 11 2 0.1 0.0 0.1 migration/0
ssar 檢視程式級記憶體影響因素的方法 。透過 procs 子命令可以顯示出 2021-09-08T18:36:00 到 2021-09-08T18:38:00 這 2 分鐘內,記憶體申請增量最多的 3 個程式列表。rss_dlt 表示 rss 記憶體的增量值。
$ ssar procs -f 2021-09-08T18:38:00 -r 2 -o pid,ppid,rss,rss_dlt,nlwp,cmd -k rss_dlt -l 3 pid ppid rss rss_dlt nlwp cmd 197779 1 14624 9472 1 syslog-ng 185017 1 136328 5400 1 systemd-journal 27495 77722 360 360 1 sleep
二、跟蹤單程式的CPU和記憶體波動詳情
透過上面的方法,發掘出了影響整機指標波動的程式,還可以進一步透過 proc 子命令更進一步追蹤特定程式的 CPU 和記憶體變化情況。其中左尖括號(<)表示 2021-08-09T11:39:00 時刻該 sresar 程式還沒有啟動,右尖括號(>)表示 2021-08-09T11:47:00 時刻該 sresar 程式已經結束。
$ ssar proc -p $(pidof sresar) -i1 -o collect_datetime,rss,min_flt,cmdcollect_datetime rss min_flt cmd start_datetime 2 021-08-09T11:39:00 < < < < 2021-08-09T11:40:00 1524 631 sresar 2021-08-09T11:39:182021-08-09T11:41:00 1708 1231 sresar 2021-08-09T11:39:182021-08-09T11:42:00 3552 1748 sresar 2021-08-09T11:39:182021-08-09T11:43:00 3552 1748 sresar 2021-08-09T11:39:182021-08-09T11:44:00 3552 1749 sresar 2021-08-09T11:39:182021-08-09T11:45:00 3552 1749 sresar 2021-08-09T11:39:182021-08-09T11:46:00 3552 1749 sresar 2021-08-09T11:39:182021-08-09T11:47:00 > > > > $ ssar proc -p $(pidof sresar) -i 1 --mem$ ssar proc -p $(pidof sresar) -i 1 --cpu
三、記錄5秒級精度的系統load資訊
ssar 的 load5s 子命令不僅將 load 的精度提高到了 5s,還創造性增加了load5s 指標, load5s 指標比 load1、load5 和 load15 指標更加精準 ,更能反映系統當時的壓力情況。這裡明顯可以看出傳統的 load1 指標在系統負載壓力消失後,還一定的滯後性,但load5s指標卻可以精準的顯示機器的負載壓力。
$ 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
$ ssar load5s -f 2021-07-15T19:00:00 -r 300 -z
四、記錄執行緒D狀態異常的stack詳情
對於 load5s 值大於 CPU 核數一定倍數的情況,會觸發 load 詳情的採集,其中針對 D 狀態執行緒會抽樣記錄核心呼叫棧。使用 load2p 可以顯示詳細的 D 狀態呼叫棧資訊。
$ ssar load2p -c 2021-09-08T17:25:00 --stackinfo # 透過呼叫棧資訊,再結合一定的核心程式碼知識,即可以判斷出當時系統問題。 page_fault do_page_fault __do_page_fault handle_mm_fault __do_fault filemap_fault __lock_page_or_retry wait_on_page_bit_killable sleep_on_page_killable
五、診斷整機高階記憶體不足情況
系統記憶體不足相關的問題,一直是日常運維中最常見的問題之一。有時候我們會從系統日誌中看到類似這樣的日誌資訊“page allocction failure: order:4”,這是 free 記憶體不足,並且伴隨記憶體碎片化,核心空間申請不到高階記憶體的表現。
定位這類問題需先對整機記憶體不足程度做一個診斷,anonpages 指標是匿名頁,memfree 指標是整機 free 記憶體, pgsteal_kswapd 指標是每秒非同步記憶體回收數量,pgsteal_direct 是每秒直接記憶體回收數量。
$ ssar -i 1 -o anonpages,memfree,pgsteal_kswapd,pgsteal_direct collect_datetime anonpages memfree pgsteal_kswapd/s pgsteal_direct/s 2021-09-09T10:40:00 11151058 1716004 0.00 0.00 2021-09-09T10:41:00 12008117 1615129 0.00 0.00 2021-09-09T10:42:00 13993906 1404292 0.00 0.00 2021-09-09T10:43:00 15869526 1233360 0.00 0.00 2021-09-09T10:44:00 17135683 1083402 43821.88 0.00 2021-09-09T10:45:00 19488155 829303 45080.95 0.00 2021-09-09T10:46:00 20787968 712429 10452.02 455.90 2021-09-09T10:47:00 21725142 614698 0.00 2313.68
可以看到,隨著系統的 anonpages 匿名頁記憶體的增長,memfree 空閒記憶體逐步減少,到達一定閾值後,開始非同步記憶體回收 pgsteal_kswapd,空閒記憶體進一步減少進一步引起直接記憶體回收 pgsteal_direct。
在這樣空閒記憶體嚴重不足的前提下,可能會進一步引發核心高階記憶體不足的情況發生。從資料中可以看到 2021-09-09T10:46:00 時刻的 order4 記憶體庫存為0。
$ ssar -i 1 --node0 collect_datetime order0 order1 order2 order3 order4 order5 2021-09-09T10:40:00 139116 429294 226754 51287 37276 44181 2021-09-09T10:41:00 20070 89672 37399 51721 37277 44181 2021-09-09T10:42:00 31154 71323 36612 49952 37277 44181 2021-09-09T10:43:00 73309 93733 36843 49249 36256 44157 2021-09-09T10:44:00 76885 73331 36409 48408 35477 42181 2021-09-09T10:45:00 46915 140381 40744 47815 34313 44171 2021-09-09T10:46:00 28346 16054 6420 141 0 0 2021-09-09T10:47:00 34694 29549 16750 3042 1481 319
六、定位 Cgroup 級別的記憶體顛簸問題
在 cgroup 層面出現記憶體不足時,也有一個記憶體顛簸問題,會引起系統嚴重的問題。
$ tsar2 --io -i 1 -I nvme0n1p1 -s rs,rarqsz,util Time nvme0n1p1 nvme0n1p1 nvme0n1p1 Time rs rarqsz util 09/09/21-14:50 66.1K 10.25 100.00 09/09/21-14:51 71.1K 13.25 100.00 09/09/21-14:52 63.8k 10.00 100.00 09/09/21-14:53 57.0k 14.50 100.00 09/09/21-14:54 64.0k 14.00 100.00
效能優越的 nvme 磁碟,有時候磁碟 util 也會被打
滿到 100%,可以觀察到相應的磁碟讀 IO 高達數萬,同時單次讀 IO 大小隻有 10 多個 Kb 大小。造成這種情況的最常見原因之一是 cgroup 級別的記憶體顛簸。透過核心指標 pgmajfault 可以看到在 IO 打滿的同時每秒整機主缺頁中斷數也非常高,這正是造成系統 IO 打滿的直接原因。
$ ssar -i 1 -o pgmajfault
collect_datetime pgmajfault/s
2021-09-09T14: 50:00 43491.31
2021-09-09T14: 51:00 44432.01
2021-09-09T14: 52:00 45464.78
2021-09-09T14: 53:00 43991.22
2021-09-09T14: 54:00 45922.34
$ ssar procs -f 2021-09-09T14:51:00 -r 1 -o pid,rss,maj_flt,maj_dlt,cmd -k maj_dlt -l 5
pid rss maj_flt maj_dlt cmd
58532 8240736 126575484 1305199 java
46873 8237292 173405708 1257924 java
51357 577796 13201 63 python
253136 566352 11687 46 syslog-ng
46025 1229520 478 42 bash
進一步,透過 ssar 的 procs 子命令,可以定位到發生大量主缺頁中斷的正是 pid 為 58532 和 46873 這 2 個 java 程式。引起 java 程式大量發生主缺頁中斷的原因是程式 rss 記憶體極度逼近 cgroup 組設定的memory.limit_in_bytes 值,導致 cgroup 組內留給 clean 狀態的程式碼段記憶體空間不足以完全載入所有程式程式碼段。所以程式碼段在程式執行中,只能不斷的被丟棄再從磁碟讀取。
七、網路 TCP 重傳擴充套件資訊
在主機網路層面,日常運維中也會受到網路丟包、重傳和亂序等問題的困擾。這裡也提供了幾組更加深入的網路指標供診斷網路問題使用。
$ tsar2 --retran
Time --retran--- --retran--- --retran-- --retran-- -retran- ----retran----
Time RetransSegs FastRetrans LossProbes RTORetrans RTORatio LostRetransmit
08/09/21-16:45 49.44 34.41 16.02 6.41 12.97 0.26
08/09/21-16:50 44.07 29.03 16.84 8.21 18.63 0.13
08/09/21-16:55 37.58 18.72 10.91 11.44 30.44 0.02
$ tsar2 --tcpofo
Time -tcpofo-- ---tcpofo--- ---tcpofo--- -tcpofo- tcpofo- -tcpofo-
Time OfoPruned DSACKOfoSent DSACKOfoRecv OFOQueue OFODrop OFOMerge
08/09/21-16:45 0.00 0.00 0.00 251.86 0.00 0.00
08/09/21-16:50 0.00 0.00 0.00 182.35 0.00 0.00
08/09/21-16:55 0.00 0.00 0.00 115.70 0.00 0.00
在 tcp 重傳方面,我們提供了許多相比 tcp 重傳率之外,更為細緻的指標。現代 Linux 系統,早已經有除 200ms 超時重傳之外的多種重傳的方式來加速網路抖動或者異常狀態下的恢復。這裡我們將 TCP 的重傳進行了更細緻的分類,包括快重傳、尾包重傳和超時重傳,不同的重傳對於業務的影響是完全不同的,相當多的時候,我們可能觀察到快重傳或者尾包重傳很高,但超時重傳並不多,這個時候往往並不影響業務。而一旦出現大量的超時重傳,往往意味著真正的網路異常。
--tcpofo 可以讓我們看到當前收到的一些亂序的情況,亂序跟重傳往往是關聯的,一般情況下,收到亂序報文會看到 OFOQueue 增加,而一旦看到 OFODrop,則說明收到的亂序的報文被丟失了, 這個時候很可能是我們佇列中亂序報文太多 ,或者我們應用程式沒有及時將 tcp 接收佇列中的資料包收走。
以上資料再結合 ssar 的歷史資料,找到某些重傳或亂序的異常點,可以幫我們很快定位一些 tcp 問題的原因。
$ tsar2 --tcpdrop
Time ----tcpdrop----- --tcpdrop-- ----tcpdrop---- ----tcpdrop---- --tcpdrop--
Time LockDroppedIcmps ListenDrops ListenOverflows PrequeueDropped BacklogDrop
08/09/21-16:45 0.00 0.28 0.28 0.00 0.00
08/09/21-16:50 0.00 1.97 1.97 0.00 0.00
08/09/21-16:55 0.00 21.96 21.96 0.00 0.00
$ tsar2 --tcperr
Time ---tcperr--- ---tcperr--- ---tcperr--- ---tcperr---- --tcperr---
Time RenoFailures SackFailures LossFailures AbortOnMemory AbortFailed
08/09/21-16:45 0.00 0.00 0.00 0.00 0.00
08/09/21-16:50 0.00 0.00 0.00 0.00 0.00
08/09/21-16:55 0.00 0.00 0.00 0.00 0.00
對於 TCP 的一些典型丟包和異常,可以透過 --tcpdrop/--tcperr 來觀察,譬如上面我們看到在 08/09/21-16:55 時,有較多的 ListenDrops 和 ListenOverflows,說明有較多的 TCP SYN 建連請求,導致 TCP 的 accept 佇列滿了,這種情況說明到達服務端的新建連線請求比服務端 accept() 消費新的連線請求的速度要快,有可能是突發來了較多的建連請求,也可能是服務端長時間沒有呼叫 accept() 來消費 accept 佇列中的半連線請求。
八、自定義採集任意系統指標
做驅動開發的同學很可能希望能記錄自己的驅動模組中一些效能資料,ssar 工具為這種場景提供了簡單和完善的採集方案。只需要驅動開發同學,將核心模組中的效能指標透過/proc/或/sys/下的偽檔案方式暴露為使用者空間即可。資料可以是累積值,也可以是瞬時值,例如 mydev 偽檔案中有 2 個值,左側的indicator1 是累積值,右側的 indicator2 是瞬時值。
$ cat /proc/mydev 104377580 7252
ssar 工具配置採集的方法比較簡單。
$ cat /etc/ssar/sys.conf
[ file]
default=[
{src_path= '/proc/mydev', turn= true, cfile= 'mydev'},
]
$ sudo systemctl restart sresar # 重啟採集程式配置檔案生效
修改完配置完後,可以使用如下命令獲取歷史資料。
$ ssar -i 1 -f 2021-09-09T17:20:00 -r 60 -o 'metric=d:cfile=myde' collect_datetime indicator1/s indicator2 2021-09-09T17:30:00 884.40 7192 2021-09-09T17:31:00 652.15 7078 2021-09-09T17:32:00 799.73 7676 2021-09-09T17:33:00 708.37 7953 2021-09-09T17:34:00 596.47 7738
命令略微改變下,獲取實時資料。
$ ssar -i 1s -f +10 -o 'metric=d|cfile=mydev|line=1|column=1|alias=indicator1;metric=c|cfile=mydev|line=1|column=2|alias=indicator2'collect_datetime indicator1/s indicator2 2021-09-09T17:40:00 668.50 7004 2021-09-09T17:40:01 480.38 6115 2021-09-09T17:40:02 651.55 6496 2021-09-09T17:40:03 789.15 6433 2021-09-09T17:40:04 867.93 7508
不安裝ssar軟體包,只複製 ssar 程式,也可以直接使用獲取實時資料。
$ ./ssar -i 1s -f +10 -o 'metric=d|src_path=/proc/mydev|line=1|column=1|alias=indicator1;metric=c|src_path=/proc/mydev|line=1|column=2|alias=indicator2'
對於多行或者多列指標含義相近的情況,也可以參考如下 2 個用法。
$ ssar -o 'metric=d:cfile=stat:line=2:column=2- 11:alias=cpu0_{column};' # cpu0第2到11列資料 $ ssar -o 'metric=d|cfile=stat|line=2-1 7|column=5|alias=idle_{line};' # cpu0到15的idle
$ ssar -o 'metric=c:cfile=loadavg:line=1:column=1:dtype=float:alias=load1' # load1實型資料 $ssar -o 'metric=c|cfile=loadavg|line=1|column=4|dtype=string|alias=rp' # rp字串資訊
如果只想採集這個驅動指標檔案mydev,ssar還提供了2個配置引數load5s_flag 和 proc_flag 來關閉load和程式級指標採集。節省不必要的磁碟儲存空間開銷。
九、診斷特定CPU中斷不均情況
特定 CPU 的 softirq 資源消耗過多,會影響此 CPU 上用於使用者空間的資源使用。因此當中斷分佈不均時,會嚴重影響使用者空間程式的執行。首先需要了解 softirq 資源消耗在各個 CPU 之間是否均衡。
$ tsar2 --cpu -I cpu,cpu0,cpu1,cpu2,cpu3,cpu4,cpu5,cpu6,cpu7 -s sirq -i 1Time --cpu-- -cpu0-- -cpu1-- -cpu2-- -cpu3-- -cpu4-- -cpu5-- -cpu6-- -cpu7--Time sirq sirq sirq sirq sirq sirq sirq sirq sirq 09/09/21-21:15 1.44 0.01 0.01 0.01 2.28 0.02 15.69 2.72 5.57 09/09/21-21:16 1.98 0.01 0.01 0.01 2.56 0.03 18.40 2.56 8.93 09/09/21-21:17 2.61 0.01 0.01 0.01 2.31 0.09 17.28 2.21 3.59 09/09/21-21:18 1.84 0.01 0.01 0.01 1.97 0.03 12.16 2.04 8.75 09/09/21-21:19 1.32 0.01 0.01 0.01 1.66 0.03 16.52 1.69 6.77
透過命令可以看到,softirq 在各個 CPU 之間分佈並不均勻,cpu5 的 softirq高達百分之十幾之多。針對更多核 CPU 的情況,可以使用 tsar2 cputop 子命令排序輸出 softirq 佔用比最高的 CPU。
tsar2 irqtop 即可快速定位引起 cpu5 的 softirq 資源佔比高的原因是中斷名稱為 virtio-output.1 的 158 號中斷,並且顯示出每秒平均中斷數。
$ tsar2 irqtop -i 1 -C 5 Time --N1--- N1- N1- --------N1-------- --N2--- N2- N2- --------N2------ Time count irq CPU name count irq CPU name 09/09/21-22:58 981.80 158 5 virtio-output.1 304.02 154 5 nvme0q0, nvme0q10 9/09/21-22:59 765.32 158 5 virtio-output.1 234.97 154 5 nvme0q0, nvme0q1 09/09/21-23:00 763.63 154 5 nvme0q0, nvme0q1 393.88 158 5 virtio-output.1 09/09/21-23:01 531.87 158 5 virtio-output.1 225.03 154 5 nvme0q0,nvme0q1 09/09/21-23:02 557.23 158 5 virtio-output.1 150.25 154 5 nvme0q0, nvme0q1
預設情況下 CPU 級別的中斷情況不開啟歷史採集,需要將配置檔案中 interrupts 部分修改為如下配置開啟。
{src_path='interrupts', turn=true, gzip=true},
如果需要獲取實時資料,可將上面命令增加-l選項即可。
$ tsar2 --cpu -I cpu,cpu0,cpu1,cpu2,cpu3,cpu4,cpu5,cpu6,cpu7 -s sirq -i 1 -l $ tsar2 irqtop -i 1 -C 5 -l
十、支援靈活的資料輸出和解析
ssar 不僅資料指標非常豐富,而且輸出格式上也非常易於使用和解析。ssar 的所有資料輸出,都支援支援 json 格式輸出,便於 python 等高階語言的解析。使用方法就是在命令上增加一個 --api 選項。
$ ssar -r 5 -o user,system,memfree,anonpages --api [{"anonpages":"280824","collect_datetime":"2021-09 10T12:00:00","memfree":"181753024","system":"-","user":"-"},{"anonpages":"280812","collect_datetime":"2021-09-10T12:05:00","memfree":"181752704","system":"2.35","user":"1.22"}]
對於 shell 等指令碼解析,ssar 也提供了便利,-H 選項可以隱藏掉各種 header 資訊。
$ ssar -r 5 -o user,system,memfree,anonpages -H 2021-09-10T12:00:00 - - 81754836 280296 2021-09-10T12:05:00 1.29 2.57 81756712 280228
對於資料項中出現的各種“-”、“*”和“<”等符號資訊,提供-P 選項引數隱藏輸出,可以讓上層呼叫指令碼減少處理異常資料的工作。
$ ssar -r 5 -o user,system,memfree,anonpages -H -P 2021-09-10T12:10:00 1.31 2.58 81747740 281676
加入微信群:新增社群助理-龍蜥社群小龍(微信:openanolis_assis),備註【龍蜥】拉你入群;加入釘釘群:掃描下方釘釘群二維碼。歡迎開發者/使用者加入龍蜥社群(OpenAnolis)交流,共同推進龍蜥社群的發展,一起打造一個活躍的、健康的開源作業系統生態!
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70004278/viewspace-2793065/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 龍蜥社群高效能儲存技術 SIG 11 月運營回顧 | 龍蜥 SIG
- 龍蜥利器:系統運維工具 SysAK的雲上應用效能診斷 | 龍蜥技術運維
- Linux系統效能監控採集項Linux
- 利用OSW工具監控作業系統效能作業系統
- 龍蜥白皮書精選:跨雲-邊-端的只讀檔案系統 EROFS
- Mac系統監控工具Mac
- nagios監控例項 -- PostgreSQL監控iOSSQL
- UNIX和linux系統效能監控工具oswatcherLinux
- sysstat——系統效能監控神器
- 大型監控網路系統規劃ip地址例項
- 效能監控工具YourKit
- JVM 效能監控工具JVM
- CentOS效能監控工具CentOS
- 在Linux中,什麼是系統監控和效能分析工具?舉例說明。Linux
- 高併發&效能優化(二)------系統監控工具使用優化
- AIX系統nmon工具監控AI
- linux 系統監控工具Linux
- Linux 效能監控工具Linux
- 系統監控工具:MenuBar Stats for macMac
- zabbix監控單例項redis單例Redis
- Linux 常用系統效能監控命令Linux
- 系統效能監控利器-collectd詳解
- nagios監控例項 -- Windows伺服器監控iOSWindows伺服器
- 全能冠軍:Linux系統效能和使用活動監控工具 sysstatLinux
- 龍蜥 Node.js/WebAssembly SIG 重磅釋出 Node.js/Noslate 效能最佳化白皮書Node.jsWeb
- MySQL 效能監控工具--mysqlreportMySql
- 效能監控和分析工具--nmon
- mac系統監控工具——MenuBar Stats for macMac
- nmon 監控AIX,linux系統工具AILinux
- 一種對雲主機進行效能監控的監控系統及其監控方法
- LSF 叢集全面監控!淺析 HPC 基於龍蜥作業系統的遷移替代解決方案作業系統
- 龍蜥白皮書精選:龍蜥全面支援 Intel 第四代可擴充套件處理器 SPR 平臺Intel套件
- 【SHELL】Linux系統 Oracle例項監控、重啟 簡易Shell指令碼LinuxOracle指令碼
- nagios監控例項 -- 伺服器基本狀況監控iOS伺服器
- linux常用系統監控工具之vmstatLinux
- 淘寶開源其系統監控工具Tsar
- Flutter效能監控工具(3)--- Observatory使用Flutter
- Centos效能監控工具——netdata配置CentOS