Python版的Nmon分析器:讓你遠離excel宏
Nigel's monitor,也叫做 “Nmon”,是一個很好的監控、記錄和分析 Linux/*nix 系統性能隨時間變化的工具。Nmon 最初由 IBM 開發并于 2009 年夏天開源。時至今日 Nmon 已經在所有 Linux 平臺和架構上都可用了。它提供了很棒的當前系統統計信息的基于命令行的實時可視化報告,這些統計信息包括 CPU、RAM、網絡和磁盤 I/O。然而,Nmon 最棒的特性是可以隨著時間的推移記錄系統性能快照。
比如:nmon -f -s 1。

nmon CPU and Disk utilization
會創建一個日志文件,該日志文件最開頭是一些系統的元數據(AAA - BBBV 部分),后面是所監控的系統屬性的定時快照,比如 CPU 和內存的使用情況。這個輸出的文件很難直接由電子表格應用來處理,因此誕生了 Nmon_Analyzer excel 宏。如果你用的是 Windows/Mac 并安裝了 Microsoft Office,那么這個工具非常不錯。如果沒有這個環境那也可以使用 Nmon2rrd 工具,這個工具能將日志文件轉換 RRD 輸入文件,進而生成圖形。這個過程很死板而且有點麻煩。現在出現了一個更靈活的工具,我向你們介紹一下 pyNmonAnalyzer,它提供了一個可定制化的解決方案來生成結構化的 CSV 文件和帶有用 matplotlib 生成的圖片的簡單 HTML 報告。
入門介紹
系統需求:
從名字中就能看出我們需要有 python。此外 pyNmonAnalyzer 還依賴于 matplotlib 和 numpy。若你使用的是 debian 衍生的系統,則你需要先安裝這些包:
$ sudo apt-get install python-numpy python-matplotlib
獲取 pyNmonAnalyzer:
你可以克隆 git 倉庫:
$ git clone git@github.com:madmaze/pyNmonAnalyzer.git
或者,直接從這里下載:pyNmonAnalyzer-1.0.zip 。(LCTT 譯注:這是個 5 年前的項目但是一直在陸陸續續的進行維護)
接下來我們需要一個 Nmon 文件,如果沒有的話,可以使用發行版中提供的實例或者自己錄制一個樣本:nmon -F test.nmon -s 1 -c 120,會錄制 120 個快照,每秒一個,存儲到 test.nmon 文件中。
讓我們來看看基本的幫助信息:
$ ./pyNmonAnalyzer.py -husage: pyNmonAnalyzer.py [-h] [-x] [-d] [-o OUTDIR] [-c] [-b] [-r CONFFNAME]input_filenmonParser converts Nmon monitor files into time-sortedCSV/Spreadsheets for easier analysis, without the use of theMS Excel Macro. Also included is an option to build an HTMLreport with graphs, which is configured through report.config.positional arguments:input_file Input NMON fileoptional arguments:-h, --help show this help message and exit-x, --overwrite overwrite existing results (Default: False)-d, --debug debug? (Default: False)-o OUTDIR, --output OUTDIROutput dir for CSV (Default: ./data/)-c, --csv CSV output? (Default: False)-b, --buildReport report output? (Default: False)-r CONFFNAME, --reportConfig CONFFNAMEReport config file, if none exists: we will write thedefault config file out (Default: ./report.config)
該工具有兩個主要的選項
- 將 nmon 文件傳喚成一系列獨立的 CSV 文件
- 使用 matplotlib 生成帶圖形的 HTML 報告
下面命令既會生成 CSV 文件,也會生成 HTML 報告:
$ ./pyNmonAnalyzer.py -c -b test.nmon
這會創建一個 ./data 目錄,其中有一個存放 CSV 文件的目錄 (./data/csv/),一個存放 PNG 圖片的目錄 (./data/img/) 以及一個 HTML 報告 (./data/report.html)。
默認情況下,HTML 報告中會用圖片展示 CPU、磁盤繁忙程度、內存使用情況和網絡傳輸情況。所有這些都定義在一個不言自明的配置文件中 (report.config)。目前這個工具還不是特別的靈活,因為 CPU 和 MEM 除了 on 和 off 外,無法做其他的配置。不過下一步將會改進作圖的方法并允許用戶靈活地指定針對哪些數據使用哪種作圖方法。
目前這些報告還十分的枯燥而且只能打印出基本的幾種標記圖表,不過它的功能還在不斷的完善中。目前在開發的是一個向導來讓配置調整變得更容易。如果有任何建議,找到任何 bug 或者有任何功能需求,歡迎與我交流。























