(一)nmon工具概述
nmon是以一個用來做linux服務器監控的工具,通過nmon,可以實現對以下參數的監控:
--CPU使用率
--內存、交換空間使用率
--網絡使用情況
--磁盤I/O,讀寫速度
--網絡I/O速度,傳輸和讀寫速度
--頂級進程,查看哪些應用程序占用的CPU較多
--網絡文件系統NFS
--文件系統使用情況(類似df -h)
等。。。
(二)nmon工具的部署
STEP1.下載安裝包:http://nmon.sourceforge.net/pmwiki.php?n=Site.Download。
注釋:這里需要根據自己的linux類型及版本選擇合適的安裝包,我的redhat 6.6 linux信息為
lsb_release: Distributor ID : RedHatEnterpriseServer
lsb_release: Description : Red Hat Enterprise Linux Server release 6.6 (Santiago)
,經測試,可以使用nmon16e_mpginc.tar.gz下面的“nmon_x86_64_rhel6”。
STEP2.解壓安裝包
[root@redhat6 ~]# mkdir /opt/nmon/nmon16e [root@redhat6 nmon16e]# pwd /opt/nmon/nmon16e [root@redhat6 nmon16e]# tar -xzvf nmon16e_mpginc.tar.gz ... nmon_x86_64_opensuse12 nmon_x86_64_rhel6 nmon_x86_64_rhel7 ... [root@redhat6 nmon16e]# ll total 12540 -rw-r--r--. 1 root root 3456878 Aug 13 10:16 nmon16e_mpginc.tar.gz -rw-r--r--. 1 root root 383072 Apr 14 2016 nmon_arm_ubuntu15 -rwxr-x---. 1 root root 342054 Apr 20 2016 nmon_power_32_rhel6 -rwxr-x---. 1 root root 353612 Apr 20 2016 nmon_power_32_sles11 -rwxr-x---. 1 root root 460578 Apr 20 2016 nmon_power_64_kvm2 -rwxr-x---. 1 root root 464824 Apr 20 2016 nmon_power_64le_fedora22 -rwxr-x---. 1 root root 464824 Apr 20 2016 nmon_power_64le_rhel6 -rwxr-x---. 1 root root 464824 Apr 20 2016 nmon_power_64le_rhel7 -rwxr-x---. 1 root root 540615 Apr 20 2016 nmon_power_64le_ubuntu14 -rwxr-x---. 1 root root 561504 Apr 20 2016 nmon_power_64le_ubuntu15 -rwxr-x---. 1 root root 551472 Apr 20 2016 nmon_power_64le_ubuntu16 -rwxr-x---. 1 root root 405725 Apr 20 2016 nmon_power_64_rhel6 -rwxr-x---. 1 root root 460578 Apr 20 2016 nmon_power_64_rhel7 -rwxr-x---. 1 root root 418328 Apr 20 2016 nmon_power_64_sles11 -rwxr-----. 1 root root 347506 Apr 14 2016 nmon_x86_64_centos6 -rwxr-----. 1 root root 402146 Apr 14 2016 nmon_x86_64_centos7 -rwxr-----. 1 root root 345503 Apr 14 2016 nmon_x86_64_opensuse11 -rwxr-----. 1 root root 394628 Apr 14 2016 nmon_x86_64_opensuse12 -rwxr-----. 1 root root 347506 Apr 14 2016 nmon_x86_64_rhel6 -rwxr-----. 1 root root 402146 Apr 14 2016 nmon_x86_64_rhel7 -rwxr-----. 1 root root 345503 Apr 14 2016 nmon_x86_64_sles11 -rwxr-----. 1 root root 394628 Apr 14 2016 nmon_x86_64_sles12 -rwxr-----. 1 root root 481776 Apr 14 2016 nmon_x86_64_ubuntu15
STEP3.找到與自己操作系統對應的文件,直接執行,即可進入nmon工具
[root@redhat6 nmom6e]# ./nmon_power_64_rhel6

