您好,登錄后才能下訂單哦!
在性能測試中,對機器資源使用情況的監控幾乎是必不可少的,如何從本地windows主機同時監控多臺linux服務器的性能指標?如何方便、快捷、又近似實時的觀察到每個被監控主機的運行情況,而不需要提前做侵入式的操作?這些問題就是我寫res-monitor的初衷。
res-monitor是輕量的多機性能指標監控工具,打開即用,無需在被監控主機安裝所謂的 ”agent”, 完全基于linux自帶命令,如top、free、dstat完成資源的監控和采集。 res-monitor的目標是用在性能測試中,方便、近似實時的監控多臺服務器的性能指標數據,為后期的性能瓶頸定位或分析提供依據。
沒有說哪個工具不好用,主要考慮實際應用場景或需求。Nmon是一款方便、輕量、全面的資源監控工具,非常喜歡,它也是我寫性能自動化框架中使用的資源監控工具。在那個框架工具中,實現了性能場景執行自動化、監控自動化、結果分析自動化,nmon的作用功不可沒,公眾號有篇文章對該框架的設計思路做過介紹,感興趣可以關注了解。但在新環境、新項目測試時,需要每臺機器提前部署nmon(其實很簡單),而且一般需要保存數據用在測試報告中,所以通常使用nmon寫入文件的方法,測試完成后再事后分析(當然nmon是支持命令交互實時輸出的),這樣就額外增加了整理、分析數據的工作量。可以粗略想一下,同時監控5臺中間件的4大基礎資源的后期時間成本,5個nmon文件4組指標(cpu\mem\net\io)1分鐘(每項指標分析、求值)≈20分鐘….
Glances\Nagios\Zabbix這類監控系統,雖然相當強大,但對我們日常性能測試顯的過于笨重了,安裝麻煩、而且很多被監控機器是未配置外網連接的,缺少什么或要更新什么都很費勁,不是一句yum或apt-get所能解決的。我更偏向”瑞士×××”等犀利、便攜式的,能達到目的就行。
Res-monitor應該是一款打開即用、無需被監控系統安裝額外工具(除了top\free\dstat),這些命令都是linux發行包里自帶的,當然如果真的沒有,那就yum install –y xxx一下吧。
Res-monitor使用paramiko完成ssh連接和命令執行;這是python里成熟的ssh方案;
Res-monitor使用rrdtool存儲數據和繪制圖形,其中rrdtool是一款復雜卻好用的環形數據庫,后面有空專門介紹一下它;
Res-monitor使用logging完成操作日志記錄,同時應該支持將每次監控數據保存;
Res-monitor使用html網頁展示監控數據,使用js完成頁面的自動刷新;
Res-monitor應該在某臺監控出現異常時,主動停止所有機器的監控,設置一個用于保存狀態的類變量即可解決;
Res-monitor需要考慮linux發行版、命令命令等不同造成的輸出差異化,通過使用awk、cut、tail等完成輸出形式的兼容性處理;
Res-monitor需要考慮多被監控服務器可能存在多網卡的情形、網卡、磁盤命名等可能差異較大。為了工具的通用性,網卡數據取total值,即不區分哪個網卡的流量;磁盤利用率,同樣不區分磁盤,只統計采集時刻最大的利用率作為結果值,這樣設計的考量是,性能測試中,如果最大值就在可接受范圍,那結果就無需多關心,如果有異常,最終還是要靠性能人員去定位,而不是工具。
Res-monitor可以輕松完成對多服務器的性能指標監控,無需額外安裝,不依賴環境,打開即用,數據結果保存及圖形化輸出。
如下圖是監控一臺linux服務器的結果,html報告近似實時輸出cpu\mem\net\io數據和圖形,只所以說是近似,是因為工具支持配置監控采集間隔,默認5s,間隔太短可能對性能有干擾。
關于python學習、分享、交流,筆者開通了微信公眾號【小蟒社區】,感興趣的朋友可以關注下,歡迎加入,建立屬于我們自己的小圈子,一起學python。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。