nmon
nmon是一種在AIX與各種Linux操作系統上廣泛使用的監控與分析工具,它能在系統運行過程中實時地捕捉系統資源的使用情況,並且能輸出結果到文件中,然后通過nmon_analyzer工具產生數據文件與圖形化結果。相較於其它系統資源監控工具,nmon所記錄的信息比較全面。它可以對以下數據進行監控:
- cpu占用率
- 內存使用情況
- 磁盤I/O速度、傳輸和讀寫比率
- 文件系統的使用率
- 網絡I/O速度、傳輸和讀寫比率、錯誤統計率與傳輸包的大小
- 消耗資源最多的進程
- 計算機詳細信息和資源
- 頁面空間和頁面I/O速度
- 用戶自定義的磁盤組
- 網絡文件系統
下面我們一起來了解她的安裝使用。
nmon下載
國外的源站嘗試過幾乎打不開,或者目錄太過繁復,記錄一個自己成功安裝、使用nmon的經驗。
我使用 的是 wget 命令:
wget http://sourceforge.net/projects/nmon/files/nmon_linux_14i.tar.gz
下載頁面如下:

執行 ll 命令能在當前目錄看到 nmon_linux_14i.tar.gz 文件
解壓安裝
解壓:
tar -zxvf nmon_linux_14i.tar.gz
解壓后文件如下圖,從圖中可以看出,nmon幾乎支持當前所有主流的AIX 和 Linux系統。

直接執行系統對應的腳本文件就能啟動nmon,博主使用的是redhat:

啟動
直接執行后可以看到如下的界面,可以通過輸入不同的字符讓其展示不同的數據,
如輸入c可顯示CPU的信息,“m”對應內存、“n”對應網絡,“d”可以查看磁盤信息;“t”可以查看系統的進程信息

數據采集配置
nmon可以通過命令的形式來監控系統在一段時間內的使用情況,並將結果記錄下來
nmon -f -s 10 -c 60
參數說明:
- -f 表示生成的數據文件名中有時間;
- -s 10 表示每 10 秒采集一次數據;
- -c 60 表示采集 60 次,10*60=600 秒
當我們執行上面的命令后,可以看到當前目錄新增了一個以本主機名和當前日期為名稱的“.nmon”文件。符合“<hostname>_date_time.nmon", 這個格式。
我們通過ps命令可以看到相關的nmon進程,這個進程10分鍾過后會消失。當然,我們也可以直接手動kill掉。
生成圖形結果
在運行結束后,我們可以吧這個“.nmon”文件導到本地。然后下載nmonanalyser,打開其中的nmonanalyser文件,並啟用宏。
然后點擊“Analyse nmon data”導入我們從linux下導出的“.nmon”文件,點擊確定,就會自動生成圖形化的excel,如下圖:


