2011-09-16 42 views
2

我正在尋找爲Web應用程序設計的管理信息庫(MIB)(注意:我正在使用PHP),可以通過SNMP陷阱將多個變量發送到我的網絡管理系統。我必須設計一個還是有解決方案嗎?是否有一個通用的Web應用程序MIB允許自定義變量通過SNMP陷阱發送?

更多細節:

基本上我想一個陷阱發送到我的網絡管理系統(Zenoss的)只要存在對我的web應用程序的錯誤。我想在PHP中調用它,如下所示(注意:此語法可能不正確):

注意:顯然,BOSSJONES-NOTIFICATION不存在;我只是用它來做這個例子。喜歡我在尋找的MIB,或者需要設計一來取代它。

<?php 
const SNMPTRAP = '/usr/bin/snmptrap'; 
$host = 'zenoss.bossjones.com'; 

if (some_random_error()) { 
    exec(SNMPTRAP . ' -v 2c -c public -L e ' . $host . 
      ' "" BOSSJONES-NOTIFICATION::snmpErrorNotification' . 
      ' device s "192.168.1.121" errorType s "image upload fail"' . 
      ' errorCode i 340 errorMessage s "Could not upload image at path' . 
      ' /path/to/image/blah.gif" '); 
} 

我明白MIB可能不具有相同的參數,當然,但我想知道是否可以在那裏找到一種我可以「做的事」或從中學習的一般解決方案,以便我可以創建適合我的目的的自己的解決方案?

此外,是否有可能發送信息列表(如數組),而不是通過陷阱發送多個字符串?

對不起,長期以來的問題。希望提供儘可能多的細節。

PS:運行在Ubuntu的11.04 Linux中

回答

1

我就不會擔心在你的應用這一點上MIB,因爲你在做什麼是輕量級的,不公開。 MIB只是一個數據結構/模式,告訴公衆誰使用您的SNMP產品,這些陷阱是什麼等。如果您打算僅爲自己使用它,我不會擔心MIB。我建議只使用PHP SNMP模塊來啓動任何SNMP陷阱,而不管您之前沒有使用哪些OID,然後確保您的網絡管理軟件知道這些OID的含義。當你的NMS用OID varbinds獲得這些SNMP陷阱時,你就會知道這些變量是什麼,等等。讓我知道它是如何發生的。

PHP SNMP

關於第二個問題,你不能一次發送陷阱的數組。 SNMP雖然很輕巧,但這對你來說應該不重要。我會做什麼,如果你有一個陷阱陣列,只是做一個foreach循環或迭代的東西,只是通過你的數組併發送陷阱一次一個,你給每個陷阱獨特的OID所以您的NMS知道什麼陷阱字符串用於OID,以便在NMS端正確解釋它。

SNMP是一個非常美妙的協議,但非常深奧。做得好。

+1

當我寫這個,忘記接受答案的時候,我對stackoverflow非常陌生! –

+0

_「然後確保您的網絡管理軟件知道這些OID的含義」_這是您爲MIB定義的內容。 –