轉自:http://blog.csdn.net/hualusiyu/article/details/8111263
一、基本使用
nmon目前可支持AIX和LINUX,可到以下地址去免費下載:http://www-941.haw.ibm.com/collaboration/wiki/display/WikiPtype/nmon
nmon的使用比較簡單,不用安裝,直接將對應版本的安裝包放到服務器上的某個目錄下,運行即可,例如:
# ./nmon_x86_rhel4
顯示CPU可按C,同樣,Memory—M,Network I/O----N, Disk I/O---D如下:
按q鍵可以退出nmon,但是此時的定位符有點亂,最好clear一下。
# ./nmon –f -s 30 –c 100
說明:-f 以文件的形式輸出,默認輸出是機器名+日期.nmon的格式,也可以用-F指定輸出的文件名,例如: # ./nmon_x86_rhel4 –F test.nmon -s 30 –c 100;
-s是采樣頻率,隔多長時間收集一次,這里我指定的是30秒一次;
-c是采樣次數,一共要收集多少次,這里我指定的是100次。
注意:這里單次收集的文件大小最多不能超過65K行(EXCEL里的限制),大約是在nmon中 –c的值不超過330次就OK。
./nmon -f -s 10 -c 150
nmon生成的文件比較大,建議每次收集的次數不要太多,若需要收集很長時間的數據,建議分開收集,也就是生成多個文件,LINUX里可以用建多個job的方式進行,例如:
先創建一個腳本,例如命名為nmon.sh,如下:
#! /bin/sh
./nmon_x86_rhel4 -F 6326081116_6AM.nmon -s 60 -c 240
給這個文件授權:
#chmod 777 nmon.sh
然后建一個job:
# at –f nmon.sh 6:00 January 16
運行完畢如下:
如果要建長期任務可以用crontab命令進行,建議一般不要用這個命令,否則很容易忘記你建過多少任務,造成后台事務消耗資源。
分析:
將生成的.nmon文件轉為excel能識別的.csv文件,如下:
# sort test.nmon > test.csv
生成的.csv文件就可以放到windows平台下進行分析了。
通常,我不太建議對穩定性測試用nmon監控,因為需要收集太多的信息生成文件較大,實際上,要對linux/unix的服務端資源進行性能監控,用vmstat和iostat這兩個命令去收集足夠了。
在/home/software/nmon
nmon.sh 10 1
10指每10秒統計一次,1指共運行1分鍾, 每300次會新生成一個文件
二、nmon大文件處理
當監控的時間超過一定時間(如10個小時),產生的.nmon會很大約10M。這時,使用nmon analyser v34.xls分析nmon文件會報錯。原因是內存不足。
解決方案:
1.將生成的.nmon文件split成幾個小文件。
如執行split -l 65500 result.nmon;
其中65500表示行數;
2.生成得到的xaa、xab、xab等文件。
在xaa文件中找到第一次出現“ZZZZ”的那一行,將這一行以上(不包含這一行)的內容全部copy到xab、xac等文件中。
3.給xaa、xab、xac等文件加上后綴.nmon。
4.使用nmon analyser v33e3.xls繼續分析生成對應的excel文件。
關於詳細的參考:http://www.cnblogs.com/ermao0927/p/3650422.html
摘取內容如下:
3.5.1 使用split命令如何減小.nmon文件的大小呢?其實操作系統已經提供了很有用的文件分割命令,即split。 split是Linux/Unix自帶的系統命令,一般的使用語法如下: split [-<行數>][-b <字節>][-C <字節>][-l <行數>][分割的文件名][輸出的文件名] 參數: -<行數>或-l <行數> 指定每多少行要切成一個小文件。 -b <字節> 指定每多少字節要切成一個小文件。支持單位m,k。 -C <字節> 與-b參數類似,但切割時盡量維持每行的完整性。 下面以一個大小為18M左右的8hours.nmon文件為例,詳細介紹如何使用split命令把它分割成Nmon_analyser工具可以解析的文件,並且最終合並成為一個完整的Excel報告。 首先登錄Linux系統,在8hours.nmon文件所在目錄下,執行“split -l 100000 8hours.nmon 8hours.nmon”命令,生成的文件如下: 可以看到,18M大小的結果文件,分割成每個文件10W行,總計生成5個子文件。分割的子文件個數不宜太多,子文件太多的話,合並時工作量比較大;子文件太少的話,單個子文件過大,Nmon_analyser還是無法處理。 把生成的子文件拷貝到Windows系統下,將子文件導入Nmon_analyser工具進行解析,第一個文件8hours.nmonaa沒有問題,可以成功生成報告,但從第二個開始報錯,解析失敗。使用UltraEdit或其他文本工具打開8hours.nmonaa和8hours.nmonab兩個文件,比較它們的內容,發現第一個文件里面有完整的頭文件: 第二個文件里面只有數據文件,沒有頭文件: 按照第3.1節的介紹,沒有頭文件的.nmon是無法被解析的,處理的方法也很簡單,把頭文件拷貝到除了第一個文件外的所有文件即可。需要注意的頭文件的內容有哪些,我們看一下第一個文件的內容: 從上圖可以看到,從第1002行開始,已經是具體的監控數據信息了,所以從第1行到1001行就是頭文件的內容,將該內容拷貝到其他幾個.nmon文件中,然后使用解析工具Nmon_anaylzer生成子報告。 打開生成的Excel報告文件,發現監控的各個時間點都變成無法識別的數字,如下圖: 再次檢查各個子文件的區別,發現由於之前把一個監控數據文件分割成了多個,所以每個數據文件都不是完整的,雖然添加了頭文件,但是除了第一個文件外,其他文件的起始時間可能是在上一個子文件里的,所以就造成了子文件無法獲取監控時間起點的問題。比如第一個結果文件最后的數據如下: 第二個結果文件最開始的數據如下圖: 注意上圖的第一行,只有監控數據,沒有監控時間,這樣在Nmon_analyser解析該文件時,由於沒有監控的起始時間,導致后面的監控時間出現混亂,所以除了第一個子文件外,后面每個子文件都需要添加監控的起始時間。方法是將前一個數據文件最后一次出現的時間數據直接拷貝到當前文件第一行(不包括頭文件)即可。 所有的子文件都生成結果報告后,下面的工作就是合並各個報告,生成一個完整的監控結果報告。根據目前實驗室性能測試報告的數據要求,僅進行CPU和內存數據的合並。 CPU數據的合並涉及SYS_SUMM和CPU_ALL兩個sheet,首先按照數據產生的先后順序,把所有子文件CPU_ALL的數據拷貝到第一個子文件的CPU_ALL,記錄拷貝之后的數據總行數,本例中是3061行,同時計算各列的平均值和最大值(實際按照報告要求,只計算CPU%一列即可),如下圖: SYS_SUMM中的CPU的AVG和MAX值即來自上圖中的數據。下面介紹如何生成SYS_SUMM中的CPU坐標圖,在拷貝所有CPU_ALL的數據到第一個子文件之后,查看SYS_SUMM中的CPU坐標圖: 可以看到,橫軸的時間沒有變化,還是第一個子文件的時段,需要根據CPU_ALL的數據進行調整,直接點擊CPU曲線,可以看到sheet表格上方出現了CPU曲線的生成公式: 顯然曲線的生成公式沒有包含合並的CPU數據,所以需要修改公式,修改最大行數為合並后的行數,即3061行,修改后的公式如下: =SERIES(CPU_ALL!$F$1,CPU_ALL!$A$2:$A$3061,CPU_ALL!$F$2:$F$3061,1) 生成的CPU曲線圖如下: 可以看到,曲線圖已經包含了所有的CPU監控數據,再修改Avg和Max的值為實際值,即完成了CPU監控數據的整合。 內存監控數據的合並比較簡單,將所有的數據拷貝到第一個子文件中名為MEM的sheet中,然后計算Max、Min和Average的值即可。 3.5.2 使用文本編輯器在實際的工作中,還有一種比較簡單的替代split的方法。由於.nmon是一種類.txt格式的文件,所以可以使用市面常用的txt編輯器直接打開進行分割和編輯。這里不用windows自帶的txt工具打開是因為.nmon文件一般都比較大,打開比較慢,而且自帶的txt工具編輯功能較差,不推薦使用,建議使用Ultraedit或Editplus等工具。 另外,之所以把split命令作為第一種解決問題的方法,是因為在外出工作時,客戶的辦公場所很可能限制外來U盤和外網的接入,所以如果測試機上未安裝Ultraedit或Editplus等編輯工具,使用Linux/Unix自帶的split命令便成了第一選擇。 3.6 規避方法遇到問題時,如果暫時無法解決,在以后的工作中嘗試規避問題,也是解決問題的一種方式。在使用Nmon命令行收集系統資源時,加大收集數據的間隔,從而減小收集頻率,就能控制生成的數據文件的規模,從而規避無法生成結果文件的問題。但是在實際操作時,由於測試時間、測試環境及操作等很多原因,生成大文件有時無法避免,所以掌握處理大文件的方法還是很有必要的。 |
對多台linux服務器使用nmon如何監控,服務器數量多時,每台機器都執行nmon命令會比較麻煩。方法比較多。
1、shell腳本,各服務器之間建立信任關系。
2、負載機上使用ant工具,在build.xml文件中配置各服務器的信息。可實現對遠程服務器的nmon命令的執行,nmon文件的下載與刪除。
3、手工編寫工具實現。
看到一篇文章介紹如何使用nmon對進程監控的,個人未實踐過。這里只做下備份:資源監控_自己編寫一個nmon