◆ /proc虚拟文件系统
/proc 虚拟文件系统是一个较快的、高效率执行系统监控的方法。使用/proc的主要缺点是必须保持代码分析与/proc 文件格式改变的同步。事实表明,Linux内核的改变比/proc 文件格式的改变要更频繁,所以,用/proc虚拟文件系统比用内核模块存在的问题要少。
◆ 混合系统
某些监控系统采用混合方式,用内核模块收集数据,用/proc虚拟文件系统作为数据接口。
2.合并阶段
合并阶段的实现可以在结点上、集群管理的主机上,或者分布在两者上。考虑到效率,我们只采用在结点上的合并。原因在于结点是监控数据的收集器与提供者。两个或多个同时的数据请求不会引起两次操作系统调用来收集数据,而是将第一次请求获得的数据缓存,并可以提供给第二次请求调用。这种方法减少了操作系统的负担,提高了监控系统的响应性。合并阶段也可以用于将多个数据源的数据以相互独立的收集速率结合,因为并不是所有的数据都以同样的速度改变,或者需要以同样的速率收集。
使用在结点层上合并的另一个原因是,减少了包括传输在内的信息量。许多/proc文件既包含动态数据也包含静态数据。删除最近一次传输后没有改变的值,一个结点发送的数据量可以大大地减少。合并不仅除去了不经常改变的动态值的传输,也解决了从不改变的静态值的传输。
3.传输阶段
监控数据几乎总是按一个层次结构组织起来。传输阶段的任务就是将层次数据进行有效的编码,形成一种能高效传输的数据格式。Java拥有的文件格式是存储层次数据的有效方法,并且用提供的Java APIs很容易完成。S-Expressions已经被认为是传输这种数据的另一个有效的方法。
关于传输监控数据普遍讨论的问题是,数据应该按二进制编码还是按文本格式编码。二进制数据更容易压缩,因此也能更有效地传输。但是,当采用/proc文件系统时,监控数据通常以人们易读的格式存储。在传输之前,将数据转换为二进制格式将需要更多的处理资源与时间。以文本格式保留收集的数据,结点资源能被用于更多非监控性的相关工作。
采用文本格式的数据将提供如下额外的益处:
◆ 平台独立性
当监控异构集群时,机器之间数据字节指令的配置不是永远相同的。文本格式的使用在代码方面解决了这个问题,而且体系结构独立不会影响更多的处理需求。
◆ 易读的格式
文本数据能以人们易读的格式进行组织。如果需要的话,这种特征能容易地进行程序调试或允许用户观看数据流。
◆ 有效压缩
数值数据的文本表示由来自10个字节集中的字符组成,而不是二进制下的256个字节集。它们产生的数字及模式的相对频率允许有效地使用基于压缩算法的字典及熵(平均信息量)。
/proc虚拟文件系统
/proc虚拟文件系统(也叫procfs)是Unix操作系统所使用的虚拟文件系统的Linux实现,包括Sun Solaris、LinuxBSD。在/proc开始时,它以一个标准文件系统出现,并包含与正在运行的进程IDs同样名字的文件。然而,在/proc中的文件不占用磁盘空间,它们存在于工作存储器(内存)中。/proc最初的目的是便于进程信息的存取,但是现在,在Linux中,它可被内核的每一部分使用来报告某些事情。
在/proc文件系统提供的成百上千的值当中,我们将集中考虑集群监控所需的最小集,它们包括:
◆ /proc/loadavg:包含系统负载平均值;
◆ /proc/meminfo:包含存储管理统计量;
◆ /proc/net/dev:包含网卡度量;
◆ /proc/stat:包含内核统计量;
◆ /proc/uptime:包含总的系统正常工作时间及空闲时间。