snmp中告警的接收可以使用jdmk中的SnmpTrapListener,采用jdmk接收snmp trap的方式如下,先定义接收的线程,再用继承自SnmpTrapListener的类处理snmp的trap。详细内容见代码。
代码如下:
public class SnmpListener {
/**
* Main entry point.
*/
public static void main(String argv[]) {
try {
//创建一个DaemonTaskServer处理snmp的traps
//你也可以不用DaemonTaskServer,但使用DaemonTaskServer
//处理收到的PDU单元,可以更快的腾出来用于接收trap的socket,
//这样可以减少丢包(trap是udp包)
//把DaemonTaskServer的线程设置为NORM_PRIORITY,这样
//trap接收的线程可以优先于trap处理的线程
final DaemonTaskServer taskServer = new DaemonTaskServer();
taskServer.start(Thread.NORM_PRIORITY);
//为snmp的trap包创建分配器(SnmpEventReportDispatcher)和监听器
//SnmpEventReportDispatcher做为一个线程运行,并且在指定的端口监听traps
final SnmpEventReportDispatcher trapAgent =
new SnmpEventReportDispatcher(Integer.parseInt("8085")+1,
null,taskServer,null);
//把TrapListenerImpl作为snmp trap的监听器
// TrapListenerImpl处理trap pdu包
trapAgent.addTrapListener(new TrapListenerImpl());
final Thread trapThread = new Thread(trapAgent);
trapThread.setPriority(Thread.MAX_PRIORITY);
trapThread.start();
Thread.sleep(4000);
println("\n>> Press <Enter> if you want to stop" +
" this SNMP manager.\n");
java.lang.System.in.read();
//stop the SnmpEventReportDispatcher.
trapAgent.close();
taskServer.terminate();
java.lang.System.exit(0);
} catch(Exception e) {
java.lang.System.err.println("AsyncManager::main: "+
"Exception occurred:" + e );
e.printStackTrace();
}
}
实际处理trap的pdu包的类:
public class TrapListenerImpl implements SnmpTrapListener {
public void processSnmpTrapV1(SnmpPduTrap trap) {
println("NOTE: TrapListenerImpl received trap :");
println("\tGeneric " + trap.genericTrap);
println("\tSpecific " + trap.specificTrap);
println("\tTimeStamp " + trap.timeStamp);
println("\tAgent adress " + trap.agentAddr.stringValue());
}
public void processSnmpTrapV2(SnmpPduRequest trap) {
println("NOTE: Trap V2 not of interest !!!");
}
public void processSnmpTrapV3(SnmpScopedPduRequest trap) {
println("NOTE: TrapListenerImpl received trap V3:");
println("\tContextEngineId : " +
SnmpEngineId.createEngineId(trap.contextEngineId));
println("\tContextName : " + new String(trap.contextName));
println("\tVarBind list :");
for(int i = 0; i < trap.varBindList.length; i++)
println("oid : " + trap.varBindList[i].getOid() + " val : " +
trap.varBindList[i].getSnmpValue());
}
/**
* print/println stuff...
*/
private final static void println(String msg) {
java.lang.System.out.println(msg);
}
private final static void print(String msg) {
java.lang.System.out.print(msg);
}
}
顺便发一段法送SnmpTrapV1的代码:
public static void main(String args[]) {
try {
// Bind the adaptor. By default port 161 is used.
// For the example, we are going to use a on standard port.
//
// If you wish to use the standard SNMP ports, just comment
// out the following line:
// port = 8085;
//
int port = 8085;
snmpAdaptor = new SnmpAdaptorServer(port);
println("NOTE: SNMP Adaptor is bound on port " + port);
// Start the adaptor.
//
snmpAdaptor.start();
// Send a coldStart SNMP Trap.
//
print("NOTE: Sending a coldStart SNMP trap to"
+ " each destination defined in the ACL file...");
snmpAdaptor.setTrapPort(new Integer(port + 1));
snmpAdaptor.snmpV1Trap(0, 0, null);
println("v1 Done.");
} catch (Exception e) {
e.printStackTrace();
}
}
使用snmpAdaptor.snmpV1Trap(0, 0, null)可以像目的端(接收snmp trap的程序)发送一个trap。
分享到:
相关推荐
"snmp trap命令接收软件"是一个专为Windows平台设计的小型应用程序,它的主要作用是接收并显示来自SNMP代理的Trap通知。这对于测试和验证SNMP陷阱的正确配置以及监控网络设备的健康状况非常有用。通过使用这个工具,...
SNMP4J 实现 SNMP Trap 发送与接收 SNMP(Simple Network Management Protocol,简易网络管理协议)是一种广泛应用于网络管理的协议,SNMP4J 是一个基于 Java 的 SNMP 库,提供了完整的 SNMP 功能实现。本文将详细...
`snmp_trap`协议接收工具是针对SNMP Trap消息设计的应用,允许用户在Windows、Linux和Unix系统上接收并处理这些 traps。 SNMP Trap工作原理: 1. 设备触发事件:当网络设备(如路由器、交换机或服务器)遇到预定义...
**SNMP++实现Trap接收详解** SNMP(Simple Network Management Protocol)是一种广泛应用于网络设备管理的协议,它允许网络管理员远程监控和管理网络设备。在SNMP中,Trap是一种网络设备向管理站发送的被动通知,...
"SNMP_TRAP监听工具"正是用于接收并处理这些TRAP消息的应用程序。 SNMP TRAP分为多种类型,包括标准陷阱和自定义陷阱,它们携带了关于网络状态变化或异常事件的信息。例如,当路由器的接口状态改变、存储设备空间...
snmp trap 接收
这篇博客通过代码示例深入浅出地讲解了如何利用UDP进行数据发送和接收,并涉及SNMP的Trap机制。 UDP是一种无连接的传输层协议,它不保证数据包的顺序、可靠性和重传,而是以尽可能快的速度传输数据,适合实时性要求...
通过以上步骤,你可以创建一个基本的、跨平台的SNMP trap接收器,它可以与网络设备进行通信,接收并处理来自不同设备的trap通知。在实际应用中,你可能还需要考虑安全性,例如使用安全的SNMP版本(如v3),并配置...
创建一个SNMP Trap接收器是网络监控系统的重要组成部分。通过接收并处理这些Trap消息,管理员可以及时了解网络状态,快速响应潜在的问题。以下是一个详细的步骤和知识点: 1. **理解SNMP协议**:SNMP主要由三部分...
2. **Target Address**:Trap的目标地址,即接收Trap的管理站的IP地址和端口号。 3. **Security Parameters**:安全参数,如SNMP版本、社区字符串(对于SNMPv1和v2c)或认证和加密信息(对于SNMPv3)。 4. **...
"snmptrap.zip"这个压缩包显然包含了用于在Windows环境下接收和调试SNMP TRAP信息的工具。 **SNMP TRAP详解:** SNMP TRAP是一种异步通信机制,当网络设备遇到异常情况或者发生了预定义的事件(如接口故障、内存...
SNMP TRAP消息其实就是UDP报文,TRAP服务器就是UDP服务器(即接收方,UDP端口为162),发送TRAP消息的其实就是UDP客户端。 本demo包含TRAP接收的服务器和发送TRAP消息的UDP客户端两个部分,基于SnmpSharpNet做的,...
这个"snmp trap例子 源码"很可能是用VC++编写的,用于帮助开发者理解和实现SNMP Trap机制。 首先,我们来深入理解SNMP和SNMP Trap的基本概念。SNMP是Internet工程任务组(IETF)定义的一组协议,用于管理系统和网络...
2. **SNMPTrap实现**:`利用SNMP4J实现Snmp Trap完整例子.mht`文件详细解释了如何使用SNMP4J发送和接收SNMPTrap。SNMPTrap的发送涉及设置陷阱源、目的地、协议版本、陷阱类型和相关变量绑定;接收则需要配置Trap监听...
利用SNMP4J实现Snmp Trap完整例子 - 企业应用 - Java - JavaEye论坛.mht
SNMP Trap 接收工具,可以在windows 10 上运行,亲测可用,不需要安装dll,打开即可用。
1. 发送陷阱:你可以使用 SnmpTrap 工具模拟设备发送陷阱,以便测试 SNMP 管理系统是否能正确接收和处理。 2. 配置陷阱接收器:管理站需要配置为监听特定端口(默认为 UDP 162),并识别来自不同设备的陷阱消息。 3....
SNMPTT是一个用于接收和处理SNMP Trap的工具,它可以将接收到的Trap转换为Zabbix可以理解的格式,然后提交给Zabbix服务器。以下是SNMPTT安装所需的一些关键软件包: 1. **SNMP**: 这是最基础的组件,提供Trap的发送...
SNMP trap是一种网络设备主动向网络管理员发送报警信息的方式,常用于监控网络状态和故障检测。 1. **SNMP Trap原理**: SNMP Trap是网络设备在遇到特定事件(如接口状态改变、内存不足等)时,主动向预先设定的...