`
suli
  • 浏览: 45554 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

JDMK 和遗留信息技术管理

阅读更多

 JDMK 和遗留信息技术管理

作者 Stephen B. Morris
译者 墩子
02/16/2005

巩固、集成、重构和移植是当今流行的标语式词汇。它们反映了一个除旧迎新的过程--旧者不是从本质上被更改就是被新者替代而弃之一旁。然而,在许多情况下,我们还是无法摆脱旧的设备和软件。不得不继续从老掉牙的基础结构中提取更多的服务,以及负责它们的管理。

Java 动态管理工具包 (Java Dynamic Management Kit, JDMK)是一个用于创建基于 Java 的管理软件和基于 SNMP 的遗留系统的框架。它是对 Java 管理扩展 (Java Management Extensions,JMX) 的扩展,JMX 允许分析程序通过网络实现对资源的远程监视。

下文中的一个文件包含一个受管对象的列表,这些对象可以被 JDMK 代码引用。下表摘录了部分 RFC1213_MIBOidTable.java 文件。(本文的所有代码都可以从资源部分直接下载。)此文件是根据另一标准的 MIB 文件生成的。

//感兴趣的受管对象的元数据(Metadata)定义new SnmpOidRecord("ifInOctets", "1.3.6.1.2.1.2.2.1.10", "C"),new SnmpOidRecord("ifLastChange", "1.3.6.1.2.1.2.2.1.9", "T"),new SnmpOidRecord("ifOperStatus", "1.3.6.1.2.1.2.2.1.8", "I"),
每个 SnmpOidRecord 中的符号都可以通过网络管理软件直接访问。也是我们管理网络设备的接口。

稍后,我们将探索 JDMK 关于遗留设备管理的一些独道之处。我们将了解到,使用 JDMK 制造单项级别的管理工具是一种简单、省钱的方法。这些工具可以帮助 IT 管理者加深对网络原理和网络服务的认识。

另外还介绍了,使用适配器模式作为访问 JDMK API 的方法。这增加了我们使用标准 API 的抽象级别。

寒酸的遗产

想象您被提升为只有两名手下的网管。负责四个部门共 200 人的所有计算机设备。部分任务还联系到公司局域网、电话系统支持、PC 升级、应用程序开发、服务器等等。基本上包括了所有网络任务。

让我们假设图 1 是您所负责的网络。


图 1. 一个企业网络

在图 1 中,我们看到一个三层建筑的设备分布图。 每层上的设备都连接到一个开关(正如大多数情况),这些链接每个具有 10 M 带宽并终止于一个线路盒(未显示)。 开头的另一端连接到一个建筑层级别的开关(第一层开关为 F1,第二层为 F2,第三层为 F3)。 层开关的另一端由高速链接连接到一个核心开关。 它的另一端则可能连接到 WAN 或一个服务提供网络。

由图 1 我们也许会立即发现一些问题。 问题存在的部位是:

  • Links 1, 2 , 3
  • Switch Core 与层开关之间的链接
  • 各个独立的开关

永远记住网络的性能取决于它最脆弱的一环 -- 也就是说网络是非常脆弱的。 网络设计者的任务就是维持服务的流量与提供信息冗余度两者之间的平衡。 在图 1 中,有一些弱点是可以从再次审视中改进的。 下面将着重讨论通过编写 JDMK 代码来帮助我们了解,问题会在何时出现以及问题在何时将要出现。

相关资料

Head First Design Patterns

Head First Design Patterns
By Eric Freeman, Elisabeth Freeman, Kathy Sierra, Bert Bates

入门指南

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");

该程序是一个构建了 SNMP 请求消息的单个 JDMK 类。 该消息使用以下代码指定了四个对象:

// 对主机设备的描述list.addVarBind("sysDescr.0");// 接口 1 上的操作性语句list.addVarBind("ifOperStatus.1");// 接口 1 上传入的 octets 的数量list.addVarBind("ifInOctets.1");// 接口 1 的速度list.addVarBind("ifSpeed.1");

四个请求对象被打包到一个 SNMP getRequest 消息中,并按如下方式发送给接收实体:

 SnmpRequest request =    session.snmpGetRequest(null, list);

现在,我们两次收到了相同的对象集;使用以下代码计算两者的时间差:

// 计算消息间隔时间long oldTime = date1.getTime();long newTime = new Date().getTime();long elapsed = (newTime - oldTime) / MS_DIVIDEND;println("Elapsed time in seconds " + elapsed);

在本部分中,将获取一个最近的时间,并使之减去前一检索中记录的时间值。 这样便可以粗略地估计出数据样品间的时间消耗。

显示返回的值时,可以看到以下主要元素:

Value : 25625, Object ID : 1.3.6.1.2.1.2.2.1.5.1  (Syntax : Gauge32)Value : 10000000>> Press Enter to resend the request.Elapsed time in seconds 16Value : 26005, Object ID : 1.3.6.1.2.1.2.2.1.5.1  (Syntax : Gauge32)Value : 10000000

三个粗体显示的项表示 ifInOctets 对象的两个值具有 16 秒的间隔时间。 选择的接口(支持速度为 10,000,000bps)在 T1 时间接收到 25625 octets (或字节),T2 时间接收到 26005 octets。 要确定传入链接的使用率,需要用到以下公式:

Incoming Link % Utilization =          ((T2 octets - T1 octets) * 8 * 100) /          (ifSpeed * Sample speed)

计算出的使用率为 (26005 - 25625) * 8 * 100/(10,000,000 * 16) = 0.0019%。

显然,该接口在传入端的负载很轻。 可以在传出端进行类似的测量(使用 ifOutOctets 对象)。 然后,把两个值相加确定是否过载。 很明显,进行任何数值计算都需要特别的小心(瞬时数据的快照变化非常快),但还是可以利用它们在接口上的负载量作细微的观察。

对负载情况细心地进行一天的观察,也许会发现为什么离职的前任网管要提醒你注意 Link 1。不管是什么情况,这都意味着你正在开始了解网络的秘密。 将这个方法应用到网络的其他区域,定会帮助从中加强认识。

运行例子

要运行程序,需要安装 JDMK。 可以从 Sun Microsystems 下载免费评估版本,该版本将在 90 天后过期。 所以不要肆意运行这些代码! 再者,如果你中过几次彩票的话,可以试着购买 JDMK。

对于其他情况,按照 examples\current\Snmp\Manager\ReadMe 文件中的介绍操作,其中的例子应该可以顺利地编译和运行。 我使用 JDMK 5.1 版本。 另外,在我的 Network Management, MIBs & MPLS: Principles, Design & Implementation -- 不需要中彩票就买得起 -- 一书中还提到了一些更详细和深入的信息!

谨记:使用模式

强烈推荐使用适配器模式来隐藏 JDMK API 的复杂信息。 严格地说,JDMK 本身不是十分复杂,但它是专用的。 出于这个原因,不要让应用程序代码调用其 API 就变得重要起来。 适配器为完成这一设计目标提供了一个有用的模型。

适配器用于向应用程序代码说明 JDMK (或其他)技术的详细信息。 你的代码将调用适配器,而不是直接使用 JDMK 接口。 所以,如果你从 JDMK 转向使用别的技术,更改代码所需的时间也会被大大地缩短。

一些设计模式的书中介绍了有关适配器模式的详细信息以及其应用程序,例如 O'Reilly 的 Head First Design Patterns

总结

对遗留系统及其设备的支持是一项困难而艰巨的任务,特别是 IT 预算和人员水平急剧压缩的情况下。 然而,具有冒险精神的 Java 开发者不会惧怕任何挑战! 利用网络管理和 SNMP 的一些简单概念,可以快速创建强大的基于 JDMK 的软件工具。 这些工具可以用于监视网络问题的方方面面,同时你也会获得更多有趣的任务。 它们还可能帮助你解决久而未决的疑问。

希望对捕获消息、创建自己的 agent 和 menager、使用浏览器访问管理界面等 JDMK 功能的介绍能够起到抛砖引玉的作用。需要提醒的是,我们一方面看到的是网络管理在概念上的简单性,另一方面是网络运行中潜在的无限复杂性。 JDMK 为促进这两个方面提供了一片肥沃的土壤。

资源

Stephen B. Morris s the CTO of Omey Communications, in Ireland.


返回ONJava.com.



分享到:
评论

相关推荐

    JDMK开发jar包

    JDMK(Java Desktop Management Kit)是Oracle公司推出的一款用于管理和监控Java应用程序的工具套件,它基于Java管理扩展(JMX,Java Management Extensions)。JMX是一种标准,用于创建可管理和监控的应用程序、...

    jdmk51_02-allplatforms

    标签“jdmk51_02-allplatforms”重复了标题信息,这通常用于标识和分类相关的资源或内容。 压缩包内的文件名为"SUNWjdmk",这看起来像是Oracle Solaris操作系统中软件包的命名约定。SUNW前缀是Sun Microsystems时期...

    JDMK相关文档资料

    JDMK的核心功能包括动态管理代理(JMX)、系统级监控以及网络管理等方面,为开发者提供了强大的工具来确保Java应用的稳定性和效率。 ### MIB库生成 MIB(Management Information Base)库是在网络管理领域中用于...

    Sun与中兴通讯基于JDMK技术方案的成功合作

    这一战略决策反映了中兴通讯对市场趋势的敏锐洞察和技术创新的坚定承诺,同时也体现了Sun公司在Java技术和管理工具方面的领先地位。 总的来说,Sun与中兴通讯基于JDMK技术的成功合作,是信息技术领域的一次重要实践...

    com.sun.jdmk.comm.HtmlAdaptorServer对应jar包

    是Java Dynamic Management Kit(JDMK)中的一个组件,它实现了HTML适配器,这个适配器的作用是将JMX MBeans(Managed Beans)的信息转换成HTML格式,从而可以通过Web浏览器进行远程访问和管理。这在分布式系统或者...

    com.sun.jdmk.comm.HtmlAdaptorServer对应的jar包

    Java Management Extensions(JMX)是Java平台上的一个标准,它提供了管理和监控应用程序、操作系统和网络设备的能力。在Java应用程序中,我们可以通过JMX来暴露管理接口,以便远程监控和管理应用的状态和性能。...

    com.sun.jdmk.jmxtools.1.2.1 jmxtools-1.2.1.jar 亲测可用

    缺少jar包 Description Resource Path Location Type Missing artifact com.sun.jdmk:jmxtools:jar:1.2.1 pom.xml Maven Dependency Problem jmxtools-1.2.1.jar

    jdmk51_02-allplatforms.zip

    Java Dynamic Management Kit (Java DMK) is a Java technology based toolkit that allows developers to rapidly create smart agents based on the Java Management Extensions (JMX) specification....

    HtmlAdaptorServer所需要的JAR包(com.sun.jdmk.comm.HtmlAdaptorServer)

    HtmlAdaptorServer com.sun.jdmk.comm.HtmlAdaptorServer JMXjar包 (提供的就是这个jar包,直接引用就可以...sun-jdmk-runtime-5.1-b34.2.zip/SUNWjdmk/5.1/lib/jdmkrt.jar 就是需要的包,引到classpath里面就可以了。

    Java Dynamic Management Kit .zip

    这个工具的核心是基于Java Management Extensions (JMX) 技术,它允许开发者创建、管理和集成管理资源,如Java应用服务器、数据库和其他系统组件。JMX是一个标准化的框架,提供了一种灵活的方式来监控和管理Java应用...

    HtmlAdaptorServer所需要的JAR包,com.sun.jdmk.comm.HtmlAdaptorServer

    HtmlAdaptorServer com.sun.jdmk.comm.HtmlAdaptorServer JMXjar包 (提供的就是这个jar包,直接引用就可以了) 很多jmx教程的例子里面都会用到com.sun.jdmk.comm.HtmlAdaptorServer...sun-jdmk-runtime-5.1-b34.2.z

    jmxtools jmxri-1.2.1.jar

    maven编译时报找不到这两个jar文件,发现已经无法从网站...Could not resolve dependencies for project ****:jar:0.0.1-SNAPSHOT: The following artifacts could not be resolved: com.sun.jdmk:jmxtools:jar:1.2.1, ...

    jmx-1_2_1-bin,jmxremote-1_0_1-bin,com.sun.jdmk.comm.HtmlAdaptorServer

    csdn有一个下载包含...com.sun.jdmk.comm.HtmlAdaptorServer 没有分的可以去sun官网找哦,官网下载挺慢的,好不容易下载下来分享啦 http://www.oracle.com/technetwork/java/javase/tech/javamanagement-140525.html

    jmx工具包tools

    Java Management Extensions(JMX)是Java平台上的一个标准技术,用于管理和监控应用程序、系统和服务。JMX提供了一种灵活的框架,使得开发者可以创建管理接口,以便对运行时的组件进行监控和管理。在这个场景中,...

    研究JMX必不可少的jar

    Java Management Extensions(JMX)是Java平台上的一个标准技术,用于管理和监控应用程序、操作系统和网络设备等资源。在Java环境中,JMX提供了一种统一的方式来创建、配置、管理和访问管理对象,使得开发者能够轻松...

    jmxtools-1.2.1.jar+jmxri-1.2.1.jar.zip

    在这个压缩包中,`jdmk` 可能是指Java Dynamic Management Kit,这是一个用于Java应用程序的管理和监控工具,它利用了JMX技术。`jmx` 文件可能包含的是与JMX相关的配置或文档。 在实际应用中,`jmxtools-1.2.1.jar`...

    JMXTools.jar和jmxri.jar下载

    Java Management Extensions(JMX)是Java平台提供的一种标准框架,用于管理和监控应用程序、操作系统和网络设备等资源。JMX使得开发者能够创建可管理和监控的组件,并通过统一的接口与管理系统进行交互。在这个场景...

    免费下载 jmxtools-1.2.1.jar + jmxri-1.2.1.jar.zip

    在`jdmk`和`jmx`这两个文件名称列表中,`jdmk`可能是指Java Dynamic Management Kit,它是JMX的一部分,提供了一些实用工具和示例,帮助开发者了解如何使用JMX。而`jmx`可能包含与JMX相关的类库或文档。如果这些文件...

    maven jmxtools-1.2.1.jar

    \n\nJMXTools-1.2.1.jar的核心组件是`com.sun.jdmk.comm.HtmlAdaptorServer`,它是JMX的一个重要组成部分,提供了基于HTML的Web接口,允许用户通过浏览器远程监控和管理Java应用程序。这个类实现了JMX的MBean服务器...

Global site tag (gtag.js) - Google Analytics