我必须configurationSNMP陷阱接收器来处理来自特定设备(在这种情况下,它是一个IBM TS3584磁带库)的陷阱并通过(作为电子邮件)发送有关错误的信息。 我的服务器正在运行CentOS 6.4 linux,使用net-snmp软件包。
我已经连接到图书馆,我能够收到它的testing陷阱。 另外我已经下载了这个设备的MIB(从这里: http ://www-01.ibm.com/support/docview.wss?uid=ssg1S4000318),并validation我可以得到的值(或OID)一个特定的事件:
snmpwalk -v2c -c public -m +IBM-TS3500-MIBv2 10.10.100.5 ibm3584MIBObjectsTD **IBM-TS3500-MIBv1::ibm3584MIBObjectsTD.0 = STRING: "This is a test SNMP trap."** snmptranslate -m +IBM-TS3500-MIBv2 -IR -On ibm3584MIBObjectsTD **.1.3.6.1.4.1.2.6.182.1.2.71.1**
整个陷阱(从/ var / log / messages)看起来像这样:
2013-08-27 15:49:37 10.10.100.5(via UDP: [10.10.100.5]:1795->[10.10.100.135]) TRAP, SNMP v1, community public#012#011SNMPv2-SMI::enterprises.4484.1 Enterprise Specific Trap (408) Uptime: 1:00:10.45#012#011SNMPv2-SMI::enterprises.2.6.182.1.2.11.1 = STRING: "3584 L32 7814014"#011SNMPv2-SMI::enterprises.2.6.182.1.2.111.1 = STRING: " 0"#011SNMPv2-SMI::enterprises.2.6.182.1.2.101.1 = ""#011SNMPv2 SMI::enterprises.2.6.182.1.2.41.1 = STRING: "08"#011SNMPv2 SMI::enterprises.2.6.182.1.2.71.1 = STRING: "This is a test SNMP trap."#011SNMPv2 SMI::enterprises.2.6.182.1.2.151.1 = INTEGER: 1#011SNMPv2 SMI::enterprises.2.6.182.1.2.161.1 = STRING: "00000"
我的问题是:是否有能够处理以这种格式接收到的陷阱的软件(linux,non gui),并根据严重程度(这是SNMP陷阱中的一个值)使用陷阱中提供的信息发送电子邮件? 我尝试过仙人掌,但是我找不到任何通知选项(除了没有文档的旧插件),虽然我pipe理仙人掌与我的设备(阅读它的名称/位置等)说话它没用。 AFAIK Nagios有TS3200 / 3300库的插件,但我不能使用Nagios。
所以我想如果我必须写我自己的parsing器拖尾/ var / log /消息为snmp陷阱和search的信息或有任何解决scheme,我可以使用?
您可以将snmptrapd
configuration为使用脚本处理陷阱; 这是traphandle
指令。
我相信configuration文件是/etc/snmp/snmptrapd.conf
。
例如,您可以使用:
traphandle IBM-TS3500-MIBv1::ibm3584MIBObjectsTD.0 /usr/local/bin/myscript.pl
或者,为了parsing所有的东西,你可以使用:
traphandle default /usr/local/bin/myscript.pl
陷阱的内容被传递给STDIN
的脚本,所以你的脚本将需要从那里读取。
你没有提到你的首选语言来编写脚本,所以我不会详细说明。 但是,下面的库存在Perl: SNMP :: Trapinfo
你可以做这样的事情:
use strict; use SNMP::Trapinfo; my $trap = SNMP::Trapinfo->new(*STDIN, {hide_passwords => 1}); # parse trap here my $subject = "Got trap from $trap->hostname"; open EMAIL, "|-", "/usr/bin/Mail", "-s", $subject, "[email protected]"; print EMAIL "My Email Body for SNMP Trap"; close EMAIL;
此外,它看起来不像你的陷阱完全翻译在/var/log/messages
。 我记不清哪些variables需要设置,以便使用自定义MIB来转换陷阱,但是您应该可以将MIB放在/ usr / local / share / snmp / mibs中(如果该目录不存在,则创build该目录)。
Update2: http : //www.net-snmp.org/docs/man/snmptrapd.htmlsearch更多。
更新:net-snmp陷阱接收器snmptrapd。
http://net-snmp.sourceforge.net/tutorial/tutorial-5/demon/
你想要一个完整的监控系统,可以处理陷阱? 如果是这样,请尝试Opennms。 它是最成熟的开源监控产品。
我正在使用snmptrapd接收陷阱(该服务正在侦听端口162 / udp),并用于进一步处理snmptt (请参阅http://snmptt.sourceforge.net/docs/snmptt.shtml )。