电脑技术学习

Linux操作系统高性能集群监控管理之道

dn001

监控阶段

集群监控主要消耗CPU周期与网络带宽这两个重要资源。然而,资源消费问题与这两个资源是根本不同的。CPU利用问题对结点而言是完全本地化的问题,可通过创建有效的收集与合并算法来解决。网络带宽是共享资源,是规模问题,可以通过最小化网络上传输的数据量来解决。

为了解决这两个问题,我们将集群监控分为三个阶段:收集、合并、传输。收集阶段负责从操作系统装载数据、分析数据值,并存储数据。合并阶段负责将来自多个数据源的数据合在一起,决定数据值是否改变并过滤它们。传输阶段负责压缩并传输数据。本文集中讨论Linux集群监控的收集阶段。

1.收集阶段

Linux有几种方法来进行系统统计,每种方法都各有其优缺点。

◆ 使用现有的工具

标准及非标准工具能执行一个或多个收集、合并及传输阶段,如rstatd或SNMP工具,然而标准的rstat后台程序提供的信息是有限的,速度慢而且效率低。

◆ 内核模块

几个系统监控工程利用内核模块来存取监控数据。一般情况下,这是很有效的收集系统数据的方法。然而这种方法存在的问题是,当主内核源内有其它改变时,必须保持代码一致性。一个内核模块可能与用户想使用的其它内核模块相冲突。此外,在使用监控系统之前,用户必须获得或申请模块。

◆ /proc虚拟文件系统

/proc 虚拟文件系统是一个较快的、高效率执行系统监控的方法。使用/proc的主要缺点是必须保持代码分析与/proc 文件格式改变的同步。事实表明,Linux内核的改变比/proc 文件格式的改变要更频繁,所以,用/proc虚拟文件系统比用内核模块存在的问题要少。

◆ 混合系统

某些监控系统采用混合方式,用内核模块收集数据,用/proc虚拟文件系统作为数据接口。

2.合并阶段

合并阶段的实现可以在结点上、集群管理的主机上,或者分布在两者上。考虑到效率,我们只采用在结点上的合并。原因在于结点是监控数据的收集器与提供者。两个或多个同时的数据请求不会引起两次操作系统调用来收集数据,而是将第一次请求获得的数据缓存,并可以提供给第二次请求调用。这种方法减少了操作系统的负担,提高了监控系统的响应性。合并阶段也可以用于将多个数据源的数据以相互独立的收集速率结合,因为并不是所有的数据都以同样的速度改变,或者需要以同样的速率收集。

标签: linux