10.5 基于Linux的集群监控系统
本书第5章对几个典型的集群系统搭建进行了详细讲解,一旦搭建好了集群系统并进入生产环境,就需要一套可视化的工具来监视集群系统,这将有助于我们迅速地了解机群的整体配置情况,准确地把握机群各个监控节点的信息,全面地察看监控节点的性能指标,使机群系统具有较高的管理性。监视系统的主要目标是从各个监控节点采集监控信息,如CPU温度、CPU利用率、用户数、进程数、内存利用率等,然后将获取的监控信息汇集起来,便于综合分析和处理,***根据分析和处理的结果做出相应的决策。本文以占用系统资源最少的、开放源代码的Ganglia为平台,详细讲解了如何搭建一个具有更高可靠性的集群监控系统。
Ganglia监控系统是由加州大学伯克利分校开发的,用于大规模的机群和分布式网格等高性能计算系统。基于XML技术的数据传递可以使系统的状态数据跨越不同的系统平台进行交互,采用简洁紧凑的XDR方式,实现监控数据压缩和传输"。Ganglia主要由gmetad和gmond两部分组成:
gmetad主要负责监控数据的汇集,每隔15秒会轮询gmond,并向下层节点发送和接收用户所需的监控信息,并对数据出错做出相应处理,***使用RRDtool将这些信息存储在数据库,并通过Apache Web服务器显示它收集的信息。
gmond则工作在每个集群节点上,主要负责监控节点信息的获取,相当于Ganglia的监视守护进程。
gmond主要负责监控节点信息的获取。首先,初始化gmond.conf文件配置项信息,同时分配监控信息存储空间。其次,调用ganglia_metric_cb_define("mem_total",mem_total_func),定义监控信息的采集项,"mem_total"表示信息采集项,mem_total_fun为信息采集函数,该采集函数从/proc中读取所需采集项信息,所有获取的监控信息以hash链表的形式存储。然后,在每个gmond节点上创建UDP通信的Socket端口,并调用connect建立各gmond节点间的通信通道,并启动监听进程process_udp_recv_channel,通过recvfrom接收其他各监控节点发来的监控信息。
Ganglia_udp_send_message通过调用write向各个监控节点发送监控信息,监控信息的传输采用XDR数据流格式,每个监控节点包含了区域内所有其他节点的监控信息,如图10.31所示。当更新周期到来时,各监控节点gmond将其获取的监控信息发给gmetad端。
【责任编辑:book TEL:(010)68476606】
点赞 0