當前位置:
首頁 > 最新 > Python 調用 Micro 宏自動解析 Nmon 文件進行數據歸檔

Python 調用 Micro 宏自動解析 Nmon 文件進行數據歸檔

將近兩個月都在出差~~, 所以都沒有更新, 墮落啊, 今天就把寫出來的一個腳本分享出來, 並講解下思路。可能測試人員會用的比較多。


關於 nmon

nmon 是一款強大的檢測後台伺服器運行狀態的工具, 在性能測試中我們常常使用 nmon 監控後台伺服器運行狀態。但是 nmon 生成的監控文件沒辦法直接閱讀, 需要通過其他輔助工具來解析生成的文件。目前最好用的是宏。


用過 nmon 的都知道, excel 宏是目前最好用的 nmon analyser工具, 能夠將 nmon 結果文件解析成可讀性較高的 excel 圖表。工具用起來是非常方便, 但是也不是沒有缺點, 一旦 nmon 結果文件數量非常大, 那麼就需要非常大的人力去操作 excel, 保存解析結果並進行數據歸檔, 非常麻煩。

為了省事情, 我寫了一個腳本。

這個腳本的功能非常簡單, 自動調用宏解析 nmon 文件, 並獲取解析的結果文件, 提取出常用的數據(例如cpu、內存、磁碟和網路)。

下面來分享下思路, 準備好了嗎?黑威夠


思路就一句話「將需要手動的部分自動化或者說程序化」, 雖然你可能會說這是一句廢話, 但是確實是我思考時所使用的方法。回憶一下, 在操作宏時, 有哪幾個地方是需要手動去操作的。

打開 excel 文件

點擊 sheet 頁面上的按鈕

選擇需要解析的 nmon 文件

保存解析結果文件

分析結果文件, 並對所需數據進行計算與提取

以上 5 個步驟, 就是腳本需要做的事情, 腳本將這些操作實現, 那麼自動化也就實現了。

一個一個來, 先說第一個。

1. 打開 excel 文件

python 提供了非常豐富的庫讓我們對 excel 進行操作, 例如 xlrd、xlwt、xlutils 等。因此打開 excel 文件操作解決。

2. 點擊 sheet 頁面上的按鈕

點擊操作不好模仿, 但是通過分析宏代碼可以看出(如下圖所示), 當點擊按鈕時, 其實就是調用了宏裡面一個叫「main」的子程序, 那麼我們只需要在 python 中直接調用這個子程序並傳入所需參數即可, 這也是整個宏程序的入口。

3.選擇需要解析的 nmon 文件

excel 讓我們選擇待解析的 nmon 文件方式是彈出一個的對話框。找到這部分代碼:

GetOpenFilename 方法的最後一個參數為 True, 則會返回一個包含所有選擇文件名的數組, 後續宏的一切操作都是基於此數組進行, 因此如果需要隱藏此步驟, 該數組需要自行提供。所以除了 python 代碼外, 宏代碼我們也需要略作修改。在入口程序 main 中添加一個數組參數, 並將其賦值給 FileList 即可。

4. 保存解析結果文件

和選擇待解析的 nmon 文件套路相同, 保存解析的結果文件, 也是彈出一個對話框, 選擇文件保存的路徑及名稱。(當然如果你解析的時候選擇了多個文件, 那麼就沒有這個步驟, 宏會自動把解析結果和 nmon 文件保存在同一目錄下, 並自動命名)。同樣找到這部分代碼:

仿照多文件時的操作,將其替換為可以直接保存的方法:

SavePath 是自定義的一個保存路徑, 是一個 string 類型的變數, 也需要在 python 調用 main 時,通過參數傳遞, 因此入口程序 main 又需要增加一個 string 參數。

5.分析結果文件, 並對所需數據進行計算與提取

到這一步就是純 python 的第三方包操作了, 使用第三方模塊打開結果文件, 找到所需提取的數據, 然後讀取, 再寫入一個新的 excel 中。

當然我已經對操作宏與解析結果文件中常用的一些數據進行了封裝提取(例如 cpu、內存、磁碟與網路數據), 只需要直接調用即可, 如果有特殊需求可以通過傳入 sheet 名,行,列數獲取指定單元格數據。


這是一個使用的範例:


python 版本使用的是 3

本模塊中用到的第三方 python 模塊有

win32api

win32com

pythoncom

xlrd

xlwt

xlutils

如果沒安裝上述第三方模塊會導致運行時找不到對應的模塊運行失敗

修改過的 excel 與封裝的 python 包在附件中

如果對源碼感興趣,可以訪問這個地址:https://github.com/zengln/script/tree/master/nmon

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 Python 的精彩文章:

Python網安基礎:編寫一個埠掃描器
小白如何入門Python?這四個方法你要知道

TAG:Python |