分类: LINUX
2008-04-26 15:29:18
关于系统易用性的管理,我将连续发表8篇文章,这是第5篇。在这篇文章中,我将重点解释系统易管理性的第3个元素——监控。
水平集-监控:监控程序和其他数据收集工具是所有管理策略的主要组成部分。正确地收集和组织主机数据可以让用户手动或系统自动的对错误数据做出调整和改正。现在有很多在Linux平台上可用的开源或免费软件监控工具,本文将对这些工具展开概要分析,但本文并不是比较这些监控软件的异同,而是分析它们作为数据收集系统的内部工作方式。本文将会简单介绍WBEM/CIM,即使它不只局限于系统易管理性这个范畴,但它也是作为一个数据收集和管理系统的基础。
Ⅰ. WBEM/CIM:接下来的部分将介绍WBEM(Web Based Enterprise Management基于web的企业管理)和现有的开源CIM(Common Information Model公共信息模型)实现。DMTF(Distributed Management Task Force分布式管理任务组)对WBEM有如下定义:
“WBEM是一套使用Internet标准技术开发的一体化企业计算管理环境。WBEM提供了基于WEB技术的完整的工业统一管理工具。促进了完全不同技术和平台的数据交换。”
WBEM中使用的核心组件和工业标准包括:CIM,CIM-XML,CIM Query Language(CIM查询语言),SLP(Service LocationProtocol,服务定位协议,用于WBEM发现),WBEM URI(Universal Resource Identifier 统一资源定位符)映射。基于系统易管理性目的,DMTF还开发了一个WBEM管理文件模板。WBEM已经被设计成适合所有现有的管理协议,包括SNMP,DMI,CMIP。现在有一些开源的WBEM工具,包括OpenWBEM,WBEM Services,OpenPegasus和SBLIM。这些接下来都会做详细讨论。而且,现在还有符合WBEM标准的客户端和服务器WBEM工具。
◆WBEM客户端工具包括PyWBEM和Purgos。PyWBEM是一个用Python编写的开源WBEM类库,Purgos是用C++编写的适用于Windows的开源管理客户端工具。
◆WBEM服务器工具包括OpenPegasus和OpenWBEM。OpenWBEM是用C++编写的开源客户端和服务器工具(Novell就采用它,并且把它添加到了SLES9/10中)。
接下来是DMTF对CIM的解释:
“CIM为系统,网络,应用程序和服务的信息管理提供公共定义,而且允许用户扩充。CIM的公共定义使得用户可以通过网络在彼此的系统之间交换语义丰富的管理信息。它是描述管理的概念模型,而并不是一个特殊的工具。它允许在管理系统和应用程序之间互换管理信息。这就给分布式系统管理提供了或者是“代理机到管理机”或者是“管理机到管理机”之间的信息交流。”
CIM由两部分组成:规范和模式
1. CIM规范:它描述了语言、命名、元模式和到其他管理模型(如SNMP MIBs和DMTF MIFs等等)的映射技术。元模式是模型的形式定义,它定义了表述模型的术语以及术语的用法和语义。元模式的元素有类,属性和方法。元模式还支持指针和联合。
2. CIM模式:它给出了模型的实际描述。CIM模式提供一个带有属性和联合的类集,这个类集提供一个易于理解的概念框架,这个概念框架用来组织有关管理环境的可用信息。CIM模式本身分三层结构:
◆核心模型:核心模型提供适用于所有管理领域的基本信息模型。
◆公共模型:公共模型提供针对特定管理领域的通用信息模型,但并不依赖于特殊技术或实现。这些公共领域包括系统、设备、网络、应用程序、软件度量、数据库、物理环境、事件定义和处理、CIM底层结构的管理(互用性模型)、用户和安全、政策和问题知识交换(支持模型)。这些模型为每个管理领域定义了一个通用类,使得每个领域有统一的与应用或平台无关的抽象
◆扩展模型:为公共模型提供与具体特定应用或平台相关的扩展。这些模型可以特定到环境,如操作系统(例如 UNIX或Microsoft Windows)。扩展模型分两类。特定技术领域,如UNIX98;或者特定产品领域,如Windows。
WBEM(CIM)体系结构图 |
OpenPegasus是一个遵循DMTF CIM和WBEM标准的开源工具,由开放组织(The Open Group)赞助开发成功。OpenPegasus是一个得到MIT开源许可的开源软件,在OpenPegasus网站上可以下载到tar,zip,和exe格式的OpenPegasus。根据网站上的文档所说,Pegasus是一个为DMTF CIM对象开发的开源CIM服务器。它是用C++编写的,包括对象管理器(CIMOM),一个定义的接口集,实现在HTTP操作和CIMXML HTTP编码之上的CIM操作,还有一个为客户端和供给端提供的接口类库。它遵从DMTF CIM和WBEM规范,有详细的说明文档,易于维护。它的设计具有灵活性和模块性。它用C++编写,把CIM中的对象、类的概念转换成程序模型。Pegasus现在可以运行在大部分版本的UNIX和Windows上。OpenPegasus包括如下组件:
◆一个遵从DMTF的CIM服务器,用来处理CIM操作、CIM指针,并且包括类和实例库以及建立CIM服务器和供给端所需的接口
◆供给接口,这样供给程序就可以用多种语言来写(如C++,C,Java)
◆大量CIM供给端
◆一个MOF编译器
◆大量CIM客户端,提供使用实例、CIM服务器测试功能、管理功能。
OpenWBEM On SLES10(SLES10上的OpenWBEM):
SUSE Linux企业服务器9和10就包含OpenWBEM,OpenWBEM允许任何符合WBEM的管理程序管理系统的配置信息。SLES9和10还包含一个CIM模型包和一个MOF编译器包,可以用来建立和引入模型。
## 建立叫做/root/cimv2的命名空间 SLES10:/etc/openwbem # owcreatenamespace -n /root/cimv2 Creating namespace (/root/cimv2) ## 进入CIM模型 SLES10:/etc/openwbem # owmofc /usr/share/mof/cimv2.12/cimv212.mof [ ... Lots of Output ... ] Compilation finished. 0 errors occurred. 编译和引入CIM模型 ## 开始OpenWBEM后台程序 SLES10:~ # /etc/init.d/owcimomd start Using common server certificate /etc/ssl/servercerts/servercert.pem Starting the OpenWBEM CIMOM Daemon done ## 检查OpenWBEM服务的状态 SLES10:~ # /etc/init.d/owcimomd status Checking for service OpenWBEM CIMOM Daemon running |
◆监控网络服务(SMTP,POP3,HTTP,NNTP,PING等)
◆监控主机资源(处理机工作量,磁盘使用量等)
◆一些插件设计,使用户能很容易开发自己的服务检查。
◆平行的服务检查
◆使用“parent”主机能够定义网络主机层次,能够探测和区别那些掉线和不可达到的主机。
◆当服务或是主机出现问题的时候会发出通知并得到解决(通过email,网络寻呼机,或用户自定义的方法)
◆能够定义一些事件处理程序,捕获服务或是主机事件,并做出相应的反应。
◆自动生成日志文件。
◆支持实现多余主机监测。
◆可选的网络接口用来观察当前网络状态,通知和历史问题,日志文件等。
Nagios中有很多方法,可以自选服务器并获得数据。最直接的办法就是直接连接到远程主机,然后测试主机是否可用或者是否有某个特殊服务正在运行。一般数据会在主机上,例如在存储器上空闲,或是正在被处理机使用,但是这些数据必须通过使用Nagios代理,SNMP,其他自定义脚本或程序,或是一个叫做check_by_ssh的Nagios插件来获得。check_by_ssh是一个标准插件,可以在远程主机上运行一个命令来收集输出。Nagios的配置都是通过一个基于文本的配置文件完成。主机和其他资源都被定义成块,可以从其他预先定义的块继承信息,可以得到更复杂的配置并且更易于管理。现在也有一些可用的第三方应用程序,可以提供一个web或其他GUI接口来帮助配置Nagios,但是在我们的工程中并没有对这些做测试。以下的这个配置块定义了一个叫做“linux-server”的主机模板。很多例如“24x7” 和 “workhours”的值实际上都是在Nagios的其他配置块中定义的。这就允许管理员为特定时期作定义,如“workhours”,同时还可以在配置的其他部分使用这个定义。
define host { name linux-server use generic-host check_period 24x7 max_check_attempts 10 check_command check-host-alive notification_period workhours notification_interval 120 notification_options d,u,r contact_groups admins register 0 } |
个人主机在配置块中定义,下面是一个叫做management的个人主机的配置例子。注意,这里的use声明是继承了前面提到的模板中已经定义的“linux-server”
define host { use linux-server ;Name of host template to use. host_name management alias Management Server address 10.197.173.100 } |
define hostgroup { hostgroup_name test alias Test Servers members localhost,management,www,rhel4-production2,network } |