Python版的Nmon分析器:讓你遠(yuǎn)離excel宏
Nigel's monitor,也叫做 “Nmon”,是一個(gè)很好的監(jiān)控、記錄和分析 Linux/*nix 系統(tǒng)性能隨時(shí)間變化的工具。Nmon 最初由 IBM 開發(fā)并于 2009 年夏天開源。時(shí)至今日 Nmon 已經(jīng)在所有 Linux 平臺和架構(gòu)上都可用了。它提供了很棒的當(dāng)前系統(tǒng)統(tǒng)計(jì)信息的基于命令行的實(shí)時(shí)可視化報(bào)告,這些統(tǒng)計(jì)信息包括 CPU、RAM、網(wǎng)絡(luò)和磁盤 I/O。然而,Nmon 最棒的特性是可以隨著時(shí)間的推移記錄系統(tǒng)性能快照。
比如:nmon -f -s 1
。
nmon CPU and Disk utilization
會創(chuàng)建一個(gè)日志文件,該日志文件最開頭是一些系統(tǒng)的元數(shù)據(jù)(AAA - BBBV 部分),后面是所監(jiān)控的系統(tǒng)屬性的定時(shí)快照,比如 CPU 和內(nèi)存的使用情況。這個(gè)輸出的文件很難直接由電子表格應(yīng)用來處理,因此誕生了 Nmon_Analyzer excel 宏。如果你用的是 Windows/Mac 并安裝了 Microsoft Office,那么這個(gè)工具非常不錯(cuò)。如果沒有這個(gè)環(huán)境那也可以使用 Nmon2rrd 工具,這個(gè)工具能將日志文件轉(zhuǎn)換 RRD 輸入文件,進(jìn)而生成圖形。這個(gè)過程很死板而且有點(diǎn)麻煩。現(xiàn)在出現(xiàn)了一個(gè)更靈活的工具,我向你們介紹一下 pyNmonAnalyzer,它提供了一個(gè)可定制化的解決方案來生成結(jié)構(gòu)化的 CSV 文件和帶有用 matplotlib 生成的圖片的簡單 HTML 報(bào)告。
入門介紹
系統(tǒng)需求:
從名字中就能看出我們需要有 python。此外 pyNmonAnalyzer 還依賴于 matplotlib 和 numpy。若你使用的是 debian 衍生的系統(tǒng),則你需要先安裝這些包:
$ sudo apt-get install python-numpy python-matplotlib
獲取 pyNmonAnalyzer:
你可以克隆 git 倉庫:
$ git clone git@github.com:madmaze/pyNmonAnalyzer.git
或者,直接從這里下載:pyNmonAnalyzer-1.0.zip 。(LCTT 譯注:這是個(gè) 5 年前的項(xiàng)目但是一直在陸陸續(xù)續(xù)的進(jìn)行維護(hù))
接下來我們需要一個(gè) Nmon 文件,如果沒有的話,可以使用發(fā)行版中提供的實(shí)例或者自己錄制一個(gè)樣本:nmon -F test.nmon -s 1 -c 120
,會錄制 120 個(gè)快照,每秒一個(gè),存儲到 test.nmon 文件中。
讓我們來看看基本的幫助信息:
$ ./pyNmonAnalyzer.py -h
usage: pyNmonAnalyzer.py [-h] [-x] [-d] [-o OUTDIR] [-c] [-b] [-r CONFFNAME]
input_file
nmonParser converts Nmon monitor files into time-sorted
CSV/Spreadsheets for easier analysis, without the use of the
MS Excel Macro. Also included is an option to build an HTML
report with graphs, which is configured through report.config.
positional arguments:
input_file Input NMON file
optional arguments:
-h, --help show this help message and exit
-x, --overwrite overwrite existing results (Default: False)
-d, --debug debug? (Default: False)
-o OUTDIR, --output OUTDIR
Output dir for CSV (Default: ./data/)
-c, --csv CSV output? (Default: False)
-b, --buildReport report output? (Default: False)
-r CONFFNAME, --reportConfig CONFFNAME
Report config file, if none exists: we will write the
default config file out (Default: ./report.config)
該工具有兩個(gè)主要的選項(xiàng)
- 將 nmon 文件傳喚成一系列獨(dú)立的 CSV 文件
- 使用 matplotlib 生成帶圖形的 HTML 報(bào)告
下面命令既會生成 CSV 文件,也會生成 HTML 報(bào)告:
$ ./pyNmonAnalyzer.py -c -b test.nmon
這會創(chuàng)建一個(gè) ./data
目錄,其中有一個(gè)存放 CSV 文件的目錄 (./data/csv/
),一個(gè)存放 PNG 圖片的目錄 (./data/img/
) 以及一個(gè) HTML 報(bào)告 (./data/report.html
)。
默認(rèn)情況下,HTML 報(bào)告中會用圖片展示 CPU、磁盤繁忙程度、內(nèi)存使用情況和網(wǎng)絡(luò)傳輸情況。所有這些都定義在一個(gè)不言自明的配置文件中 (report.config
)。目前這個(gè)工具還不是特別的靈活,因?yàn)?CPU 和 MEM 除了 on
和 off
外,無法做其他的配置。不過下一步將會改進(jìn)作圖的方法并允許用戶靈活地指定針對哪些數(shù)據(jù)使用哪種作圖方法。
目前這些報(bào)告還十分的枯燥而且只能打印出基本的幾種標(biāo)記圖表,不過它的功能還在不斷的完善中。目前在開發(fā)的是一個(gè)向?qū)碜屌渲谜{(diào)整變得更容易。如果有任何建議,找到任何 bug 或者有任何功能需求,歡迎與我交流。