一款優秀的linux監控工具——nmon
(一)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 342054Apr 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倍 |
“-” (shift+“-”) | “ - ” = 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出圖形,也需尋找原因。
一款優秀的linux監控工具——nmon