以上就是nmon的簡單描述與使用介紹 ~
nmon報告中的參數含義
| sheet名稱 |
sheet含義 |
| SYS_SUMM |
系統匯總,藍線為cpu占有率變化情況,粉線為磁盤IO的變化情況; |
| AAA |
關於操作系統以及nmon本身的一些信息; |
| BBBB |
系統外掛存儲容量以及存儲類型; |
| BBBC |
系統外掛存儲位置、狀態以及描述信息; |
| BBBD |
磁盤適配器信息;(包含磁盤適配器名稱以及描述) |
| BBBE |
包含通過lsdev命令獲取的系統設備及其特征,顯示vpaths和hdisks之間的映射關系; |
| BBBG |
顯示磁盤組詳細的映射關系; |
| BBBL |
邏輯分區(LPAR)配置細節信息; |
| BBBN |
網絡適配器信息; |
| BBBP |
vmtune, schedtune, emstat和lsattr命令的輸出信息; |
| CPUnn |
顯示執行之間內CPU占用情況,其中包含user%、sys%、wait%和idle%; |
| CPU_ALL |
所有CPU概述,顯示所有CPU平均占用情況,其中包含SMT狀態; |
| CPU_SUMM |
每一個CPU在執行時間內的占用情況,其中包含user%、sys%、wait%和idle%; |
| DGBUSY |
磁盤組每個hdisk設備平均占用情況; |
| DGREAD |
每個磁盤組的平均讀情況; |
| DGSIZE |
每個磁盤組的平均讀寫情況(塊大小); |
| DGWRITE |
每個磁盤組的平均寫情況; |
| DGXFER |
每個磁盤組的I/O每秒操作; |
| DISKBSIZE |
執行時間內每個hdisk的傳輸塊大小; |
| DISKBUSY |
每個hdisk設備平均占用情況; |
| DISKREAD |
每個hdisk的平均讀情況; |
| DISKWRITE |
每個hdisk的平均寫情況; |
| DISKXFER |
每個hdisk的I/O每秒操作; |
| DISKSERV |
本sheet顯示在每個收集間隔中hdisk的評估服務時間(未響應時間) |
| DISK_SUMM |
總體disk讀、寫以及I/O操作; |
| EMCBSIZE/FAStBSIZE |
執行時間內EMC存儲的傳輸塊大小; |
| EMCBUSY/FAStBUSY |
EMC存儲設備平均占用情況; |
| EMCREAD/FAStREAD |
EMC存儲的平均讀情況; |
| EMCWRITE/FAStWRITE |
EMC存儲的平均寫情況; |
| EMCXFER/FAStXFER |
|
| EMCSERV/FAStSERV |
|
| ESSBSIZE |
本sheet記錄在系統中每個vpaths下讀寫操作的平均數據傳輸大小(blocksize) Kbytes |
| ESSBUSY |
本sheet記錄使用ESS系統的每個vpaths下的設備繁忙情況 |
| ESSREAD |
本sheet記錄在系統中每個vpaths下讀取操作的 data rate (Kbytes/sec) |
| ESSWRITE |
本sheet記錄在系統中每個vpaths下寫入操作的 data rate (Kbytes/sec) |
| ESSXFER |
本sheet記錄在系統中每個vpaths下每秒的IO操作 |
| ESSSERV |
本sheet顯示在每個收集間隔中vpaths的評估服務時間(未響應時間) |
| FILE |
本sheet包含nmon內核內部的統計信息的一個子集,跟sar報告的值相同 |
| FRCA |
|
| IOADAPT |
對於BBBCsheet每個IO適配器列表,包含了數據傳輸速度為讀取和寫入操作(千字節/秒)和I / O操作執行的總數量 |
| JFSFILE |
本sheet顯示對於每一個文件系統中,在每個間隔區間正在被使用的空間百分比 |
| JFSINODE |
本sheet顯示對於每一個文件系統中,在每個間隔區間正在被使用的inode百分比 |
| LARGEPAGE |
本圖表顯示Usedpages和Freepages隨着時間的變化 |
| LPAR |
|
| MEM |
本sheet主圖上顯示空閑實存的數量 |
| MEMUSE |
除 %comp參數外,本sheet包含的所有項都和vmtune命令的報告中一樣 |
| MEMNEW |
本sheet顯示分配的內存片信息,分三大類:用戶進程使用頁,文件系統緩存,系統內核使用頁 |
| NET |
本sheet顯示系統中每個網絡適配器的數據傳輸速率(千字節/秒) |
| NETPACKET |
本sheet統計每個適配器網絡讀寫包的數量;這個類似於netpmon –O dd 命令 |
| NFS sheets |
|
| PAGE |
本sheet統計相關頁信息的記錄 |
| PROC |
本sheet包含nmon內核內部的統計信息。其中RunQueue和Swap-in域是使用的平均時間間隔,其他項的單位是比率/秒 |
| PROCAIO |
本sheet包含關於可用的和active的異步IO進程數量信息. |
| TOP |
|
| UARG |
|
| WLM sheets |
|
| ZZZZ |
本sheet自動轉換所有nmon的時間戳為現在真實的時間,方便更容易的分析 |