Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1146131
  • 博文数量: 309
  • 博客积分: 6093
  • 博客等级: 准将
  • 技术积分: 3038
  • 用 户 组: 普通用户
  • 注册时间: 2008-02-03 17:14
个人简介

linux学习记录

文章分类

全部博文(309)

文章存档

2014年(2)

2012年(37)

2011年(41)

2010年(87)

2009年(54)

2008年(88)

分类:

2008-08-21 13:18:45

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

【51CTO.com独家特稿】关于系统易用性的管理,我将连续发表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就会知道该如何运行该命令。对新手来说,幸运的是,缺省样本配置文件已经为缺省插件提供了精确的定 义。如果你已经熟悉了命令是如何定义的,那么你就可以自己定义新命令或用户脚本了。

NRPE:NRPE是一个安装在远程主机上的Nagios远程插件执行程序(Nagios Remote Plugin Executor)。它能够代表Nagios服务器执行Nagios插件并返回结果。安装在服务器上的插件必须同时安装在远程主机上供NRPE使用。一个 叫做check_nrpe的新插件已经发布,用来查询来自Nagios服务器的NRPE daemon后台程序。NRPE利用一个访问控制系统来确定只有特定的Nagios主机可以连到NRPE客户机。下面的这条配置语句就使得只有这个特定的 主机可以和客户机通信:

allows_hosts=10.197.173.100

还可以通过配置NRPE,使它可以根据不同参数执行不同命令,尽管在文档中禁止这样做。默认时,NRPE只能运行特定的命令,这些命令的参数都在它 的配置文件中有明确声明(配置文件位于NRPE主机上)。意思就是,Nagios服务器只会让NRPE执行定义在远程主机的/etc/nrpe.cfg文 件中的命令,服务器可能不会传递命令或插件参数给代理机执行。下面是一个NRPE配置文件样本。特殊的命令(插件)和参数必须在这里声明。然后 Nagios服务器就可以请求NRPE来执行这里的一个或多个命令并返回结果:

command[check_users]=/usr/local/nagios/libexec/check_users –w 5 –c 10
command[check_load]=/usr/local/nagios/libexec/check_load –w 15,10,5 –c 30,25,20
command[check_disk_root]=/usr/local/nagios/libexec/check_disk –w 20 –c 10 –p /dev/sda1
command[check_zombie_procs]=/usr/local/nagios/libexec/check_procs –w 5 –c 10 –s Z
command[check_total_procs]=/usr/local/nagios/libexec/check_procs –w 150 –c 200

默认情况下,NRPE在自身主机和Nagios服务器之间使用SSL通信。SSL参数在编译时产生,并存储在NRPE资源树内部的C头文件中,文件 名是dh.h。该头文件用来编译NRPE daemon后台程序和check_nrpe插件。这就意味着如果想要使用SSL通信,那么NRPE daemon后台程序和check_nrpe插件就必须使用同样参数(来自同样资源树)进行编译

Ⅲ. Hyperic:Hyperic HQ是一个基于java的监控软件,由一个中心监控服务器和一个或多个远程代理组成,远程代理用来向服务器报告节点信息。Hyperic HQ支持多种平台,包括Linux,Solaris, Windows, HP-UX, AIX, Mac OS X 和FreeBSD。Hypeirc发布了该软件的两个版本:

1.一个遵循GNU GPL规范的开源版本

2.一个叫做HQ Enterprise的商业版本,它包括附加的组件和功能。

HQ Open Source和HQ Enterprise的特点比较
注意:介于开源和企业版之间的HQ 3.0可能会有所改变,详情请看:

Hyperic安装和配置:Hyperic HQ旨在能够快速安装并且能够容易配置。它通过命令行安装,并会提示系统管理员输入它成功运行所须的所有信息(管理员密码,数据库信息,等)。在安装的时 候选择-upgrade选项,可以很容易升级程序。Hyperic HQ提供一个web接口,用来向终端用户发送监控警告和状态信息。但是,和其他监控程序不一样,web接口也被用作该程序最初的配置接口。所有节点和代理 细节,度量(metric)选项和警告都将通过web接口进行正确配置。监控代理的安装方式与服务器类似,因为所有代理的配置都是在服务器上通过web接 口完成的,代理安装脚本所需的唯一信息就是用来登录服务器的登录信息,节点上安装代理文件的首选路径,以及很多其他零碎的信息(如服务器和代理运行的端口 号)。当代理成功地向服务器登记后,系统管理员就可以连接到web接口,然后添加新的要被监控的主机到它的监控列表中。Hyperic HQ服务器使用开源PostgreSQL数据库应用程序存储配置信息和监控数据。PostgreSQL封装在Hyperic HQ软件中,会随着系统的安装而自动安装并配置。也有人可能会选择一个已经存在的PostgreSQL或Oracle数据库,那么安装系统会提示管理员输 入有关数据库的信息,这样Hyperic HQ就可以连接到该数据库并使用它。默认情况下,Hyperic HQ会把它的信息存储到这个数据库里,但也可以通过配置使用外部可用的LDAP服务器。

