在性能測試中,對機器資源使用狀況的監控幾乎是必不可少的,如何從本地windows主機同時監控多臺linux服務器的性能指標?如何方便、快捷、又近似實時的觀察到每一個被監控主機的運行狀況,而不須要提早作侵入式的操做?這些問題就是我寫res-monitor的初衷。html
res-monitor是輕量的多機性能指標監控工具,打開即用,無需在被監控主機安裝所謂的 」agent」, 徹底基於linux自帶命令,如top、free、dstat完成資源的監控和採集。 res-monitor的目標是用在性能測試中,方便、近似實時的監控多臺服務器的性能指標數據,爲後期的性能瓶頸定位或分析提供依據。python
沒有說哪一個工具很差用,主要考慮實際應用場景或需求。Nmon是一款方便、輕量、全面的資源監控工具,很是喜歡,它也是我寫性能自動化框架中使用的資源監控工具。在那個框架工具中,實現了性能場景執行自動化、監控自動化、結果分析自動化,nmon的做用功不可沒,公衆號有篇文章對該框架的設計思路作過介紹,感興趣能夠關注瞭解。但在新環境、新項目測試時,須要每臺機器提早部署nmon(其實很簡單),並且通常須要保存數據用在測試報告中,因此一般使用nmon寫入文件的方法,測試完成後再過後分析(固然nmon是支持命令交互實時輸出的),這樣就額外增長了整理、分析數據的工做量。能夠粗略想一下,同時監控5臺中間件的4大基礎資源的後期時間成本,5個nmon文件4組指標(cpu\mem\net\io)1分鐘(每項指標分析、求值)≈20分鐘….linux
Glances\Nagios\Zabbix這類監控系統,雖然至關強大,但對咱們平常性能測試顯的過於笨重了,安裝麻煩、並且不少被監控機器是未配置外網鏈接的,缺乏什麼或要更新什麼都很費勁,不是一句yum或apt-get所能解決的。我更偏向」瑞士×××」等犀利、便攜式的,能達到目的就行。ios
Res-monitor應該是一款打開即用、無需被監控系統安裝額外工具(除了top\free\dstat),這些命令都是linux發行包裏自帶的,固然若是真的沒有,那就yum install –y xxx一下吧。數據庫
Res-monitor使用paramiko完成ssh鏈接和命令執行;這是python裏成熟的ssh方案;windows
Res-monitor使用rrdtool存儲數據和繪製圖形,其中rrdtool是一款複雜卻好用的環形數據庫,後面有空專門介紹一下它;服務器
Res-monitor使用logging完成操做日誌記錄,同時應該支持將每次監控數據保存;微信
Res-monitor使用html網頁展現監控數據,使用js完成頁面的自動刷新;框架
Res-monitor應該在某臺監控出現異常時,主動中止全部機器的監控,設置一個用於保存狀態的類變量便可解決;ssh
Res-monitor須要考慮linux發行版、命令命令等不一樣形成的輸出差別化,經過使用awk、cut、tail等完成輸出形式的兼容性處理;
Res-monitor須要考慮多被監控服務器可能存在多網卡的情形、網卡、磁盤命名等可能差別較大。爲了工具的通用性,網卡數據取total值,即不區分哪一個網卡的流量;磁盤利用率,一樣不區分磁盤,只統計採集時刻最大的利用率做爲結果值,這樣設計的考量是,性能測試中,若是最大值就在可接受範圍,那結果就無需多關心,若是有異常,最終仍是要靠性能人員去定位,而不是工具。
Res-monitor能夠輕鬆完成對多服務器的性能指標監控,無需額外安裝,不依賴環境,打開即用,數據結果保存及圖形化輸出。
以下圖是監控一臺linux服務器的結果,html報告近似實時輸出cpu\mem\net\io數據和圖形,只因此說是近似,是由於工具支持配置監控採集間隔,默認5s,間隔過短可能對性能有干擾。
關於python學習、分享、交流,筆者開通了微信公衆號【小蟒社區】,感興趣的朋友能夠關注下,歡迎加入,創建屬於咱們本身的小圈子,一塊兒學python。