Ganglia集群监控系统搭建

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yu132563/article/details/85168678

前段时间自己用两台工作站搭建了一个MPI的运行环境,那如何直观的看到每个节点的负载情况呢,于是就想到了用Ganglia搭建一个集群检测系统,相对比较简单,下面详细介绍一下过程

1、Ganglia概述

Ganglia 是一款为HPC(高性能计算) 集群设计的可扩展性的分布式监控系统,它可以监视和显示集群中节点的各种状态信息,它由运行在各个节点上的守护进程gmond 采集 CPU、内存、磁盘利用率、I/O负载、网络流量情况等方面的数据,然后汇总到守护进程gmetad下,使用rrdtool存储数据,然后将历史数据以曲线方式通过PHP页面呈现,通过曲线很容易见到每个节点的工作状态,对合理调整、分配系统资源,提高系统整体性能起到重要作用。

Ganglia监控的三大组件:gmond,gmetad和ganlia-web(网页接口) 。 
1:gmond:是一个守护进程,需要安装在每台主机上,负责和操作系统交互以获得需要关注的指标数据,运行在每一个需要监测的节点上,收集监测统计 。 
2:gmetad:也是一个守护进程,集群数据收集节点,安装在中心节点上,使用Hadoop的NameNode作为该集群数据收集节点。主要作用就是整合所有信息。定期检查所有的gmond,拉取数据,并将他们的指标存储在RRD(Round Robin Database 存储格式,数据等于放在数据库中)存储引擎中。他可以查询多个集群并聚合指标。他也被用于生成用户界面的web前端。 
3:ganglia-web:可视化工具,显示ganglia收集的主机各项指标。安装在有gmetad运行的机器上,读取RRD文件( gweb是一种PHP程序,因为需要与轮询器创建的RRD数据库交互,所以gweb通常安装在和gmetad相同的物理硬件上)。

Ganglia分为服务器端和客户端,其中gmetad是服务器端,gmond是客户端。服务器端只有一个,而被监控服务器均安装客户端;
首先配置好源(我用的是Centos7.0版本linux系统),比如epel,centos-base等需要提前配置好,不懂的哥们可以网上查一下,比较简单,这里就不再赘述了。如果已经Hadoop集群管理环境,那么就不用安装了,因为Hadoop中已经集成了Ganglia。

由于我这里只有两台工作站,而且只是简单的用网线进行直连,服务器名和IP分别为:

Ganglia服务器  master(192.168.10.250)

Ganglia客户机 slave(192.168.10.252)

对于服务器需要安装 ganglia-gmetad ganglia-web  ganglia-gmond

客户机只需要安装ganglia-gmond软件包

Linux用yum进行安装比较简单,分别在客户机、服务器上安装相对应的包,安装完成后需要对相应的文件进行配置,具体如下

gmetad.conf 配置监控哪些机器的文件。 

ganglia 服务器端

httpd.conf服务器端
gmond.conf 配置受监控机器文件

对于服务器端gmetad.conf 的配置如下

文件内容如下

其中data_source可以如上方式写,也可以写成一个,如:data_source "Master" 192.168.10.250:8650 192.168.10.252:8651,两者的不同之处在于,(Ganglia会把所有东西放在一个Grid里面,也就是一个网格。大的集群,不分组。但是真实的服务器集群有各种功能,每个群分管不同的事务,全放一起就太乱了。也不好识别,所以需要分组使用。引自:https://blog.csdn.net/wang1459818864/article/details/38677771)。个人认为在节点不多的情况下,分组是必要的,如果是一个很大的集群,那确实没有必要,主要是太麻烦。其中要说明的是IP地址冒号后面的那个数字是端口号,需要分组的时候每个数据源的端口号一定要不一样,这里我的数据源有两个,所以就有两个端口号。

下面还需要配置服务器端的ganglia.conf文件

改成如下形式

httpd.conf文件的配置

配置如下

还有最后一个服务器端的文件gmond.conf

主要是修改以下几个地方

注意此处的name一定要与前面gmetad.conf 文件中的相同,同理在配置slave时也是一样的。

这三处的port即端口号一定是与IP地址冒号后面的端口号一样,否则回来在网页上是登陆不进去的,master的端口是8650。

下面来配置slave上的gmetad.conf 文件

如配置master一样配置就好了,这里就不多说了。

下面要分别在master和slave上面开启服务,具体命令如下:

服务器端运行命令

service gmetad start

service gmond start

service httpd start

service gmetad status

客户机运行命令

service gmetad status

设置开机自启

chkconfig gmetad on

chkconfig gmond on

systemctl enable httpd.service

这样就设置完成了,最后可以通过浏览器进行登陆,登陆方法为:

http://IP/ganglia

即可看到每个节点的运行状态。

存在问题:

安装完成后可能浏览器登陆出现如下问题:

http://192.168.10.250/ganglia

There was an error collecting ganglia data (127.0.0.1:8652): fsockopen error

#查了导致整个报错的原因是linux集群位关闭selinux
#我们可以使用setenforce 命令设置临时关闭selinux,命令如下
setenforce 0

#也可以一劳永逸的改变配置文件彻底关闭selinux,执行下面的命令修改配置
vi /etc/selinux/config
将SELINUX=enforcing改为SELINUX=disabled,保存重启即可

可参见:https://blog.csdn.net/qq_41698979/article/details/83246690

最后赴图一张,装一下:

就介绍到这里,欢迎大家提出宝贵意见。

参考文献

https://blog.csdn.net/dear_csdn/article/details/76528750​​​​​​​

猜你喜欢

转载自blog.csdn.net/yu132563/article/details/85168678