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

访问http://192.168.1.25/ganglia

这里提示未正确配置

解决方法如下:

一、将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

访问http://192.168.1.20/ganglia

分别查看各个集群内子节点

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服务是否已关闭

解决方法参考 防火墙配置

ganglia 一站式部署的更多相关文章

  1. 高可用Hadoop平台-Ganglia安装部署

    1.概述 最近,有朋友私密我,Hadoop有什么好的监控工具,其实,Hadoop的监控工具还是蛮多的.今天给大家分享一个老牌监控工具Ganglia,这个在企业用的也算是比较多的,Hadoop对它的兼容 ...

  2. 基于Ubuntu18.04一站式部署(python-mysql-redis-nginx)

    基于Ubuntu18.04一站式部署 Python3.6.8的安装 1. 安装依赖 ~$ sudo apt install openssl* zlib* 2. 安装python3.6.8(个人建议从官 ...

  3. ganglia监控部署

    1.ganglia组件 ganglia 相比于falcon和zabbix主要在于集群的状态集中显示,可以很便捷的对比各主机的性能状态. gmond:相当于是agent端,主要用于收集各node的性能状 ...

  4. CentOS下ganglia监控部署

    第一步:CentOS环境准备 1.yum -y install apr-devel apr-util check-devel cairo-devel pango-devel libxml2-devel ...

  5. Rio手把手教学:如何打造容器化应用程序的一站式部署体验

    11月19日,业界应用最为广泛的Kubernetes管理平台创建者Rancher Labs(以下简称Rancher)宣布Rio发布了beta版本,这是基于Kubernetes的应用程序部署引擎.它于今 ...

  6. ganglia 客户端部署

    #!/bin/bash #配置参数 #serverIP=192.168.1.16 #network=ens32 #关闭selinux #setenforce #sed -i 's/SELINUX=en ...

  7. Github+Hexo一站式部署个人博客(原创)

    写在前面 注:博主 Chloneda:个人博客 | 博客园 | Github | Gitee | 知乎 本文源链接:https://www.cnblogs.com/chloneda/p/hexo.ht ...

  8. iNeuOS工业互联网操作系统部署在华为欧拉(openEuler)国产系统,vmware、openEuler、postgresql、netcore、nginx、ineuos一站式部署

    目       录 1.      概述... 3 2.      创建虚拟机&安装华为欧拉(openEuler)系统... 4 2.1           创建新的虚拟机... 4 2.2  ...

  9. Docker:Swarm + Stack 一站式部署容器集群

    参考1 参考2 1.注意docker的版本,yum默认安装的版本比较低,可能出现 unsupported Compose file version: 3.7 docker版本升级 2.docker-c ...

随机推荐

  1. PHP 输出XML字符串

    <?php echo htmlentities( $xml_string);?>

  2. 第二篇 Flask的Response三剑客及两个小儿子

    一.Response三剑客 (一)Flask中的HTTPResponse @app.route("/") #app中的route装饰器 def index(): #视图函数 ret ...

  3. 2018.8.8 python 初识函数

    主要内容: 1.函数定义 2.函数名,函数体以及函数的调用 3.函数的返回值 4.函数的参数 一.函数的定义 函数:对代码块和功能的封装和定义. 二.函数名.函数体及函数的调用 我们使用def关键字来 ...

  4. 《Effective Java》 读书笔记(八)避免使用Finalizer和Cleaner机制

    Finalizer和Cleaner并不等同于C++中的析构函数,是不确定多久会被调用的,甚至有时候可能不会被调用,因此除了作为一个安全网或者终止非关键的本地资源,不应该在Finalizer或Clean ...

  5. [2018-01-12] laravel--ORM

    建立模型 <?php namespace App; use Illuminate\Database\Eloquent\Model; class Student extends Model { / ...

  6. LNMP下zabbix_server安装部署二

    上一篇中搭建完成了zabbix的web端,但是虚拟机有点问题,所以转到笔记本上来写笔记本环境 server:192.168.112.9 agent:192.168.112.8 ​ 上一篇中完成了web ...

  7. AtCoder Grand Contest 036D - Negative Cycle

    神仙题?反正我是完全想不到哇QAQ 这场AGC真的很难咧\(\times 10086\) \(\bf Description\) 一张 \(n\) 个点的图,\(i\) 到 \(i+1\) 有连边. ...

  8. Java高性能反射工具包ReflectASM

    ReflectASM 使用字节码生成的方式实现了更为高效的反射机制.执行时会生成一个存取类来 set/get 字段,访问方法或创建实例.一看到 ASM 就能领悟到 ReflectASM 会用字节码生成 ...

  9. PHP判断数组下标有没有存在的方法

    PHP判断数组下标有没有存在的方法<pre>if(!empty($token['errcode'])){ print_r($token['errmsg']); exit();}</p ...

  10. 130道ASP.NET面试题(一)

    1 .简述 private,protected,public,internal修饰符的访问权限 答: private : 私有成员, 在类的内部才可以访问. protected : 保护成员,该类内部 ...