使用Cacti記錄Windows的Paged / non paged記憶體使用量
使用Cacti記錄Windows的Paged / non paged記憶體使用量
Windows內建的SNMP能看到實體記憶體、虛擬記憶體的使用量,但是卻無法記錄Paged、non paged記憶體的使用量,本文簡單記錄了如何利用Cacti來實現記錄這二個值。
Cacti對於Windows的支援度,就某些方面來說會差一些,不是其產品本身的問題,而是Windows內建的SNMP功能較陽春。網路上的參考資料,大部份都是寫著安裝SNMP Informant這個要付費的SNMP版本,或是下載其免費版來用,就某方面來說,Cacti的資料都有一點舊,而且都很雷同,而要付錢的話,小IT就不用說了,就算是大一點的企業,也不太會把錢花在這上面。
在這裡使用的是把記憶體的使用量報告,產生成HTML的格式,放在網頁上後,由Cacti透過HTTP來抓取結果。
需要的軟體:
- HTTP Server IIS、Apache等,或是最簡單的靜態網頁伺服器就可
- Sysinternals的PsTools中的PsList:http://technet.microsoft.com/en-us/sysinternals/bb896649.aspx ;PsList是用來輸出記憶體資料用
- Ruby:這邊使用的是Ruby 1.9.3-p392版本:http://rubyinstaller.org/downloads/ ;Ruby是用來把PsList的輸出結果經加總後,變成單一個數值。在此並不是非Ruby不可,使用perl、awk或是相容的程式,應該都可做到。
整個架構如下:
使用pslist + ruby 輸出結果
整個設定麻煩的地方,最主要就是如何找出記憶體的使用狀況,並將之加總。
Pslist -m 可輸出處理程序使用記憶體的狀況,而經過ruby把各個項次加總後,可得到輸出結果,再將結果放到網頁上,Cacti的程式就可抓取其資料。
Pslist的輸出如下:
經Ruby把各項加總後,輸出變如下:
Data Input Methods、Data Templates、Graph Templates
我們在Cacti Server中,建立了一個Data Input Method,設定如下:
由於在主機上,是用PHP來解析被控端的HTTP頁面,故這邊設定使用Script Server來處理。
Data Input Method建好後,建立相對應的Data template:
最後,建立Graph Template
最後加進Device的圖表中即可:
Cacti端的PHP Script
在Cacti端,我們使用了PHP來抓取並解析網頁的資料:
輸出結果:
這方法的缺點就是要在被監控的主機端做一些設定,沒SNMP方便
留言