在agent中发送SNMP trap
首先需要编写一个agent,调用 net-snmp的API来发送snmp trap。我们使用net-snmp自带的例子:notification(请参考net-snmp源代码)。
下面是让该agent运行起来的步骤:
1. 编译agent(该例子代码是一个sub-agent,需要用net-snmp-config来编译)
$ net-snmp-config --compile-subagent notification notification.c
2. 配置和启动snmpd
由于该例子代码是一个sub-agent,所以需要snmpd(master agent)才能正常运行。
首先创建一个snmpd.conf文件,内容如下:
-
# Define target address
-
trapsink 127.0.0.1:162 public
-
-
# Enable sub-agent support
-
rocommunity public
-
rwcommunity private
-
master agentx
然后,启动snmpd(在前台运行,将log信息打印到stdout):
$ sudo snmpd -C -c ./snmpd.conf -f -Lo
也可以在后台运行,并将log信息打印到文件中:
$ sudo snmpd -C -c ./snmpd.conf -Lf /tmp/snmpd.log
3. 配置和启动 snmptrapd
我们需要一个接收snmp trap的程序,这里我们使用snmptrapd。
首先,创建一个 snmptrapd.conf 文件,内容如下:
authCommunity log,execute,net public
在这里,为了简单,我们没有指定收到trap后对应的处理程序。
然后启动snmptrapd(在前台运行,将log信息打印到stdout):
$ sudo snmptrapd -C -c ./snmptrapd.conf -f -Lo
也可以在后台运行,并将log信息打印到文件中:
$ sudo snmptrapd -C -c ./snmptrapd.conf -Lf /tmp/trapd.log
4. 启动 sub-agent
$ sudo ./notification
5. notification(通过snmpd)将每隔30秒给snmptrapd发送一个信息,查看snmptrapd的log信息可以看到notification程序发送的trap。
-
2014-01-15 10:42:29 localhost [172.21.73.150] (via UDP: [127.0.0.1]:42705->[127.0.0.1]) TRAP, SNMP v1, community public
-
NET-SNMP-EXAMPLES-MIB::netSnmpExampleNotifications Enterprise Specific Trap (NET-SNMP-EXAMPLES-MIB::netSnmpExampleHeartbeatNotification) Uptime: 0:01:50.51
-
NET-SNMP-EXAMPLES-MIB::netSnmpExampleHeartbeatRate.0 = INTEGER: 30
阅读(3467) | 评论(0) | 转发(0) |