Chinaunix首页 | 论坛 | 博客
  • 博客访问: 103725391
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类: LINUX

2008-04-26 15:29:18

作者: Kishi Malhotra 出处:  
 
阅读提示:这是有关系统易管理性的第5篇文章,介绍有一些系统监控工具,主要是分析这些工具的内部工作机制,从而让大家能更好的理解系统监控所做的事情到底是什么。

关于系统易用性的管理,我将连续发表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:

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
Ⅱ. NAGIOS:Nagios是一个通过网络来监控远程主机和应用程序的系统监控程序。该应用程序提供一个基于网络的图形显示,允许用户观察节点状态和运行在节点上的应用程序。以下是从Nagios文档中摘录出的Nagios的特征描述:Nagios的一些特征包括:

◆监控网络服务(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
}
Nagios主机定义模板

个人主机在配置块中定义,下面是一个叫做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
}
最后,为了更好的管理,主机可能会被组织成逻辑的组。下面的例子定义了一个包含5个主机的主机组。
define hostgroup  {
   hostgroup_name test
   alias       Test Servers
   members   localhost,management,www,rhel4-production2,network
}
Nagios的发布形式是大量类别的插件,用来获得数据或是检查一个特定服务。插件就是一些独立的包,必须要和服务器以及代理(如果要使用代理)一起安装。Nagios插件是简单的单机执行程序,每一个都完成一个特殊的任务并为每个服务或是被测试的子系统返回一个结果。因为插件是独立脚本或是二进制程序,所以它通常都会接受不同的参数来改变运行方式和返回的结果信息。每一个插件的具体使用都必须在配置文件中用define command语法分别定义。有些插件接受多个选项,这样当需要为某个特殊系统写配置文件的时候就可以用户化定制该插件。define command定义提供一种使用模板,这样Nagios就会知道该如何运行该命令。对新手来说,幸运的是,缺省样本配置文件已经为缺省插件提供了精确的定义。如果你已经熟悉了命令是如何定义的,那么你就可以自己定义新命令或用户脚本了。

阅读(647) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~