1 ganglia集群监测系统简介
1.1 ganglia简介
ganglia是一款为HPC(高性能计算) 集群设计的可扩展性 的分布式监控系统,它可以监视和显示集群中节点的各种状态信息,他由运行在各个节点上的gmond守护进程来采集 CPU、内存、磁盘利用率、I/O负载、网络流量情况等方面的数据。然后汇总到gmetad守护进程下,使用rrdtool存储数据,然后将历史数据以曲线方式通过PHP页面呈现。(如下图)
Ganglia 核心组件由 gmond ;gmetad;gweb三个组成
Gmond:类似于传统监控系统中的代理,需要安装在每台主机上,负责和操作系统交互以获得需要关注的指标数据。
Gmetad:主要作用就是整合所有信息。
Gweb:可视化工具。显示ganglia收集的主机各项指标。
1.2 Ganglia系统运作原理说明
集群数据拓扑图
说明:
1:一个gmetad 可以会收集到下节点的gmond所采集的各个节点信息【绿色部分】。(单集群多节点原理)
2:单个gmond也满足收集下节点的gmond所采集的各个节点信息【浅蓝色部分】,那么一个gmetad也可以同时获取多个集群环境数据信息了。(多集群多节点原理)
2 ganglia系统安装部署
2.1 环境配置及说明
2.1.1 部署系统版本:centos7.3.1611 x86_64
镜像文件名称:
镜像文件下载地址:
http://isoredirect.centos.org/centos/7/isos/x86_64/CentOS-7-x86_64-DVD-1611.iso
2.1.2 防火墙配置
查看系统当前防火墙状态 systemctl status firewalld.service
这里我们需要将防火墙关闭
关闭当前防火墙 systemctl stop firewalld.service
查看一下当前防火墙状态systemctl status firewalld.service
禁止防火墙开机启动 systemctl disable firewalld.service
查看一下当前防火墙状态systemctl status firewalld.service
2.1.3 Selinux配置
禁止selinux 服务
[root@localhost ~]# vim /etc/selinux/config
这里需要重启才能生效,
临时关闭方法:
[root@localhost ~]# setenforce 0 #无需重启关闭selinux
2.2 主节点部署
2.2.1 在线安装依赖软件组包(推荐)
由于gmetad , gmond 组件依赖很多软件,缺失或版本对应不上会导致各类问题,比较头疼。所以强烈建议在线安装相关依赖软件的最新版本。
依赖包组在线下载
[root@localhost ~]#yum -y install apr-devel apr-util check-devel cairo-devel pango-devel libxml2-devel rpm-build glib2-devel dbus-devel freetype-devel fontconfig-devel gcc gcc-c++ expat-devel python-devel libXrender-devel
[root@localhost ~]# yum install -y libart_lgpl-devel pcre-devel libtool
[root@localhost ~]# yum install -y libart_lgpl-devel pcre-devel libtool
2.2.2 安装gmetad,gmond
先要制作一个最简单的epel第三方yum安装配置:
[root@localhost ~]# vi /etc/yum.repos.d/epel.repo
加入以下信息 保存退出
[epel]
name=CentOS-$releasever - Epel
baseurl=http://dl.fedoraproject.org/pub/epel/$releasever/$basearch/
gpgcheck=0
保存退出
[root@localhost ~]#yum install libconfuse libconfuse-devel –y
下载最新ganglia组件安装包
[root@localhost ~]# cd /mnt/
[root@localhostmnt]#wget https://sourceforge.net/projects/ganglia/files/ganglia%20monitoring%20core/3.7.2/ganglia-3.7.2.tar.gz
查看当前目录
[root@localhost mnt]# tar zxf ganglia-3.7.2.tar.gz
[root@localhost mnt]# cd ganglia-3.7.2/
[root@localhost
ganglia-3.7.2]# rpmbuild -tb
/mnt/ganglia-3.7.2.tar.gz
# -tb表示从tar包中build二进制文件
[root@localhost ganglia-3.7.2]# cd /root/rpmbuild/RPMS/x86_64/
[root@localhost ganglia-3.7.2]# ll
[root@localhost x86_64]# rpm -ivh /root/rpmbuild/RPMS/x86_64/*
2.2.3 安装gweb
[root@localhost x86_64]# yum install httpd httpd-devel php –y
[root@localhost x86_64]# yum -y install rsync
[root@localhost x86_64]# cd /mnt/
[root@localhostmnt]#wget https://sourceforge.net/projects/ganglia/files/ganglia-web/3.7.2/ganglia-web-3.7.2.tar.gz
[root@localhost mnt]# tar zxf /mnt/ganglia-web-3.7.2.tar.gz -C /var/www/html/
[root@localhost mnt]# cd /var/www/html/
[root@localhost html]# mv ganglia-web-3.7.2 ganglia
[root@localhost html]# cd /var/www/html/ganglia /
[root@localhost ganglia-web-3.7.2]# make install
2.2.4 启动各个服务调试主节点
启动gmond 服务
[root@localhost ganglia-web-3.7.2]# systemctl restart gmond.service
[root@localhost ganglia-web-3.7.2]# systemctl status gmond.service
启动gmetad 服务
[root@localhost ganglia-web-3.7.2]# systemctl restart gmetad.service
[root@localhost ganglia-web-3.7.2]# systemctl status gmetad.service
启动gweb 服务
[root@localhost ganglia-web-3.7.2]# systemctl restart httpd.service
[root@localhost ganglia-web-3.7.2]# systemctl status httpd.service
这里提示未正确配置
解决方法如下:
一、将ganglia-web 生成一个软链接
[root@localhost ~]# ln -s /var/lib/ganglia /var/lib/ganglia-web
二、将软链接目录下创建 compiled ; cache 两个目录
[root@localhost ~]# mkdir -p /var/lib/ganglia-web/ /{compiled,cache} –p
三、赋予ganglia目录 apache 用户权限,保证httpd服务可以访问ganglia
[root@localhost ~]# chown -R apache:apache /var/lib/ganglia
四、赋予ganglia-web目录 apache 用户权限,保证httpd服务可以访问ganglia
[root@localhost ganglia]# chown -R apache:apache /var/lib/ganglia-web/*
五、修改gmetad.conf配置文件
由于gmetad默认配置文件访问本地路径为localhost ;经查阅发现, gmetad服务启动后会无法识别localhost 或者 127.0.0.1 ,且默认用户为nobaby ;这里我们需要做下更改配置。
[root@localhost default]# vi /etc/ganglia/gmetad.conf
将“localhost” 修改为 本地机的IP 如:192.168.1.25
将默认用户取消注释,“nobaby” 用户统一修改为“apache”
保存退出
六、重启各个服务
systemctl restart gmond.service
systemctl restart gmetad.service
systemctl restart httpd.service
再次访问http://192.168.1.25/ganglia
这里我们就可以看到主节点对本机的图形化监测数据了。
2.3 子节点部署
子节点同样需关闭系统防火墙及selinux服务;具体操作参考 环境配置及说明
2.3.1 在线安装依赖软件组包(推荐)
gmond依赖软件下载
[root@localhost ~]# yum -y install apr-devel apr-util check-devel cairo-devel pango-devel libxml2-devel rpm-build glib2-devel dbus-devel freetype-devel fontconfig-devel gcc gcc-c++ expat-devel python-devel libXrender-devel
制作一个最简单的epel第三方yum安装配置:
[root@localhost ~]# vi /etc/yum.repos.d/epel.repo
加入以下信息 保存退出
[epel]
name=CentOS-$releasever - Epel
baseurl=http://dl.fedoraproject.org/pub/epel/$releasever/$basearch/
gpgcheck=0
[root@localhost ~]# yum install libconfuse libconfuse-devel –y
2.3.2 客户端安装包一键安装
节点软件目录:
将节点部署包上传至节点系统上 /root/jiedian 目录下
创建存放目录
[root@localhost ~]# mkdir -p /root/jiedian
上传安装包
客户端安装包一键全部安装
[root@localhost jiedian]# rpm -ivh *.rpm
节点安装部署就已经完成,我们进入下一步的配置工作
3 Ganglia系统配置
3.1 Ganglia配置说明
Ganglia的收集数据工作可以工作在单播(unicast)或多播(multicast)模式下,默认为多播模式。
单播:发送自己收集到的监控数据到特定的一台或几台机器上,可以跨网段。
多播:发送自己收集到的监控数据到同一网段内所有的机器上,同时收集同一网段内的所有机器发送过来的监控数据。因为是以广播包的形式发送,因此需要同一网段内。但同一网段内,又可以定义不同的发送通道。
3.2 单播配置
单播模式下,Ganglia需要向每台服务器均发送一次轮询请求,这样的话,集群数量多了,主服务器光发送就会占用不小的带宽。但是单播模式也有其好处,在服务器分组,或跨网段的情况下,必须用单播模式。
3.2.1 单个集群多节点配置
网络拓扑图
ü 主节点配置
主节点gmetad服务配置
[root@localhost default]# vi /etc/ganglia/gmetad.conf
在启动各个服务调试主节点 章节中我们已经做了一些配置:
1 : data_source "my cluster" 192.168.1.25 //localhost 改了部署主节点服务的IP
2: setuid_username "apache" // 取消了改行注释;将默认的nobaby 用户改为apache 便于httpd服务访问ganglia
这里重点讲解一下 data_source "my cluster" 192.168.1.25
data_source属性是gmetad配置的核心。每一行data_source描述一个gmetad收集信息的gmond集群或gmetad网格。
"my cluster"为唯一标识,指定所属集群名称
192.168.1.25主节点IP; 为去哪个节点的哪个端口去收集这个集群的gmond汇聚数据,多主机间用空格隔开。定义多主机的话,如果第一个从第一个主机上没有收集到数据就会去第二个主机上收集。如:data_source "my cluster" 192.168.1.20 192.168.1.25
端口号未自定义时默认为8649;这里未填写默认就是8649。
这里我们配置一套 集群名为 test 的单集群多节点,同时检测192.168.1.20;192.168.1.169;192.168.1.160;192.168.1.71 等子节点
data_source "test" 192.168.1.20
主节点gmond服务配置
[root@localhost default]# vi /etc/ganglia/ gmond.conf
ü 子节点配置
子节点服务配置gmetad服务配置;如192.168.1.169
[root@localhost default]# vi /etc/ganglia/ gmond.conf
同样的方法配置其他子节点gmond 服务
ü 启动服务调试
启动各个子节点gmond服务
systemctl restart gmond.service
启动主节点gmond;gmetad.;httpd服务
systemctl restart gmond.service
systemctl restart gmetad.service
systemctl restart httpd.service
访问 主节点IP/ganglia
3.2.2 多个集群多节点配置
ü 网络拓扑图
ü 主节点配置
vi /etc/ganglia/gmetad.conf
同时检测两个集群 test ; zheng2
这里我们可以看到监测来源 一个是 192.168.1.20 ;另一个是 192.168.1.25
ü 子集群配置
根据前面的配置,我们只需要配置单个子集节点zheng2集群192.168.1.25,将192.168.1.25上的数据统一传给192.168.1.20即可,这样在192.168.1.20上也可以看到192.168.1.25集群上的所有数据。
进入192.168.1.25服务器配置gmond.conf文件
[root@localhost default]# vi /etc/ganglia/ gmond.conf
ü 启动服务调试
启动子集群主节点IP:192.168.1.25 gmond服务
systemctl restart gmond.service
启动主节点IP:192.168.1.20 gmond;gmetad.;httpd服务
systemctl restart gmond.service
systemctl restart gmetad.service
systemctl restart httpd.service
分别查看各个集群内子节点
Test集群
Zheng2集群
3.3 组(多,广)播配置
Ganglia默认采用组播模式(多播模式)进行数据请求。gmetad发送一个请求到一个组播地址(239.2.11.71),由于是组播地址,所以gmetad只需发送一次请求包即可完成对所有gmond的轮询。gmond收到请求后将采集到的数据返回给gmetad。
由于ganglia默认安装时就是组播状态;主节点与子节点配置起来也相对比较简单
默认安装后gmond.conf文件
网络拓扑图
ü 主节点配置
主节点IP:192.168.1.20
[root@localhost ganglia]# vi /etc/ganglia/gmetad.conf
[root@localhost default]# vi /etc/ganglia/gmetad.conf
这里有最重要的一步:将239.2.11.71加到主节点组播的本地路由上,便可以采集到所有的节点信息
查看一下当前使用的网卡
[root@localhost ganglia]# ifconfig
执行
[root@localhost ganglia]# ip route add 239.2.11.71 dev ens32
ü 子节点配置
子节点IP:192.168.1.25
[root@localhost default]# vi /etc/ganglia/gmetad.conf
ü 启动服务调试
启动192.168.1.25子节点gmond服务
systemctl restart gmond.service
启动192.168.1.20主节点gmond;gmetad.;httpd服务
systemctl restart gmond.service
systemctl restart gmetad.service
systemctl restart httpd.service
访问 主节点192.168.1.20/ganglia
这里发现广播配置下集群名称未能有效区分。这里将192.168.1.25子节点也归类到了主节点所定义的集群中
4 Ganglia系统设置开机自启
4.1 主节点配置
[root@localhost jiedian]# vi /etc/rc.d/rc.local
加入以下信息
systemctl restart gmond.service >> /root/jiedian/gmond.log
systemctl restart gmetad.service >> /root/jiedian/gmetad.log
systemctl restart httpd.service >> /root/jiedian/httpd.log
保存退出
4.2 子节点或集群主节点配置
[root@localhost jiedian]# vi /etc/rc.d/rc.local
加入以下信息
systemctl restart gmond.service >> /root/jiedian/gmond.log
保存退出
5 FAQ
5.1 Ganglia-web访问,目标节点采集不到信息
查看目标监测节点防火墙,selinux服务是否已关闭
解决方法参考 防火墙配置