使用 nmon 來(lái)排查與監(jiān)控 Linux 系統(tǒng)的性能
鏈接:https://www.redhat.com/sysadmin/one-line-linux-commands
nmon) 是一個(gè)系統(tǒng)性能監(jiān)控工具,其最初由 IBM 為 AIX 操作系統(tǒng)研發(fā),后來(lái)被移植到 Linux 中(在多個(gè) CPU 架構(gòu)上運(yùn)行)。nmon?允許您在一個(gè)簡(jiǎn)潔的界面中來(lái)監(jiān)控系統(tǒng)的各個(gè)方面,如 CPU 利用率、內(nèi)存、磁盤(pán)繁忙度、網(wǎng)絡(luò)利用率等。這是它的一個(gè)主要的好處。假如沒(méi)有?nmon,您必須使用專(zhuān)門(mén)的監(jiān)控工具,如?top(監(jiān)控進(jìn)程)、iostat(監(jiān)控磁盤(pán))和?ifstat(監(jiān)控網(wǎng)絡(luò))來(lái)監(jiān)控各種資源。這其中的每一個(gè)呈現(xiàn)數(shù)據(jù)的方式都是截然不同的。nmon。通過(guò)使用?nmon,我可以解決一些難以發(fā)現(xiàn)的問(wèn)題,包括最初的那個(gè)看起來(lái)像似網(wǎng)絡(luò)瓶頸的問(wèn)題。我通過(guò)使用?nmon?來(lái)同時(shí)檢查多個(gè)資源,之后發(fā)現(xiàn)這是由于打開(kāi)太多文件導(dǎo)致的一個(gè)應(yīng)用程序問(wèn)題。nmon?來(lái)收集和存儲(chǔ)性能數(shù)據(jù)以供分析。有關(guān)用于 Linux 的?nmon?的更多信息,請(qǐng)參閱該項(xiàng)目的官方網(wǎng)站。安裝 nmon
nmon?在許多 Linux 發(fā)行版的默認(rèn)存儲(chǔ)庫(kù)中都是可用的。例如,我們可以在 Fedora35 上使用 DNF 來(lái)安裝它:$?sudo?dnf?-y?install?nmon
nmon?在 EPEL(Extra Packages for Enterprise Linux) 的存儲(chǔ)庫(kù)中可用。nmon,首先需啟用 EPEL:$?sudo?dnf?-y?install?\
https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
$?sudo?dnf?repolist
dnf?安裝?nmon:$?sudo?dnf?-y?install?nmon
nmon,使用它來(lái)監(jiān)控您的系統(tǒng)吧!以交互的方式使用 nmon
nmon。之后您會(huì)看到一個(gè)包含系統(tǒng)信息和一個(gè)小幫助菜單的初始屏幕,它顯示了您可以按哪些鍵來(lái)切換不同的指標(biāo):$?nmon
┌─16k──[H?for?help]──Hostname=f35ks01─Refresh=?2secs?─18:04:27────┐
│?????????????????????????????????????????????????????????????????│
│------------------------------???????????????????????????????????│
│?_?__??_?__?___???___??_?__????For?help?type?H?or?...????????????│
│|?'_?\|?'_?`?_?\?/?_?\|?'_?\????nmon?-???-?hint??????????????????│
│|?|?|?|?|?|?|?|?|?(_)?|?|?|?|???nmon?-h??-?full?details??????????│
│|_|?|_|_|?|_|?|_|\___/|_|?|_|????????????????????????????????????│
│???????????????????????????????To?stop?nmon?type?q?to?Quit???????│
│------------------------------???????????????????????????????????│
│?????????????????????????????????????????????????????????????????│
│Fedora?release?35?(Thirty?Five)?VERSION="35?(Thirty?Five)"???????│
│Vendor=AuthenticAMD?Model=AMD?EPYC-Milan?Processor???????????????│
│MHz=1911.004?bogomips=3822.00?????lscpu:CPU=4?Little?Endian??????│
│ProcessorChips=4?PhysicalCores=1????????Sockets=4?Cores=1?Thrds=1│
│?????????????????VirtualCPUs?=4?????????MHz=0?max=0?min=0????????│
│?????????????????????????????????????????????????????????????????│
│Use?these?keys?to?toggle?statistics?on/off:??????????????????????│
│??c?=?CPU?????????l?=?CPU?Long-term?????-?=?Faster?screen?updates│
│??C?=?"?WideView??U?=?Utilisation???????+?=?Slower?screen?updates│
│??m?=?Memory??????V?=?Virtual?memory????j?=?File?Systems?????????│
│??d?=?Disks???????n?=?Network???????????.?=?only?busy?disks/procs│
│??r?=?Resource????N?=?NFS???????????????h?=?more?options?????????│
│??k?=?Kernel??????t?=?Top-processes?????q?=?Quit?????????????????│
│─────────────────────────────────────────────────────────────────│
┌─16k──[H?for?help]──Hostname=f35ks01─Refresh=?2secs?─18:05:58─┐
│?CPU?Utilisation?─────────────────────────────────────────────│
│---------------------------+---------------------------------+│
│CPU?User%??Sys%?Wait%??Idle|0??????????|25???|50?|75???100|???│
│??1???3.6??17.2???0.0??79.2|Ussssssss>????????????????????|???│
│??2???2.1???6.2???0.0??91.7|Usss????>?????????????????????|???│
│??3???0.0???1.1???0.0??98.9|?>????????????????????????????|???│
│??4???6.1??17.2???0.0???0.5|UUUssssssss>??????????????????|???│
│---------------------------+---------------------------------+│
│Avg???3.0??10.3???0.0??86.7|Usssss>???????????????????????|???│
│---------------------------+---------------------------------+│
│──────────────────────────────────────────────────────────────│
┌─16k──[H?for?help]──Hostname=f35ks01─Refresh=?2secs?─18:17:01─┐
│?CPU?Utilisation?─────────────────────────────────────────────│
│---------------------------+---------------------------------+│
│CPU?User%??Sys%?Wait%??Idle|0?????????|25????|50??|75??100|???│
│??1???2.6??10.3???0.0??87.1|Usssss?????>??????????????????|???│
│??2???0.0???2.2???0.0??97.8|s???????????>?????????????????|???│
│??3???6.5??11.0???0.0??82.5|UUUsssss>?????????????????????|???│
│??4???0.0???0.5???0.0??99.5|???????????????>??????????????|???│
│---------------------------+---------------------------------+│
│Avg???2.4???5.9???0.0??91.6|Uss?????>?????????????????????|???│
│---------------------------+---------------------------------+│
│?Network?I/O?─────────────────────────────────────────────────│
│I/F?Name?Recv=KB/s?Trans=KB/s?p_in?p_out?in_sz?out_sz?Peak->..│
│??????lo??????0.0???????0.0???????0.0????0.0?????0.0????0.0...│
│??enp1s0??????0.0???????0.0???????0.5????0.0????52.0????0.0...│
│??enp7s0????218.6????5923.4????3335.5?9989.68???67.1??607.2...│
│?Network?Error?Counters?──────────────────────────────────────│
│I/F?Name?iErrors?iDrop?iOverrun?iFrame?oErrors???oDrop?oOver..│
│??????lo???????0???????0???????0???????0???????0???????0???...│
│??enp1s0???????0???34419???????0???????0???????0???????0???...│
│??enp7s0???????0???34419???????0???????0???????0???????0???...│
│──────────────────────────────────────────────────────────────│

nmon?是一個(gè)可幫助您了解系統(tǒng)行為的高度靈活的工具。它還可以通過(guò)同時(shí)顯示不同的指標(biāo)來(lái)幫助解決問(wèn)題,通過(guò)提供系統(tǒng)的整體視圖以提高您理解問(wèn)題的能力。收集性能數(shù)據(jù)
nmon,這樣就可以從系統(tǒng)中收集長(zhǎng)時(shí)間的性能數(shù)據(jù)以進(jìn)行后驗(yàn)分析。nmon,請(qǐng)?jiān)趩?dòng)應(yīng)用程序時(shí)使用標(biāo)志?-f?參數(shù)(它必須是提供的第一個(gè)參數(shù))。默認(rèn)情況下,在一天內(nèi),nmon?每五分鐘收集一次數(shù)據(jù)。您可以用參數(shù)?-s?來(lái)指定收集間隔和參數(shù)?-c?來(lái)指定快照數(shù)量。nmon?批處理模式,我們想在一小時(shí)內(nèi),每分鐘收集數(shù)據(jù)一次,同時(shí)包括捕獲頂級(jí)進(jìn)程?-t,執(zhí)行以下命令:$?nmon?-f?-s60?-c60?-t
ps?命令,然后就可以看到它正在運(yùn)行了:$?ps?-ef?|?grep?nmon
ricardo?1849?1?0?12:27?pts/0?00:00:00?nmon?-f?-s60?-c60?-t
nmon?使用逗號(hào)分隔值?(Comma-Separated Value, CSV) 格式將收集的數(shù)據(jù)保存在當(dāng)前目錄中,其擴(kuò)展名為?.nmon:$?ls?-l
total?36
-rw-r--r--.?1?ricardo?ricardo?36395?Feb?13?12:28?f35ks01_220213_1227.nmon
$?head?f35ks01_220213_1227.nmon
AAA,progname,nmon
AAA,command,nmon?-f?-s60?-c60?-t
AAA,version,16k
AAA,disks_per_line,150
AAA,max_disks,256,set?by?-d?option
AAA,disks,10,
AAA,host,f35ks01
AAA,user,ricardo
AAA,OS,Linux,5.16.8-200.fc35.x86_64,#1?SMP?PREEMPT?Tue?Feb?8?20:58:59?UTC?2022,x86_64
AAA,runname,f35ks01
nmon?開(kāi)發(fā)團(tuán)隊(duì)還提供了一個(gè)腳本,該腳本可將這些數(shù)據(jù)轉(zhuǎn)換為 Web 瀏覽器能可視化查看的圖表。接下來(lái)我們看看如何做到這一點(diǎn)。生成圖表
nmon?的開(kāi)發(fā)人員創(chuàng)造了?nmonchart。此 shell 腳本使用 Google Charts(JavaScript)將這些數(shù)據(jù)轉(zhuǎn)換為 HTML,以使其在圖形環(huán)境中可視化數(shù)據(jù)并與之交互。nmoncart,請(qǐng)從?nmon?主頁(yè)下載:$?curl?-LO?http://sourceforge.net/projects/nmon/files/nmonchart40.tar
tar?來(lái)提取包的內(nèi)容:$?mkdir?nmonchart
$?tar?xvf?nmonchart40.tar?-C?nmonchart
nmonchart?需要使用 ksh(Korn SHell),因此要?jiǎng)?chuàng)建圖表,首先應(yīng)使用?dnf?在您的系統(tǒng)中安裝?ksh:$?sudo?dnf?install?-y?ksh
.nmon?文件(該文件是在批處理模式下執(zhí)行?nmon?時(shí)創(chuàng)建的):$?./nmonchart/nmonchart?f35ks01_220213_1227.nmon?
.nmon?文件同名的 HTML 文件。或者,您可以將目標(biāo)文件名作為第二個(gè)參數(shù)傳遞給?nmonchart。這是一個(gè)例子:$?ls?-lg
total?4164
-rw-r--r--.?1?ricardo?113822?Feb?14?18:52?f35ks01_220213_1227.html
-rw-r--r--.?1?ricardo?93436?Feb?13?13:26?f35ks01_220213_1227.nmon
drwx------.?2?ricardo?4096?Aug?28?2020?nmonchart
推薦一個(gè)關(guān)于 bash shell 腳本的書(shū)籍————《Bash shell scripting cheat sheet》
可視化性能圖表
nmonchart?為您提供的每個(gè)?.nmon?源文件創(chuàng)建一個(gè) HTML 文件,其中嵌入了所需的圖表 JavaScript 庫(kù)。如果本地計(jì)算機(jī)上有 HTML 文件,請(qǐng)直接在 Web 瀏覽器中查看它。$?mkdir?html
$?mv?f35ks01_220213_1227.html?html/
$?podman?run?--rm?-v?./html:/usr/share/nginx/html:ro,Z?-p?8080:80?-d?nginx
$?sudo?firewall-cmd?--add-port?8080/tcp?
http://:8080/f35ks01_220213_1227.html :
總結(jié)
nmon?是一款靈活且功能強(qiáng)大的系統(tǒng)監(jiān)控應(yīng)用程序,它可幫助您更好地了解系統(tǒng),并在出現(xiàn)問(wèn)題時(shí)及時(shí)地對(duì)其進(jìn)行故障排除。它結(jié)合了監(jiān)控能力、整合來(lái)自不同系統(tǒng)資源的實(shí)時(shí)數(shù)據(jù)的能力,以及長(zhǎng)期性能數(shù)據(jù)收集和分析的能力。這使其成為您的系統(tǒng)管理員的絕佳工具。推薦閱讀:
24 個(gè)常見(jiàn)的 Docker 疑難雜癥處理技巧
5T技術(shù)資源大放送!包括但不限于:C/C++,Linux,Python,Java,PHP,人工智能,單片機(jī),樹(shù)莓派,等等。在公眾號(hào)內(nèi)回復(fù)「1024」,即可免費(fèi)獲取
評(píng)論
圖片
表情


