我正在寻找专为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机上运行)
答案 0 :(得分:1)
我不会在你的应用程序中担心MIB,因为你所做的是轻量级而不是公开的。 MIB只是一个数据结构/模式,告诉使用您的SNMP产品的公众,这些陷阱是什么,等等。如果您将仅为自己使用它,我不会担心MIB。我建议只使用PHP SNMP模块启动您想要使用之前未使用的任何OID的任何SNMP陷阱,然后确保您的网络管理软件知道这些OID的含义。当您的NMS使用OID varbinds获取这些SNMP陷阱时,您就会知道这些变量是什么,等等。让我知道它是怎么回事。
对于第二个问题,您不能一次发送一系列陷阱。 SNMP虽然很轻巧,但这对你来说无关紧要。如果你有一系列陷阱我会怎么做,只是做一个 foreach 循环或迭代的东西,然后通过你的数组并一次发送一个陷阱,你给出一个独特的每个陷阱的OID,以便您的NMS知道哪个陷阱字符串是什么OID,以便在NMS端正确解释。
SNMP是一个非常好的协议,但非常深奥。好吧。