自动发现:Hyperic HQ监控方案的一大特色就是它能自动定位和监控运行在远程节点的服务和daemon后台程序。一旦代理安装到远程节点,它就可以扫描各种已知服务,并把这 些服务添加到主机的目录里。一旦添加到这个目录里,那么就可以配置度量和警告程序来监控那些特殊服务。Hyperic支持两种扫描选项,自动扫描和文件扫 描。代理程序会默认定期运行“自动扫描”,它会为已知的服务器类型扫描程序列表。另外一种更广泛使用的扫描是“文件扫描”,它会搜索远程节点的文件系统, 然后定位已知的应用程序。因为这需要很长时间,而且占用很多资源,所以这种类型的扫描必须由系统管理员手动配置和规划。

警告(alerts)和通知:Hyperic HQ支持基于任何量度(metric)的警告配置,可以为任何运行在主机上的特殊资源(如主机本身)或服务配置警告。例如,当一个主机的资源可用性低于一 个预先设定的值,就可以触发一个警告。当一个警告被触发,可以发一封email到一个预先设定的email地址。根据警告的优先权,一个消息可能会被发送 到DashBoard(Hyperic HQ管理员前端)。Enterprise版本里有的很多高级通知选项,但HQ Open Source版本没有。HQ Enterprise还支持Recovery Alerts(恢复警告)的概念,这个概念用来取消和重新设置警告的触发。对于Open Source版本,当一个警告被触发的时候,该警告会连续被触发,直到问题解决或警告失效。Recovery Alerts允许管理员使一个活动警告失效,然后当问题解决后再重新让它有效。HQ Enterprise版本还支持发送SNMP包的通知选项

Hyperic HQ插件:Hyperic插件是以.jar或.xml文件格式发布的,可以在服务器和代理上进 行部署。可以通过安装插件来增强从特定应用程序或服务收集信息的能力,通过插件定位和增加一个新监控目录以及控制动作来控制特殊资源。Hyperic网站 提供关于插件发展的全面文档。开发和添加一个新插件与Nagios或其他监控程序相比似乎是一个更复杂的工作。Hyperic HQ提供的框架给出了高级APIs,通过APIs,插件可以在多种平台上查询信息。例如,在Windows上,Hyperic HQ提供一些类,插件可以使用这些类来访问Windows特殊数据和函数。这些函数提供对性能信息、注册数据、事件日志信息和服务控制管理器(SCM)的 有效访问。Hyperic HQ还支持基于脚本的简单插件,用这样的插件来制定特殊的度量规则。甚至是个人脚本或是Nagios脚本都可以被Hyperic HQ服务器和代理引入并配置使用。

SIGAR – System Information Gatherer And Reporter(系统信息收集报告器):SIGAR 是Hyperic HQ主要的数据收集组件。这个软件用来从许多平台收集系统和处理信息,这些平台包括:Linux, Windows, Solaris, AIX, HP-UX, FreeBSD and Mac OSX。SIGAR是用C语言编写的,但Hyperic提供C,C#,Java和Perl APIs,用来把SIGAR结合到它们的应用程序里。SIGAR组件遵循GNU GPL许可,与Hyperic监控代理分开发布,用于第三方应用程序。Sigar API 提供一个方便的接口来收集系统信息,如:

◆系统内存,页面交换,cpu,平均负载,运行时间,登录信息

◆每个进程占用的内存,cpu,帐号信息,状态,参数,环境,打开的文件

◆文件系统探测和度量

◆网络接口探测,配置信息和度量

◆网络路由和连接表

user@linux:~/hyperic-sigar-1.3.0.0>
; java -jar sigar-bin/lib/sigar.jar
Loaded rc file:
/home/user/hyperic-sigar-1.3.0.0/sigar-bin/lib/.sigar_shellrc
sigar> help
Available commands:
alias - Create alias command
cpuinfo - Display cpu information
df - Report filesystem disk space usage
du - Display usage for a directory recursively
free - Display information about free and used memory
get - Get system properties
help - Gives help on shell commands
ifconfig - Network interface information
iostat - Report filesystem disk i/o
kill - Send signal to a process
mps - Show multi process status
netinfo - Display network info
netstat - Display network connections
pargs - Show process command line arguments
penv - Show process environment
pfile - Display process file info
pinfo - Display all process info
pmodules - Display process module info
ps - Show process status
ptql - Run process table query
quit - Terminate the shell
route - Kernel IP routing table
set - Set system properties
sleep - Delay execution for the a number of seconds
source - Read a file, executing the contents
sysinfo - Display system information
test - Run sigar tests
time - Time command
ulimit - Display system resource limits
uptime - Display how long the system has been running
version - Display sigar and system version info
who - Show who is logged on
sigar>
SIGAR的命令行使用例子

这就是“监控”部分。还有很多我们曾接触过的工具,如Monit,Argus,Oprofile等,这里就不一一介绍了,如有什么问题请给予回复

原文地址:

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