是否有通用的Web应用程序MIB允许通过SNMP陷阱发送自定义变量?

时间:2011-09-16 16:09:56

标签: php snmp net-snmp mib

我正在寻找专为Web应用程序设计的管理信息库(MIB)(注意:我在PHP中工作),我可以通过SNMP陷阱将多个变量发送到我的网络管理系统。我是否必须设计一个或者已经有解决方案吗?

更多详情:

基本上我想在我的网络应用程序出现错误时向我的网络管理系统(Zenoss)发送一个陷阱。我想用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 个答案:

答案 0 :(得分:1)

我不会在你的应用程序中担心MIB,因为你所做的是轻量级而不是公开的。 MIB只是一个数据结构/模式,告诉使用您的SNMP产品的公众,这些陷阱是什么,等等。如果您将仅为自己使用它,我不会担心MIB。我建议只使用PHP SNMP模块启动您想要使用之前未使用的任何OID的任何SNMP陷阱,然后确保您的网络管理软件知道这些OID的含义。当您的NMS使用OID varbinds获取这些SNMP陷阱时,您就会知道这些变量是什么,等等。让我知道它是怎么回事。

PHP SNMP

对于第二个问题,您不能一次发送一系列陷阱。 SNMP虽然很轻巧,但这对你来说无关紧要。如果你有一系列陷阱我会怎么做,只是做一个 foreach 循环或迭代的东西,然后通过你的数组并一次发送一个陷阱,你给出一个独特的每个陷阱的OID,以便您的NMS知道哪个陷阱字符串是什么OID,以便在NMS端正确解释。

SNMP是一个非常好的协议,但非常深奥。好吧。