- 浏览: 136956 次
- 性别:
- 来自: 沈阳
最新评论
-
vanezkw:
有问题。报错
快速排序 -
huiqinbo:
这个不是Grizzly api介绍的用途不大
Grizzly学习笔记 -
chinagdvea:
如果分割元素取数组首元素或者尾元素排序就会出错...
快速排序 -
pujia12345:
靠毕业生的所?这些垃圾题目
华为公司招聘 java人员面试题(泄漏版) -
cys0429831:
楼主你好我遇到一个问题 就是安装完之后 服务项里根本就没有监听 ...
Oracle监听器启动路径为空导致服务无法启动
最近一段时间做了一个网管的代理,学习了一些关于snmp的相关消息.刚开始的时候觉得特别地迷惑,还好找到了一些以前别人写的一些例子.觉得给我的帮助很大.现在项目做完了,我也想自己总结一下.给正在学习和彷徨中的人一点指导.欢迎拍砖.
首先说一下消息的发送,让我们来看一下发送的一个例子:
上面主要是建立了一个DaemonTaskServer,并在指定的端口进行监听,监听到消息的处理类为TrapListenerImpl.代码如下:
这个类中主要是处理三个告警消息SnmpTrapV1,SnmpTrapV2,SnmpTrapV3,处理时根据发送消息的类型来进行处理.
再来看看发送的代码吧.
SnmpTrapV1的代码:
SnmpTrapV2的代码:
首先说一下消息的发送,让我们来看一下发送的一个例子:
public static void init() { 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 int listePort = Integer.parseInt(PropertyReader.getValue("listenPort")); final SnmpEventReportDispatcher trapAgent = new SnmpEventReportDispatcher(listePort, 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(); } catch (Exception e) { } }
上面主要是建立了一个DaemonTaskServer,并在指定的端口进行监听,监听到消息的处理类为TrapListenerImpl.代码如下:
public void processSnmpTrapV1(SnmpPduTrap trap) { // System.out.println("NOTE: TrapListenerImpl received trap :"); // System.out.println("\tGeneric " + trap.genericTrap); // System.out.println("\tSpecific " + trap.specificTrap); // System.out.println("\tTimeStamp " + trap.timeStamp); // System.out.println("\tAgent adress " + trap.agentAddr.stringValue()); log.info(NAME + "NOTE: Trap V1 not of interest !!!"); } public void processSnmpTrapV2(SnmpPduRequest trap) { SnmpVarBindList varbindList = new SnmpVarBindList(); log.info(NAME + "收到TrapV2消息:"); int len = trap.varBindList.length; for (int i = 0; i < len; i++) { log.info(NAME + "" + "oid : " + trap.varBindList[i].getOid() + " val : " + trap.varBindList[i].getSnmpValue()); SnmpVarBind svb = trap.varBindList[i]; varbindList.add(svb); } try { String sendIP = PropertyReader.getValue("sendIP"); int sendPort = Integer.parseInt(PropertyReader.getValue("sendPort")); senderTrap.send(varbindList, sendIP, sendPort); } catch (IOException e) { log.error(NAME + "发送告警消息失败,原因:", e); } catch (SnmpStatusException e) { log.error(NAME + "发送告警消息失败,原因:", e); } } 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()); log.info(NAME + "NOTE: Trap V3 not of interest !!!"); }
这个类中主要是处理三个告警消息SnmpTrapV1,SnmpTrapV2,SnmpTrapV3,处理时根据发送消息的类型来进行处理.
再来看看发送的代码吧.
SnmpTrapV1的代码:
public static void main(String args[]) { try { int port = 8085; snmpAdaptor = new SnmpAdaptorServer(port); snmpAdaptor.start(); 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。
SnmpTrapV2的代码:
public void send(SnmpVarBindList varbindList, String ip, int port) throws IOException, SnmpStatusException { sendServer.setTrapPort(port); SnmpPeer peer = new SnmpPeer(ip); peer.setDestPort(port); SnmpOid oid = new SnmpOid(".1.4.1.8596.2.19.1.1"); SnmpTimeticks timeticks = new SnmpTimeticks(System.currentTimeMillis()); try { sendServer.snmpV2Trap(peer, oid, varbindList, timeticks); } catch (Exception e) { } }
评论
3 楼
changtuipangxie
2008-11-03
嘎嘎,我也发表了一片文章,正在迷惑中,有人帮一下不?
2 楼
congjl2002
2008-10-29
注释很详细,非常好
1 楼
qinghan0261320
2008-10-28
恩,不错。领教了。。
发表评论
-
代码性能优化总结
2019-07-17 13:12 756代码优化的目标是: 1、减小代码的体积 2、提高代码运行的 ... -
Oracle 03113 数据库无法启动问题调查
2019-07-03 09:19 0最近突然遇到服务器连接不上数据库,查看时发现数据库无法启动,s ... -
Oracle监听器启动路径为空导致服务无法启动
2009-03-09 20:04 1468今天突然遇到了一个和数据库相关的东西,想启动的我的oracle ... -
怎么计算中英文合并的字符串的长度
2009-03-06 20:22 2650import java.io.*; public class ... -
Jar文件的基本操作
2009-03-06 20:19 15661.创建相关 \>j ... -
面试时最难回答的25个问题
2009-01-16 12:35 1518准备是成功的一半 ... -
index
2009-01-14 09:28 1230What is an Index? An index is a ... -
详细的spring入门
2009-01-14 08:46 1150Spring 入门 下载spring-framework- ... -
深入浅出Java设计模式之适配器模式
2009-01-08 16:45 1006通常,客户类(clients of class)通过类的接口访 ... -
Grizzly学习笔记
2009-01-06 10:12 48541、介绍Grizzly Grizzly是一种应用程序框架,专 ... -
Singleton模式及常见问题
2009-01-05 13:54 9681. Singleton模式介绍: S ... -
Java Reflection (JAVA反射)
2008-12-31 10:35 646Reflection 是 Java 程序开发语 ... -
2天写了1000行代码
2008-12-30 17:28 903昨天和今天两天写了1000行代码,代码时堆出来了,测试也通过了 ... -
java陷阱--面试(题集)杂谈
2008-12-29 23:01 794面试是没什么道理可讲 ... -
What’s memory leak?
2008-12-12 15:39 728 How does garbage collection w ... -
What’s dead lock? What will cause dead lock and ho
2008-12-12 14:29 931 A deadlock is a situation whe ... -
What the different is between notify and notifyall
2008-12-12 14:27 768the difference between notify a ... -
JDK6的新特性
2008-12-12 13:49 1015JDK6的新特性之一_Desktop类和SystemTray类 ... -
JDK 1.5 新特性-英文版
2008-12-12 13:26 1040Performance Enhancements: JavaT ... -
JDK 1.5 新特性-中文版
2008-12-12 13:24 3311“JDK1.5”(开发代号猛 ...
相关推荐
在IT行业中,SNMP(简单网络管理协议)是一种广泛用于网络设备管理的标准协议,而SNMP Trap是其一种主动通知机制。当网络设备发生特定事件时,如接口故障、内存溢出等,设备会自动向预设的管理站发送Trap消息,以便...
5. 告警自动触发能力:可以通过告警触发网关实现向其他网管系统主动传送告警数据,如触发告警业务处理流程系统,还可以实现告警自动前转功能,如电子邮件、短消息、BP 等。 6. 系统自我管理能力:系统提供对网管系统...
此外,为了提高告警处理的效率,通常会采用自动化和智能化手段,比如使用机器学习算法预测潜在故障,或者通过AI辅助决策来优化故障处理流程。同时,告警策略也需要根据游戏业务的特点进行定制,例如在高峰期设置更...
4. **配置管理**:允许管理员配置告警阈值、告警优先级和告警处理策略。 三、系统架构 典型的Trap报文上报系统通常由以下组件构成: 1. **被管理设备**:网络中的路由器、交换机、服务器等,具备SNMP代理功能,...
告警处理是IT运维中的关键环节,能够预防并及时解决故障,减少业务中断的可能性。 1. **ALM-ServiceCenter.9002 ServiceCenter与SNMP管理站连接异常** 当出现这个告警时,表示ServiceCenter与使用SNMP协议的网络...
这些路由器在大型企业和数据中心网络中扮演着核心角色,因此对告警的准确理解和及时处理至关重要。告警参考文档通常包含了各种可能出现的故障情况、对应的告警信息、原因分析以及解决策略,旨在帮助用户快速定位和...
在给定的代码中,`MultiThreadedTrapReceiver` 类使用了 SNMP4J 库提供的多线程消息派发机制来处理 Trap 消息。该类首先创建了一个 `ThreadPool` 对象,并使用该对象创建了一个 `MultiThreadedMessageDispatcher` ...
【华为ManageOne ServiceCenter RC1告警处理手册】是华为技术有限公司发布的一份详细文档,旨在帮助技术支持工程师和系统管理员有效处理ManageOne ServiceCenter 3.0 RC1版本中的告警问题,确保系统的正常运行。...
2. **告警管理**:系统应具备强大的告警处理能力,能对海量告警进行智能分类、优先级排序,避免告警风暴,同时支持自定义告警规则和告警关联分析,便于快速定位问题。 3. **集成能力**:Netcool可能支持多种协议...
IT集中监控告警平台是现代IT管理中不可或缺的工具,其主要目的是实时监控网络环境中的各种设备和系统,包括主机,以确保业务的稳定运行。本文将深入探讨这个平台的功能、工作原理以及如何通过PING和TELNET方式进行...
5. **自动化处理机制**:现代运维中,告警处理常结合自动化工具,如自动工单生成、自动恢复策略等,以减轻人工负担,提升响应速度。 6. **告警抑制与屏蔽**:对于某些预知或已知的正常情况导致的告警,可以设置抑制...
该系统的核心在于其能够接收、处理并存储来自网络设备的告警信息,确保网络故障或异常情况能够被迅速识别和响应,从而保障网络的稳定运行。 #### 二、设计原理与架构 ##### **2.1 需求规定** 告警接收与显示:...
在CloudEngine 12800和12800E系列交换机的V200R005C10告警处理文档中,主要涵盖了以下几个方面的知识: 1. **告警查询工具**:文档提供了如何使用华为提供的工具来查询和监控设备告警的方法。这包括通过命令行界面...
2. **告警通知**:你可以配置多种通知方式,包括电子邮件、短信、SNMP陷阱、Windows事件日志等。此外,还可以设置通知频率,避免在问题未解决时频繁接收重复告警。 3. **告警状态管理**:告警有活动、已确认、已...
你可以使用`snmp_varbind_list`结构体来处理陷阱中的变量绑定,然后通过`asn1_decode()`等函数解码SNMP报文。 5. **处理SNMP请求**:当trap到达时,Net-SNMP库会调用你的回调函数。在这里,你可以使用`snmp_parse_...
- **可扩展性**:随着系统规模的扩大,告警系统需要支持大量设备和复杂环境下的告警处理。 - **标准化**:遵循业界标准,便于与其他系统集成。 - **智能化**:利用AI和机器学习技术进行告警预测和自动化处理,减轻...
Zabbix server收不到客户机SNMP Trap告警可能是由于配置trap的监控项不正确,需要检查zabbix_server.conf文件中的配置来解决问题。 十、web 端SNMP不通 Zabbix web 端SNMP不通可能是由于接口问题,需要换成SNMP接口...