2

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

更多细节:

基本上,只要我的 Web 应用程序出现错误,我就想向我的网络管理系统 (Zenoss) 发送一个陷阱。我想在 PHP 中调用它,如下所示(注意:此语法可能不正确):

注意:显然,BOSSJONES-NOTIFICATION不存在;我只是在这个例子中使用它。我想用我正在寻找的 MIB 或需要设计的 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 机器上运行

4

1 回答 1

1

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

PHP SNMP

对于第二个问题,您不能一次发送一系列陷阱。不过,SNMP 是如此轻量级,这对您来说应该无关紧要。如果你有一个陷阱数组,我会做什么,只是做一个foreach循环或迭代的东西,然后遍历你的数组并一次发送一个陷阱,你为每个陷阱提供一个唯一的 OID,以便你的NMS 知道针对什么 OID 的陷阱字符串,以便在 NMS 端正确解释它。

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

于 2011-10-03T04:17:24.897 回答