(三)nmon實時監控
可以使用nmon進行實時監控,命令主要包括三種類型:
- 幫助命令
- 監控參數命令
- 監控輔助命令
(3.1)幫助命令
幫助命令為“H”,通過H命令可以了解到nmon的命令及作用

(3.2)監控命令
| 命令 | 英文解釋 | 作用 |
| c | C | c = CPU Util ; C = wide view |
用於監控CPU的使用情況。針對每核CPU的四種狀態進行統計: User%:用戶使用CPU百分比 Sys% :系統使用CPU百分比 Wait%:CPU(非空閑)等待百分比 Idle%:空閑CPU百分比 |
| m | L | m = memory & swap ; L = Large(Huge) Page |
用於監控內存及交換空間的使用情況,還可以使用“L”命令查看Large(Huge) Page的使用情況 |
| n | n = network | 監控每塊網卡的I/O情況,主要監控 --每秒接受/發送的流量 --進出網卡的package的數量 --進出流量(默認是2秒) --每秒接受/發送的流量的峰值 |
| d | d = Disk I/O Graphs D = Status |
監控磁盤I/O情況,通過這個命令,可以看到磁盤的繁忙程度,讀寫速度,用“D”可以看到更細節的磁盤I/O信息 注:如果磁盤sda分區成為:sda1、sda2,那么會顯示三個磁盤(sda、sda1、sda2)的信息。 |
| k | k = kernel status & loadavg | 監控內核狀態及負載,通過這個參數,可以了解到CPU具體消耗在哪些地方 --全部CPU的使用負載,CPU具體耗費在哪些地方也有所描述,不同於前面c或C對單個CPU統計 --全部CPU的平均負載(1min、5min、15min) |
| M | M = MHz by thread & CPU | CPU的時鍾震盪頻率 |
| t | t = Top Process,可選參數: --1:Priority/Nice/STate --3:CPU --4:RAM --5:I/O |
頂級進程,可通過一下方式排序 --1:基礎方式,個人感覺不實用 --3:按CPU消耗排序 --4:按內存消耗排序 --5:按I/O消耗排序 |
| g | g = User Defined Disk Groups | 用戶定義的磁盤組信息 |
| r | r = Resources OS & Proc | 操作系統資源信息,如: --CPU型號、CPU頻率、每顆CPU的物理內核、超線程、虛擬CPU數量 --操作系統版本:linux版本、redhat版本 |
| l | l = long term CPU averages | 長期的CPU負載監控。類似於windows任務管理器提供的CPU監控功能 |
| V | v = Virtual Memory | 虛擬內存使用情況 |
| N | N = NFS | NFS網絡文件系統I/O統計 |
| o | o = Disk %Busy Map | 通過MAP圖,記錄了哪些磁盤在使用,哪些磁盤未使用 |
| j | j = Filesystem Usage | 文件系統的使用情況,類似於df -h |
| u | u = Top Process with command line Hit u twice to update | 頂級進程,帶有兩次去更新數據操作 |
| G | G = with -g switches Disk Graphs to disk groups only | 不清楚具體作用,略 |
(3.3) 輔助監控命令
| 命令 | 英文解釋 | 作用 |
| “+” (shift+“+”) | “+” = double the screen refresh time | 屏幕刷新頻率改為2倍 |
| “-” | “ - ” = half the screen refresh time | 屏幕刷新頻率改為一半 |
| “.” | “.” = Display only busy disk & CPU | 標出處於繁忙狀態的CPU |
| 0 | 0 = reset peak marks(">") to zero | 將峰值重新設置為0 |
| space | space refresh screen now | 空格鍵手動刷新屏幕 |
| b | black & white mode | 顏色顯示為黑白模式 |
| q | q = Quit | 退出 |
(四)nmon數據非實時分析
除了實時分析外,還可以對數據進行收集,然后使用nmonchart、nmon_analyser工具將收集的數據進行繪圖、展現。
nmon收集數據命令如下:
[root@redhat6 nmom6e]# ./nmon_x86_64_rhel6 -s1 -c300 -f -m /opt/nmon/nmon16e/file
參數說明:
-s1 : 每隔n秒抽樣一次,這里為1s;
-c300 : 采樣次數,這里為300次;
-f : 按照標准格式輸出文件名稱:<hostname>_YYMMDD_HHMM.nmon
-m : 文件輸出路徑
最終會生成一個nmon文件,在得到nmon文件后,可以使用nmonchart或者是nmon analyser來繪制圖形。
接下來介紹一下nmonchart與nmon_analyser的用法。
(4.1)使用nmonchart生成圖形
如上所述,nmon收集數據后,會形成一個*.nmon文件,我們可以使用nmonchart來生成html的服務器性能報表,
nmonchart下載地址:http://nmon.sourceforge.net/pmwiki.php?n=Site.Nmonchart
使用語法:nmonchart <nmon-file> <output-file>.html
例子:使用nmonchart將redhat6_180814_1014.nmon轉換為html圖形報表
[root@redhat6 ~]/opt/nmon/nmon16e/nmonchart/nmonchart /opt/nmon/nmon16e/file/redhat6_180814_1014.nmon /opt/nmon/nmon16e/file/redhat6_180814_1014.html
執行提示異常:-bash: ./nmonchart: /usr/bin/ksh: bad interpreter: No such file or directory

