1. 程式人生 > >一款優秀的linux監控工具——nmon

一款優秀的linux監控工具——nmon

核心 語法 pri priority str 任務管理器 strong 學習 rec

(一)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倍
“-” (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