2011-09-16 39 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定义的内容。 –