入门指南
IT 管理者的一项很重要的工作就是识别网络的薄弱点。 这需要你与用户和前任管理人员(如果可能)细心地交谈来收集信息以及一些鼓励信息收集的办法。 每个网络都有其不足之处! 一些网络链接可能会时不时地过载;一两个路由或开关可能会剥落,服务器许可也许会过期。
一位细心的前任也许会在交接时将这些至关重要的信息告诉你。 让我们假设他是一位好心的想帮助你顺利进入角色的前任。 比如说,他会提醒你“小心 Link 1 -- 它有一些堵塞,一层的用户对此颇有微词。” 这是重要的内部信息,我们将在稍后的 Java 编码中使用到。
大多数情况下,网络是由一些薄弱的脚本和内部决窍组织在一起的组合体。 我在本文中想说的是,制造一个帮助维护网络的 JDMK 工具是一件相当直接了当的事情。 当然,无法代之以一个设计优秀、维护良好的网络,但即使属于这种情况,Java 工具还是可以提供一些辅助功能。
借助标准应用程序 HP OpenView Network Node Manager (NNM) 提供了一个被广泛使用的应用程序,该程序既可以在企业网络中使用也可以用于提供服务的网络。 它提供了许多有用的功能,其中包括动态发现和映射网络设备、接收通知消息以及添加自己喜欢的软件等功能。 简言之,NNM 提供了一个可以看见网络的用户界面。 如果您能够使用 NNM,那么它可以提供无限的对网络的发现和监视功能。 如果不能,也不必失望!
实现高效 IT 管理的决窍落在对自动工具的选择上。 如果你有高端应用程序软件,那么就使用它。 我们正跨入一个自动化计算的时代,系统和软件执行自我管理的趋势将更为突出。 在你的 IT 管理任务中尽可能地使用软件解决方案,才能早日踏上这一特快列车!
创建软件实现轻松管理 使用 JDMK,我们可能创建用于侦听事件和读取设备状态的激活信息的软件。 在本文中,我们将着重于后者,并说明主要原则。
开始,我将编写一个简单的程序,用于识别一个网络并确定它是否有过于拥挤的趋势。 这将通过对此链接一端的接口上的 SNMP 计数器进行取样并计算平均值来完成。 有一些标准对象是由设备上运行的 SNMP 实体维护的。 有时,SNMP 实体在默认情况下是非运行状态(即本例中的情况),我将假设网络管理员(例如,你的前任)选择了在所有设备上运行可用的 SNMP。 让我们描述一下对代码的简单要求。
我们选择的管理要求 我们创建的软件需要满足以下简单要求:
返回指定接口的操作状态。
计算指定接口的流量级别。
确定指定链接是否趋于拥挤。 接口通常具有 administrative(管理性) 和 operational(操作性) 语句。 管理性语句被网管们广泛使用,例如,“I want this interface to be up. (我需要这个接口向上转行。)” 操作性语句是操作接口的语句。 试着将操作语句想象为请求语句的网络应答。 如果管理语句向上转行,而操作语句向下转行,那么肯定是出了问题。
我将在以太网中使用的接口类型,特定为 10Mbps (或 10,000,000bps)。 我将检索一个快照,它的数据来自图 1 中 Link 1 一端的接口上接收的流入字节数。 接着,过一段时间并检索同一计数器的值。 两者之间的不同就是我们要利用的值。 现在,让我们来看一些源代码。
源代码 我使用的 Java 类是 RequestData。 它包括一个 main() 方法,并使用以下 JDMK 资源:
import com.sun.management.snmp.SnmpDefinitions;
import com.sun.management.snmp.SnmpOid;
import com.sun.management.snmp.SnmpVarBindList;
import com.sun.management.snmp.manager.SnmpPeer;
开始,我对 SNMP 管理 API 进行了初始化。 以便对上文提到的生成表进行访问。
final SnmpOidTableSupport oidTable =
new RFC1213_MIBOidTable();
SnmpOid.setSnmpOidTable(oidTable);
接下来,我创建了一个 SnmpPeer 对象。 它表示我们要与之通信的实体。 请注意,它将传入的端口作为命令行参数使用。
final SnmpPeer agent =
new SnmpPeer(host, Integer.parseInt(port));
现在必需创建一个与远程实体的通信会话。 这需要我们指定 SNMP 通信字符串。 这些数据元素将用于与 agent 关联。
final SnmpParameters params =
new SnmpParameters("public", "private");
agent.setParams(params);
我们就要成功了! 现在必需构建会话以管理请求数据,并准备好创建请求数据列表(或等效的捆绑列表)。
final SnmpSession session =
new SnmpSession("SyncManager session");
session.setDefaultPeer(agent);
final SnmpVarBindList list =
new SnmpVarBindList(
"SyncManager varbind list");
查看本文来源