解決辦法:
nmonchart需要使用ksh,這里提示沒有在"/usr/bin/ksh"沒有找到ksh,先確定系統有沒有安裝ksh。我的系統的redhat6.5,是安裝了ksh的
[root@redhat6 ~]# which ksh /bin/ksh

既然有ksh,就不用安裝了,直接修改nmonchart的shell即可,編輯nmonchart文件 vi /home/nmon/nmonchart31/nmonchart ,修改第一行#!/usr/bin/ksh 為#!/bin/ksh。然后再執行轉換命令就好了
按理說打開html文檔,可以看到官方提供的這樣的圖

但是我打開之后,卻是這樣的。。。上面的按鈕無法點開看到圖像,以為是瀏覽器的原因,試了chrome、firefox、ie都不好使。一時沒法搞定,暫放一下,再想想是哪里出了問題

(4.2)使用nmon_analyser生成圖形
nmon analyser是一個excel工具,下載地址為:https://www.ibm.com/developerworks/community/wikis/home?lang=en#!/wiki/Power+Systems/page/nmon_analyser 。
下載解壓之后,有2個文件,word文檔是analyser的用戶指南,對analyser工具的使用介紹得非常詳細,excel就是我們用來做數據分析的工具了。

初次使用時,一般會提示“宏已被禁用”,我們需要啟用宏

接着點擊“Analyze nmon data”按鈕,將需要分析的*.nmon文件加載到excel中,分析完成后,會生成一個新的excel,里面記錄了服務器的各項參數信息,我們簡單的看幾個圖形:
圖1:SYS_SUMM。這個圖對一段時間內服務器的CPU、I/O進行了統計

圖2:DISK_SUMM。這個圖反映了磁盤的讀寫速度以及I/O請求的數量

圖3 :CPU_ALL。反饋了CPU的負載情況

圖4:CPU_SUMM。反饋了在真個時間段內每核CPU的負載情況

圖5 圖6 NET。反饋了整體網絡I/O情況以及每個網卡的I/O的情況


圖7:CPU001:反饋了第1核CPU在監控時間段內的負載情況(這台服務器有48核心,這里只列出1核)

(五)nmon工具使用心得
nmon工具非常小巧,卻又非常的強大,nmon大小不足1MB,卻能夠監控10多項重要參數,相對於其它的工具,例如iostat、top等,nmon顯示的信息更多,對用戶也更友好,作為一個linux的初級使用者,也能理解其中的大部分信息。
由於linux和操作系統基礎較差,目前我個人只能理解一部分參數,后續還需加強學習。此外nmonchart也未成功draw出圖形,也需尋找原因。
