一、概述:
監控,在檢查系統問題或優化系統性能工作上是一個不可缺少的部分。通過操作系統監控工具監視操作系統資源的使用情況,間接地反映了各服務器程序的運行情況。根據運行結果分析可以幫助我們快速定位系統問題範圍或者性能瓶頸點。
nmon是一種在AIX與各種Linux操作系統上廣泛使用的監控與分析工具,相對於其它一些系統資源監控工具來說,nmon所記錄的信息是比較全面的,它能在系統運行過程中實時地捕捉系統資源的使用情況,並且能輸出結果到文件中,然後通過nmon_analyzer工具產生數據文件與圖形化結果。
nmon所記錄的數據包含以下一些方面(也是我們在尋找問題過程中所關注的資源點):
● cpu佔用率
●內存使用情況
●磁盤I/O速度、傳輸和讀寫比率
●文件系統的使用率
●網絡I/O速度、傳輸和讀寫比率、錯誤統計率與傳輸包的大小
●消耗資源最多的進程
●計算機詳細信息和資源
●頁面空間和頁面I/O速度
●用戶自定義的磁盤組
●網絡文件系統
另外在AIX操作系統上,nmon還能監控到其他的一些信息,如異步I/O等。
關於這個工具的更加詳細的說明請看IBM官方網站的說明:
1、nmon工具:
http://www.ibm.com/developerworks/cn/aix/library/nmon_analyser/
2、nmon analyser工具:
http://www.ibm.com/developerworks/cn/aix/library/nmon_analyser/
2、下載nmon軟件包:
1,wget方式下載,地址: https://nchc.dl.sourceforge.net/project/nmon/nmon16d_x86.tar.gz
2,官網手動下載,地址:http://nmon.sourceforge.net/pmwiki.php?n=Site.Downlo ,翻譯了下,如下圖
因爲CentOS就是 RedHat 的免費版本(上面內核版本 2.6.32-431.el6.x86_64),所以對應系統是RHEL 6.5,選擇右邊包含RedHat 6.5的下載。
三、解壓安裝配置:
tar -zxvf nmon16d_x86.tar.gz
配置啓動命令
在解壓的文件夾目錄下
cp nmon_x86_64_centos7 /usr/local/bin/
四、測試:
Nmon工具使用比較簡單,在nmon目錄下,輸入./nmon_x86_64_centos7
或者添加了啓動直接輸入nmon
輸入nmon命令啓動Nmon,如下圖
在上面的交互式窗口中,可以使用nmon 快捷鍵來顯示不同的系統資源統計數據:
q
: 停止並退出 Nmonh
: 查看幫助c
: 查看 CPU 統計數據m
: 查看內存統計數據d
: 查看硬盤統計數據k
: 查看內核統計數據n
: 查看網絡統計數據N
: 查看 NFS 統計數據j
: 查看文件系統統計數據t
: 查看高耗進程V
: 查看虛擬內存統計數據v
: 詳細模式
按下c,m,d後如下圖,CPU、內存、磁盤的消耗情況都直觀的展現出來了,按q鍵可以退出。
五,數據採集
性能測試時,需要根據測試場景的執行情況,分析一段時間內系統資源的變化,這時需要nmon採集數據並保存下來,以下是常用的參數:
-f 參數:生成文件,文件名=主機名+當前時間.nmon
-T 參數:顯示資源佔有率較高的進程
-s 參數:-s 10表示每隔10秒採集一次數據
-c 參數:-s 10表示總共採集十次數據
-m 參數:指定文件保存目錄
具體的參數學習可參考博客:https://www.cnblogs.com/iclk/p/4456311.html
如每隔5秒採集一次,一共採集12次,就是1分鐘的數據(生成的文件已標紅):
[qgc@localhost nmon16d]$ nmon -f -s 5 -c 12 -m /home/qgc/Desktop/ [qgc@localhost nmon16d]$ nmon -f -T -s 5 -c 12 -m /home/qgc/Desktop/ [qgc@localhost Desktop]$ ls lmon16g.c localhost_180827_2318.nmon nmon16d_x86.tar.gz localhost_180827_2317.nmon nmon16d Test
數據採集完畢後,如需關閉nmon進程,需要獲取nmon的pid(已標紅)
[qgc@localhost Desktop]$ ps -ef | grep nmon qgc 4455(pid) 4349(ppid) 0 23:40 pts/0 00:00:00 nmon qgc 4491 4429 0 23:40 pts/1 00:00:00 grep nmon
再安全殺掉該進程:kill -9 pid
[qgc@localhost Desktop]$ kill -9 4455 [qgc@localhost Desktop]$ ps -ef | grep nmon qgc 4493 4429 0 23:40 pts/1 00:00:00 grep nmon
通過sort命令可以將nmon結果文件轉換爲csv文件:
1 |
|
六,數據分析
1,下載nmon analyser
藉助nmon analyser可以把nmon採集的數據生成直觀的Excel表,nmon analyser可以在IBM的官網下載,https://www.ibm.com/developerworks/community/wikis/home?lang=en#!/wiki/Power+Systems/page/nmon_analyser
在windows上下載後解壓,有word和exce兩個文檔,Word是說明文檔,包括更新日誌,詳細參數等,其中的Excel就是nmon analyser工具了。
2,打開nmon analyser
雙擊打開nmon analyser v54.xlsm,點擊Analyze nmon data按鈕:
注:因爲我用的個人免費版WPS(10.1),沒有包含宏,需要安裝宏插件(VBA for WPS),Excel是自帶宏插件的,如果宏不能運行,需要做以下操作:
工具 -> 宏 -> 安全性 -> 中,然後再打開文件並允許運行宏。
3,下載VBA for WPS
地址:https://pan.baidu.com/s/1QzW4ebQxYQtxgVfkTmxVJw,下載VBA7.0.1590_For WPS(中文).exe後,先退出WPS,再直接安裝就行,再次打開nmon analyser,啓用宏
4,使用nmon analyser生成圖表
成功打開nmon analyser後,點擊Analyze nmon data按鈕,選擇nmon數據文件,會再次提示另存爲,選擇地址保存即可。
下圖就是nmon生成的數據報告截圖,底部可以切換其他資源信息。
以上就是nmon的簡單描述與使用介紹,大家可以根據自己所採集到的結果分析系統的情況。點擊在EXCEL工具下的標籤可以看見不同的性能報告,參考如下:
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的時間戳爲現在真實的時間,方便更容易的分析 |