论文部分内容阅读
概述
桌面管理接口(Desktop Management Interface)2.0是由DMTF(Desktop Management Task Force,Inc.)制定并于1998年7月正式发布的。作为企业级网络管理规范的一个基础,DMI受到了包括Intel、Microsoft、HP、IBM、Compaq、Dell、Sun、CA等诸多公司的技术支持。比较著名的基于DMI的网络管理软件有:Intel的LANDesk Management Suite和ISC;HP公司的TopTools;IBM/Tivoli Systems,Inc.的TME 10 Netfinity Manager/LANClient Control Manager、Tivoli IT Director 2.1及Universal Management Agent;Dell公司的Dell OpenManage、Dell Inspector;Compaq的Insight Manager、CA公司的Unicenter 1.5、Unicenter TNG及Unicenter TNG Framework 2.1等。另外,SCO UnixWare 7.0、Red Hat Linux 6.0也提供了对DMI 2.0的技术支持。Microsoft公司在最近推出的Windows 2000系统中已将Smart Technology Enablers公司开发的DMI SP服务层软件作为第三方软件随盘发送。用户只需在目录\VALUEADD\3RDPARTY
MGMT\INTELDMI\DMISP下,运行DMISP.EXE就可以方便地安装DMI服务层。此外,为了确保DMI与微软的网络管理解决方案WMI兼容,Microsoft公司还提供了一个WMI Provider,DMPSETUP.EXE。借助DMPSETUP,基于WMI的管理应用程序可以方便地访问和管理DMI支持设备。
前面,笔者曾对DMI的结构和组成作过详细的介绍。为了更好地管理DMI支持设备,本文重点讨论DMI管理应用的开发技术。
开发环境与工具
开发DMI管理应用需要一个DMI软件开发工具包。这里,我们使用的开发工具是Intel公司的DMI 2.0 Service Provider Software Development Kit Version 1.2(简称DMI 2.0 SP SDK)。可通过访问Intel或Smart Technology Enablers公司的网站获取该软件。
DMI 2.0 SP SDK对软、硬件的要求不高。任何一台运行Windows 95或Windows NT 3.51以上的IBM兼容机(Intel486 DX2 66MHz处理器,16MB内存,1GB硬盘)都可以安装、运行该软件。当然,Windows NT 4.0和Windows 2000也支持该软件的安装。编程语言可以采用Microsoft Visual C++ Version 4.2或更高版本。
一般地,用户开发的管理应用将作为控制台软件运行在管理控制台(管理节点)。被管机器(被管理节点)可以是一台服务器,也可以是一台普通的台式机或便携式电脑。为了便于功能测试,建议被管节点安装一种DMI代理软件。注意,不同硬件厂商、不同型号的计算机可能会有不同的DMI代理。如果被管机器是一台IBM兼容机,可考虑安装Intel的LANDesk Client Manager
3.3。该软件可以从Intel网站上下载。
DMI管理应用开发既可以在网络环境下也可以在单机上完成。在网络环境下,DMI 2.0 SP SDK和VC++ 5.0开发工具安装在管理节点上,Intel LANDesk Client Manager安装在被管理节点上。单机上,DMI 2.0 SP SDK、Intel LANDesk Client Manager及VC ++ 5.0开发工具安装在同一台机器上。该机器既是控制台又是被管理对象。
为了便于DMI管理应用的开发,Intel还提供几个DMI开发工具:
(1)Intel DMI Explorer
在开发管理应用和组件测试工具时,利用DMI Explore开发人员可以浏览、修改DMI使能组件(支持DMI功能的组件)的属性。
(2)DMI Component Test System
DMI Component Test System(DCTS2)是一个运行于Windows操作系统下的应用程序。利用它,开发人员可以发出一系列的DMI命令,测试DMI组件的功能及组件测试程序的运行状况。
(3)DMI 2.0 MIF Conformance Checker
DMI 2.0 MIF Conformance Checker允许开发人员对特定组件MIF文件语法、句法的正确性进行检查。利用.REQ文件,开发人员可以为组件定义私有属性。
(4)Intel Service Provider Setup Utility
Intel Service Provider Setup Utility是一个壳安装程序。利用它,开发人员可以将DMI SP集成到他们的管理应用软件中。
管理接口与管理应用开发
1.管理接口
DMI 2.0定义了一组管理接口(管理API)便于管理应用程序的开发。DMI管理接口由4大类共23个函数调用组成。
(1)初始化函数(Initialization Functions)
初始化函数负责打开/关闭与远程(或本地)被管理节点间的连接,获取/设置被管理节点的配置信息,获取被管节点操作系统、DMI SP支持的DMI版本号等方面的信息。初始化函数由DmiRegister、DmiUnregister、DmiGetVersion、DmiGetConfig、DmiSetConfig共5个函数调用组成。
(2)列清单函数(Listing Functions)
列清单函数允许管理应用程序随机/顺序访问一个组件、组或属性。这类函数以DmiList起头,共有6个。
(3)操作函数(Operation Functions)
操作函数主要用于获取/设置属性值,增加/删除表属性的一行。它们包括:DmiGetAttribute、DmiSetAttribute、DmiGetMultiple、DmiSetMultiple、DmiAddRow、DmiDeleteRow。
(4)数据库管理函数(Database Administration Functions)
这类函数共有6个,主要用于修改和操作MIF数据库。例如添加/删除一个组件、组及组件的语言描述等。
2.管理应用程序开发
一个DMI管理应用程序可以是一个具有图形用户界面的管理工具,也可以是一个没有用户界面的将SNMP、CMIP请求转换成DMI请求的网管协议代理。在DMI 2.0规范中,将一个可管理的产品(manageable product)称为一个组件(component)。组件是一个软件或硬件实体,例如:字处理程序、操作系统、硬盘、主板、打印机及调制解调器等。每一组件都有若干可管理属性(attribute),例如:CPU的型号、电压、温度及风扇转速;内存的种类、型号、内存大小;操作系统的名称、版本号等。DMI为属性的访问提供了2种机制:
(1)属性查询
定期查询组件的某些可管理属性(例如服务器响应时间、带宽利用率等)是许多管理应用的基本功能。如图1,当需要查询特定组件的某个属性值时,管理应用程序调用管理接口函数向被管节点的DMI SP发出一个DMI请求(Request)。被管节点DMI SP收到属性查询请求后,首先访问本地MIF库或调用组件测试工具获取该属性的值,然后响应管理应用程序的DMI请求。
属性查询管理应用程序编写的基本步骤如下:
①指定被访问的远程/本地节点。
②使用管理接口函数的注册命令(DmiRegister)打开与指定节点的连接,同时获得一个管理句柄。
③调用管理接口的操作函数发送DMI请求,查询/设置属性值。
④检查DMI请求的状态代码(status code),并做响应的处理。
⑤指定被访问的远程/本地节点。
⑥使用管理接口函数的注销命令(DmiUnregister)断开与指定节点的连接。
图1 DMI的结构和功能
(2)事件报警
事件(Event)和报警(Indication)是DMI 2.0规范的两个术语。在多数情况下,它们的含义是相同的,因此,DMI 2.0规范经常交替使用它们。严格地讲,事件和报警有如下两方面的差别:
①事件是组件状态发生变化时引起的反应。例如CPU超载、内存溢出会导致事件产生。报警是事件的产生者(event generator)发给DMI SP的通告信息(notification message),用于通知DMI SP有一个事件已经产生。
②事件由DMI组件产生,并传给本地DMI SP。报警是本地DMI SP发送给所有已注册的管理应用程序的通告信息。
事件和报警是一种“主动”的信息报告(unsolicited report)。如图1,组件测试工具可以向DMI SP发送报警信息,同样,DMI SP也可以向管理应用程序发送报警信息。
利用DMI 2.0提供的事件报警机制,管理应用程序同样可以实时监测被管节点某个组件的运行状态。因此,事件报警可视为一种主动的Get请求。同管理应用程序发送的DMI请求相比,DMI的事件报警机制具有实时监测能力强、较少占用控制台处理器时间和节省带宽等优点。在监测被管节点各组件工作状态、系统安全性缺陷(security breach)以及跟踪可能影响系统配置的操作行为等方面非常有用。
类似于属性查询,管理应用程序在接收一个事件报警前必须指定该事件,此即事件预定(Subscription)。DMI允许一个事件产生者向多个管理节点、管理应用程序发送事件。但是,管理节点及管理应用程序在接收某类事件前,首先需要向被管理节点的DMI SP预定(Subscription)该事件,表明其有兴趣接收和处理该类事件。
通常,管理节点(事件消费者)与被管理节点(事件产生者)之间是通过某种网络连接起来的。为了节省带宽,一般不希望把所有的事件都通过网络传送到远程管理节点。为此,DMI 2.0定义了一种过滤(Filtering)机制,在被管理节点将不希望发送的事件滤除。
当某个事件被预定后,被管节点DMI SP将检查所有产生的事件并与DMI SP预定组、DMI SP过滤器组定义的事件相比较,最后,将符合条件的事件发往预定了该事件的节点。在管理节点上,管理应用程序通过提取事件报警数据结构中的相关数据,可以了解被管节点某个组件的状态极其变化情况。
由此可见,如果一个管理应用程序没有预定事件,被管理节点即使产生了事件也不会向其发送报警信息。反之,如果管理应用程序只预定事件,没有设定过滤事件,则被管节点产生的所有报警事件都会通过网络发送到远程管理控制台。因此,通常的做法是先预定事件报警,后定义过滤事件。
以下是预定事件报警需要完成的几个主要步骤:
①指定被管节点的IP地址、与该节点连接时采用的RPC(远程过程调用)及传输类型,调用管理接口函数的注册命令向远程被管节点的DMI SP注册并建立一个连接。
②填写DmiIndicationFuncs_t{EventHandler,ComponentAddHandler,…}数据结构并调用函数DmiSetIndicationCallbacks(),告诉DMI SP当特定事件产生时应该调用的函数。
③调用函数DmiIndicationListen(),启动对事件的监听。
④调用管理接口函数DmiAddRow()给DMI SP预定组及DMI SP过滤器组添加一行,说明希望预定和接收的事件。
⑤调用管理接口函数的注销命令,断开与远程节点的连接。
事件预定后,如果被管节点有相应的事件产生,DMI SP将填写事件报警数据结构DmiMultiRowData_t,并将报警信息发往预定了该事件的管理节点。在管理节点上,DMI SP收到报警信息后,会自动调用数据结构DmiIndicationFuncs_t中指定的函数。因此,管理应用程序开发人员只需编写事件处理函数(例如EventHandler、ComponentAddHandler等),从DmiMultiRowData_t中提取数据并作响应地处理就行了。
类似地,如果希望取消对特定事件的监听,只需调用DmiDeleteRow(),从DMI SP预定组及DMI SP过滤器组中删除对应的行即可。如果希望停止事件接收,只需调用DmiStopIndicationListening()即可。
总结
DMI 2.0为管理应用的开发提供了一套完整的、易于使用的编程接口。利用它,管理应用开发人员可以编写各类管理应用。对本地及远程的系统实施资产管理、实时监测、软件升级及病毒防治等任务。由于DMI能为不同的软、硬件平台提供一致的编程接口,目前已得到各大领先厂商的支持。许多优秀的桌面管理软件,例如LANDesk、TopTools都是基于DMI规范开发的。限于篇幅,这里只简要地介绍了DMI开发工具及开发过程中应注意的问题。更为详细的资料请访问下列网站:
http://www.enablers.com
http://developer.intel.com/ial/wfm
桌面管理接口(Desktop Management Interface)2.0是由DMTF(Desktop Management Task Force,Inc.)制定并于1998年7月正式发布的。作为企业级网络管理规范的一个基础,DMI受到了包括Intel、Microsoft、HP、IBM、Compaq、Dell、Sun、CA等诸多公司的技术支持。比较著名的基于DMI的网络管理软件有:Intel的LANDesk Management Suite和ISC;HP公司的TopTools;IBM/Tivoli Systems,Inc.的TME 10 Netfinity Manager/LANClient Control Manager、Tivoli IT Director 2.1及Universal Management Agent;Dell公司的Dell OpenManage、Dell Inspector;Compaq的Insight Manager、CA公司的Unicenter 1.5、Unicenter TNG及Unicenter TNG Framework 2.1等。另外,SCO UnixWare 7.0、Red Hat Linux 6.0也提供了对DMI 2.0的技术支持。Microsoft公司在最近推出的Windows 2000系统中已将Smart Technology Enablers公司开发的DMI SP服务层软件作为第三方软件随盘发送。用户只需在目录\VALUEADD\3RDPARTY
MGMT\INTELDMI\DMISP下,运行DMISP.EXE就可以方便地安装DMI服务层。此外,为了确保DMI与微软的网络管理解决方案WMI兼容,Microsoft公司还提供了一个WMI Provider,DMPSETUP.EXE。借助DMPSETUP,基于WMI的管理应用程序可以方便地访问和管理DMI支持设备。
前面,笔者曾对DMI的结构和组成作过详细的介绍。为了更好地管理DMI支持设备,本文重点讨论DMI管理应用的开发技术。
开发环境与工具
开发DMI管理应用需要一个DMI软件开发工具包。这里,我们使用的开发工具是Intel公司的DMI 2.0 Service Provider Software Development Kit Version 1.2(简称DMI 2.0 SP SDK)。可通过访问Intel或Smart Technology Enablers公司的网站获取该软件。
DMI 2.0 SP SDK对软、硬件的要求不高。任何一台运行Windows 95或Windows NT 3.51以上的IBM兼容机(Intel486 DX2 66MHz处理器,16MB内存,1GB硬盘)都可以安装、运行该软件。当然,Windows NT 4.0和Windows 2000也支持该软件的安装。编程语言可以采用Microsoft Visual C++ Version 4.2或更高版本。
一般地,用户开发的管理应用将作为控制台软件运行在管理控制台(管理节点)。被管机器(被管理节点)可以是一台服务器,也可以是一台普通的台式机或便携式电脑。为了便于功能测试,建议被管节点安装一种DMI代理软件。注意,不同硬件厂商、不同型号的计算机可能会有不同的DMI代理。如果被管机器是一台IBM兼容机,可考虑安装Intel的LANDesk Client Manager
3.3。该软件可以从Intel网站上下载。
DMI管理应用开发既可以在网络环境下也可以在单机上完成。在网络环境下,DMI 2.0 SP SDK和VC++ 5.0开发工具安装在管理节点上,Intel LANDesk Client Manager安装在被管理节点上。单机上,DMI 2.0 SP SDK、Intel LANDesk Client Manager及VC ++ 5.0开发工具安装在同一台机器上。该机器既是控制台又是被管理对象。
为了便于DMI管理应用的开发,Intel还提供几个DMI开发工具:
(1)Intel DMI Explorer
在开发管理应用和组件测试工具时,利用DMI Explore开发人员可以浏览、修改DMI使能组件(支持DMI功能的组件)的属性。
(2)DMI Component Test System
DMI Component Test System(DCTS2)是一个运行于Windows操作系统下的应用程序。利用它,开发人员可以发出一系列的DMI命令,测试DMI组件的功能及组件测试程序的运行状况。
(3)DMI 2.0 MIF Conformance Checker
DMI 2.0 MIF Conformance Checker允许开发人员对特定组件MIF文件语法、句法的正确性进行检查。利用.REQ文件,开发人员可以为组件定义私有属性。
(4)Intel Service Provider Setup Utility
Intel Service Provider Setup Utility是一个壳安装程序。利用它,开发人员可以将DMI SP集成到他们的管理应用软件中。
管理接口与管理应用开发
1.管理接口
DMI 2.0定义了一组管理接口(管理API)便于管理应用程序的开发。DMI管理接口由4大类共23个函数调用组成。
(1)初始化函数(Initialization Functions)
初始化函数负责打开/关闭与远程(或本地)被管理节点间的连接,获取/设置被管理节点的配置信息,获取被管节点操作系统、DMI SP支持的DMI版本号等方面的信息。初始化函数由DmiRegister、DmiUnregister、DmiGetVersion、DmiGetConfig、DmiSetConfig共5个函数调用组成。
(2)列清单函数(Listing Functions)
列清单函数允许管理应用程序随机/顺序访问一个组件、组或属性。这类函数以DmiList起头,共有6个。
(3)操作函数(Operation Functions)
操作函数主要用于获取/设置属性值,增加/删除表属性的一行。它们包括:DmiGetAttribute、DmiSetAttribute、DmiGetMultiple、DmiSetMultiple、DmiAddRow、DmiDeleteRow。
(4)数据库管理函数(Database Administration Functions)
这类函数共有6个,主要用于修改和操作MIF数据库。例如添加/删除一个组件、组及组件的语言描述等。
2.管理应用程序开发
一个DMI管理应用程序可以是一个具有图形用户界面的管理工具,也可以是一个没有用户界面的将SNMP、CMIP请求转换成DMI请求的网管协议代理。在DMI 2.0规范中,将一个可管理的产品(manageable product)称为一个组件(component)。组件是一个软件或硬件实体,例如:字处理程序、操作系统、硬盘、主板、打印机及调制解调器等。每一组件都有若干可管理属性(attribute),例如:CPU的型号、电压、温度及风扇转速;内存的种类、型号、内存大小;操作系统的名称、版本号等。DMI为属性的访问提供了2种机制:
(1)属性查询
定期查询组件的某些可管理属性(例如服务器响应时间、带宽利用率等)是许多管理应用的基本功能。如图1,当需要查询特定组件的某个属性值时,管理应用程序调用管理接口函数向被管节点的DMI SP发出一个DMI请求(Request)。被管节点DMI SP收到属性查询请求后,首先访问本地MIF库或调用组件测试工具获取该属性的值,然后响应管理应用程序的DMI请求。
属性查询管理应用程序编写的基本步骤如下:
①指定被访问的远程/本地节点。
②使用管理接口函数的注册命令(DmiRegister)打开与指定节点的连接,同时获得一个管理句柄。
③调用管理接口的操作函数发送DMI请求,查询/设置属性值。
④检查DMI请求的状态代码(status code),并做响应的处理。
⑤指定被访问的远程/本地节点。
⑥使用管理接口函数的注销命令(DmiUnregister)断开与指定节点的连接。
图1 DMI的结构和功能
(2)事件报警
事件(Event)和报警(Indication)是DMI 2.0规范的两个术语。在多数情况下,它们的含义是相同的,因此,DMI 2.0规范经常交替使用它们。严格地讲,事件和报警有如下两方面的差别:
①事件是组件状态发生变化时引起的反应。例如CPU超载、内存溢出会导致事件产生。报警是事件的产生者(event generator)发给DMI SP的通告信息(notification message),用于通知DMI SP有一个事件已经产生。
②事件由DMI组件产生,并传给本地DMI SP。报警是本地DMI SP发送给所有已注册的管理应用程序的通告信息。
事件和报警是一种“主动”的信息报告(unsolicited report)。如图1,组件测试工具可以向DMI SP发送报警信息,同样,DMI SP也可以向管理应用程序发送报警信息。
利用DMI 2.0提供的事件报警机制,管理应用程序同样可以实时监测被管节点某个组件的运行状态。因此,事件报警可视为一种主动的Get请求。同管理应用程序发送的DMI请求相比,DMI的事件报警机制具有实时监测能力强、较少占用控制台处理器时间和节省带宽等优点。在监测被管节点各组件工作状态、系统安全性缺陷(security breach)以及跟踪可能影响系统配置的操作行为等方面非常有用。
类似于属性查询,管理应用程序在接收一个事件报警前必须指定该事件,此即事件预定(Subscription)。DMI允许一个事件产生者向多个管理节点、管理应用程序发送事件。但是,管理节点及管理应用程序在接收某类事件前,首先需要向被管理节点的DMI SP预定(Subscription)该事件,表明其有兴趣接收和处理该类事件。
通常,管理节点(事件消费者)与被管理节点(事件产生者)之间是通过某种网络连接起来的。为了节省带宽,一般不希望把所有的事件都通过网络传送到远程管理节点。为此,DMI 2.0定义了一种过滤(Filtering)机制,在被管理节点将不希望发送的事件滤除。
当某个事件被预定后,被管节点DMI SP将检查所有产生的事件并与DMI SP预定组、DMI SP过滤器组定义的事件相比较,最后,将符合条件的事件发往预定了该事件的节点。在管理节点上,管理应用程序通过提取事件报警数据结构中的相关数据,可以了解被管节点某个组件的状态极其变化情况。
由此可见,如果一个管理应用程序没有预定事件,被管理节点即使产生了事件也不会向其发送报警信息。反之,如果管理应用程序只预定事件,没有设定过滤事件,则被管节点产生的所有报警事件都会通过网络发送到远程管理控制台。因此,通常的做法是先预定事件报警,后定义过滤事件。
以下是预定事件报警需要完成的几个主要步骤:
①指定被管节点的IP地址、与该节点连接时采用的RPC(远程过程调用)及传输类型,调用管理接口函数的注册命令向远程被管节点的DMI SP注册并建立一个连接。
②填写DmiIndicationFuncs_t{EventHandler,ComponentAddHandler,…}数据结构并调用函数DmiSetIndicationCallbacks(),告诉DMI SP当特定事件产生时应该调用的函数。
③调用函数DmiIndicationListen(),启动对事件的监听。
④调用管理接口函数DmiAddRow()给DMI SP预定组及DMI SP过滤器组添加一行,说明希望预定和接收的事件。
⑤调用管理接口函数的注销命令,断开与远程节点的连接。
事件预定后,如果被管节点有相应的事件产生,DMI SP将填写事件报警数据结构DmiMultiRowData_t,并将报警信息发往预定了该事件的管理节点。在管理节点上,DMI SP收到报警信息后,会自动调用数据结构DmiIndicationFuncs_t中指定的函数。因此,管理应用程序开发人员只需编写事件处理函数(例如EventHandler、ComponentAddHandler等),从DmiMultiRowData_t中提取数据并作响应地处理就行了。
类似地,如果希望取消对特定事件的监听,只需调用DmiDeleteRow(),从DMI SP预定组及DMI SP过滤器组中删除对应的行即可。如果希望停止事件接收,只需调用DmiStopIndicationListening()即可。
总结
DMI 2.0为管理应用的开发提供了一套完整的、易于使用的编程接口。利用它,管理应用开发人员可以编写各类管理应用。对本地及远程的系统实施资产管理、实时监测、软件升级及病毒防治等任务。由于DMI能为不同的软、硬件平台提供一致的编程接口,目前已得到各大领先厂商的支持。许多优秀的桌面管理软件,例如LANDesk、TopTools都是基于DMI规范开发的。限于篇幅,这里只简要地介绍了DMI开发工具及开发过程中应注意的问题。更为详细的资料请访问下列网站:
http://www.enablers.com
http://developer.intel.com/ial/wfm