現在我正在使用PHP和Perl編寫程序來讀取計算機的系統數據,我們一直在使用SNMP來收集數據(或者更確切地說,被迫)。檢索數據後,我們應該將數據存儲在數據庫中,然後使用這些數據繪製折線圖。如何獲得計算機的平均CPU /處理器使用率?
目前,我正在使用此perl腳本來檢索計算機的CPU /處理器使用情況。
$MIB1 = ".1.3.6.1.2.1.25.3.3.1.2"; #Cpu Processors
$HOST = shift; #or localhost for testing
$count = 0;
#print out all the processors of the computer and their values
#SNMP is used with perl because of the libraries
#snmpwalk retrieves information from the computers by the computer name and MIB
#as there are many values, they are stored in an array to be used
(@values) = &snmpwalk("$HOST","$MIB1");
foreach $value (@values)
{
$count++;
if ($value) {
#fixes the value for presentation
$goodvalue = &strip_comment($value);
#prints out the result. $count will count out the processor number
print "CPU Usage of Processor $count: $goodvalue%\n"; }
if ($value > 90){
#warns user if the processor usage is over 90%
print "Warning: CPU Usage over 90%! \n"
}
else { warn "No response from host :$HOST:\n"; } #provides error
}
的代碼,或者更確切地說,SNMP獲取幾個獨立的處理器和許多應該知道,有可能是一臺計算機上多處理器,因此使存儲這些數據到數據庫中不是很實用,(例如,如果一臺計算機只有2個處理器,下一個有4個,整個房間有100個。)
所以我想知道是否有人可以幫助更好的代碼或改變它,以便我可以將它們加在一起,並找到一個平均值CPU /處理器的使用價值並將其存儲到數據庫中。因爲,我不太清楚如何去做,因爲循環一次只能掃描一個處理器,可能不知道有多少處理器。
在此先感謝。
不用自己寫,你可以使用例如OpenNMS:http://www.opennms.org/ - 它應該能夠自動檢測您的機器,收集結果並顯示負載圖形。 – slu 2010-08-20 08:51:56