搜尋此網誌

2013/04/25

使用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方便

沒有留言: