利用Cacti和性能計數器實現自定義遠程監控
利用cacti和性能計數器實現自定義遠程監控
性能監控一直是各個網站必須認真考慮的問題,對于一個龐大的系統來說,如果不知道各個模塊的運行情況,那出了意外,連怎么癱掉的都不知道。我想這個 很多軟件開發商都注意到了這點,所以在相應的web,數據庫產品中加了各種監控數據,例如web連接數,request并發量,數據庫鏈接數等等,供大家 使用。而且當系統分布在多個機器上時,分布式監控問題又凸顯了出來,于是cacti應運而生。通過SNMP協議,cacti能很方便的同時對多臺機器進行 snmp數據的讀取以實現分布式監控。
如果您還是cacti新手,建議您先去cacti的官網上了解一下這個產品(http://www.cacti.net/)。
然而有時候光靠系統、web、數據庫提供給我們的預定義監控值還是不夠的,很多時候我們需要定義特定的監控值來監控我們的系統。可能您首先想到的是 性能計數器,性能計數器可以通過自定義的category和counter,很方便地定義,實現和監控特定需要的值。關于自定義性能計數器的解決方案請參 見:
http://it.dianping.com/using_attribute_wrapping_performance_counter.htm
不過有個不足之處,就是查看性能計數器的話,則必須登錄到所使用的機器上利用系統的性能組件來查看。那如果能結合cacti和性能計數器,實現遠程監控的話,豈不是很***?
經過各大搜索引擎的幫忙,找到了一個實現類似功能的庫,下載地址:http://erwan.l.free.fr/snmptools ,并突破了重重防火墻的限制,通過代理最終下到了這個珍貴的東東。。為了方便大家下載,本文參考資料中提供了此工具的下載。
snmptools基本的實現思路很簡單,性能計數器->SNMP->cacti,再細分一下,這個方案分兩步,***步是計數器到SNMP,第二步是SNMP到cacti。
***步計數器到SNMP,snmptools提供了一個SNMP Service的擴展Agent Dll,與windows自帶的SNMP Service集成。這個Agent Dll的主要功能就是通過一個配置文件自定義OID,以及對應的計數器映射。
- [1.3.6.1.4.1.15.1]
- counter=PhysicalDisk"Avg. Disk Queue Length"_Total
- [1.3.6.1.4.1.15.2]
- counter=LogicalDisk"Free Megabytes"_Total
以上是配置文件的樣例,此Dll用的MIB根節點是1.3.6.1.4.15,可以在此節點下定義自己所需要的counter對應的OID。
一旦snmptools安裝配置完畢,可通過cacti所在機器使用linux命令測試一下:(cacti一般是裝linux上的,雖然有windows版本的cacti,但有些功能不能用)
snmpwalk -v1 -c public [MONITOR_IP] 1.3.6.1.4.1.15
此命令會遍歷此節點所有使用到的OID值。如果值都獲取到了,說明***步操作已成功。
接下來是第二步,這步就簡單很多,snmptools提供了cacti模板,封裝了取snmp值的query方法,將此方法導入后,即可使用。
上圖就是通過再上面的配置文件運行,監控得到的結果。呵呵,看上去很爽吧,那就快嘗試去用用吧。
【編輯推薦】