收到 SNMP 陷阱时发送电子邮件

收到 SNMP 陷阱时发送电子邮件

我必须配置 SNMP 陷阱接收器来处理来自特定设备(在本例中是 IBM TS3584 磁带库)的陷阱,并将它们(作为电子邮件)与错误信息一起发送。我的服务器运行的是 CentOS 6.4 linux,带有 net-snmp 包。

我已经连接到库,并且能够接收其测试陷阱。此外,我还下载了此设备的 MIB(来自此处:http://www-01.ibm.com/support/docview.wss?uid=ssg1S4000318),并验证我可以获取特定事件的值(或 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,非 GUI)可以处理以这种格式收到的陷阱,并根据严重性(SNMP 陷阱中的一个值)使用陷阱中提供的信息发送电子邮件?我试过 Cacti,但找不到任何通知选项(除了没有文档的旧插件),尽管我设法让 Cacti 与我的设备对话(读取其名称/位置等),但它毫无用处。据我所知,Nagios 有适用于 TS3200/3300 库的插件,但我不能使用 Nagios。

所以我在想我是否必须编写自己的解析器来跟踪 /var/log/messages 以获取 snmp 陷阱并搜索信息,或者是否有任何我可以使用的解决方案?

答案1

您可以配置snmptrapd使用脚本来处理陷阱;这是traphandle指令。

我相信配置文件是/etc/snmp/snmptrapd.conf

例如,您可以使用:

traphandle IBM-TS3500-MIBv1::ibm3584MIBObjectsTD.0 /usr/local/bin/myscript.pl

或者,要解析所有内容,您可以使用:

traphandle default /usr/local/bin/myscript.pl

陷阱的内容被传递到脚本,STDIN因此您的脚本需要从那里读取。

您没有提到编写此脚本的首选语言,因此我不会讲得太详细;但是,Perl 存在以下库:SNMP::Trap信息

你可以做这样的事情:

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。我不记得需要设置哪些变量才能使用自定义 MIB 翻译陷阱,但您应该能够将 MIB 放在 /usr/local/share/snmp/mibs 中(如果不存在则创建该目录)。

答案2

更新2: http://www.net-snmp.org/docs/man/snmptrapd.html 搜索更多。

更新:net-snmp trap 接收器 snmptrapd。

http://net-snmp.sourceforge.net/tutorial/tutorial-5/demon/

您想要一个可以处理陷阱的完整监控系统吗?如果是的话,请尝试 Opennms。它是最成熟的开源监控产品。

答案3

我在用着嗅探器用于接收陷阱(该服务正在监听端口 162/udp)并进行进一步处理短信(看http://snmptt.sourceforge.net/docs/snmptt.shtml)。

相关内容