一、简介
Ganglia 由 gmond、gmetad 和 gweb 三部分组成
gmond(Ganglia Monitoring Daemon)是一种轻量级服务,可以勉强比作传统监控系统中的“代理(agent)”
软件。安装在每台需要收集指标数据的节点主机上。gmond 在每台主机上完成实际意义上的指标数据收集工作,
并通过侦听/通告协议和集群内其他节点共享数据。使用 gmond,你可以很容易收集很多系统指标数据,如 CPU、
内存、磁盘、网络和活跃进程的数据等。
gmetad(Ganglia Meta Daemon)是一种从其他 gmetad 或 gmond 源收集指标数据,并将其以 RRD 格
式存储至磁盘的服务。gmetad 为从主机组收集的特定指标信息提供了简单的查询机制,并支持分级授权,使得创
建联合监测域成为可能。
gweb(Ganglia Web)gweb 是一种利用浏览器显示 gmetad 所存储数据的 PHP 前端。在 Web 界面中以图表方式展现集群的运行状态下收集的多种不同指标数据。
二、安装和配置
2.1、 安装 gmon nd d
(1) 在本地软件库中搜索 gmond 安装包:
# yum search ganglia-gmond
(2) 如果上一步没有搜到,需要在本地添加 rmp 资源(以 centos 为例)
①查看 linux 系统的版本信息
# cat /etc/redhat-release
②所以我们浏览器输入 http://mirror.ancl.hawaii.edu/linux/epel/ ,
找到下的 7 目录,然后点击 x86_64 ,一直往里面找,找到我们需要的 rpm 文件
# rpm -Uvh http://mirror.ancl.hawaii.edu/linux/epel/7/x86_64/Packages/e/epel-release-7-11.noarch.rpm
或者用一下这个路径都可以
# rpm -Uvh http://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/e/epel-release-7-11.noarch.rpm
(3)再次搜索,查看是否添加成功
# yum search ganglia-gmond
(4)如果搜索到了,我们就可以安装 gmond 了
# sudo yum install ganglia-gmond
2.2 、 安装 gmetad
(1)在本地软件库中搜索 gmetad 安装包:2.3 、 安装 gweb
# yum search ganglia-gmetad
因为在安装 gmond 时已经加载了 ganglia 的 rmp 源,所以这里直接可以搜到
(2)直接安装 gmetad
# sudo yum install ganglia-gmetad
Ganglia 3.4.0 的 Web 接口是一个独立的发布包,其源代码库也独立的。
Gweb 发行周期和版本号与 Ganglia gmond 和 gmetad 守护进程的发型周期和版本号不再一致。
(1)安装 Apache 和 PHP
# yum install httpd php
执行完之后会发现安装了一下
用户需要启用 PHP 的 JSON 扩展,JSON 已经包含在 PHP 5.2 及更新版本中。
通过检查/etc/php.d/json.ini 文件来检查 JSON 扩展的状态,如果已经启用 JSON 扩展,
在该文件中应该包含类似下面语句的内容:
extension=json.ini
(2)下载最新版本的 gweb
访问 https://sourceforge.net/projects/ganglia/files/gweb/
显示当前 gweb 最新版本是 3.7.2
下载
# wget https://sourceforge.net/projects/ganglia/files/ganglia-web/3.7.2/ganglia-web-3.7.2.tar.gz
(3)解压刚下载的 gweb
# tar -zxvf ganglia-web-3.7.2.tar.gz -C /opt/
# cd /opt/ganglia-web-3.7.2
(4)编译 Makefile
编辑一些用户默认的配置
# vim Makefile
找到一下内容修改为
注意:GDESTDIR 和 APACHE_USER 要与 APACHE 的配置文件(/etc/httpd/conf/httpd.conf)GDESTDIR = /var/www/html/ganglia2 APACHE_USER = apache
中的 DocumentRoot 、 user 保持一致
(5)开始编译 Makefile
# make install
如果没有提示错误,那么说明 gweb 就安装成功啦。
2.4、状态检查 和 启动
(1)检查 httpd 是否启动
# service httpd status
(2)启动 httpd
# service httpd start
(3)检查 gmetad 是否启动
# service gmetad status
(4)启动 gmetad
# service gmetad start
(5)检查 gmond 是否启动
# service gmond status
(6)启动 gmond
# service gmond start
2.5 、关闭 SEL inux
(1)查看 SELinux 状态
# getenforce 或者 # sestatus
如果显示 Disabled,表示已经关闭了 selinux
(2)关闭 SELinux# vi /etc/selinux/config
#SELINUX=enforcing SELINUX= disabled
三、访问 Ganglia 监控平台
在浏览器中输入
http://${your.server.ip}/ganglia2/
目录“/ganglia2”可以在 ganglia-web 的 Makefile 文件中 GDESTDIR 被修改,修改后需要重新编译
四、集群的监控
Gmond 安装在每台需要检测的主机上。Gmond 通过与主机操作系统交互获取指标数据,并与同一集群内的其
他主机共享数据。
Gmetad 是一种安装在主机上用来收集和汇聚 gmond 所收集的指标数据的守护进程。gmetad 默认使用 RRD 文
件收集和汇聚指标数据。通过 tcp 端口 8651 侦听远程 gmetad 连接;它也通过 tcp 端口 8652 对交互式请求做出应
答。
当前整个集群为(1 ) 各 节点的安装
ServerName Hadoop Cluster Zookeeper HBase Cluster node1 NameNode & ResourceManager
SecondaryNameNodeyes master & Region server node2 DataNode & NodeManager yes Region server node3 DataNode & NodeManager yes Region server
主节点(确保已经安装了这几个,如果就安装)yum install ganglia-gmondyum install ganglia-gmetadyum install ganglia-develyum install httpd phpyum install -y rrdtool从节点rpm -Uvh http://mirror.ancl.hawaii.edu/linux/epel/7/x86_64/Packages/e/epel-release-7-11.noarch.rpmyum install ganglia-gmond
(2 )配置 gmond.conf
# vi /etc/ganglia/gmond.conf
主节点配置
监控节点配置1. cluster { 2. name = "bigdata_cluster" 3. ... 4. } 5. udp_send_channel { 6. # the host who gather this cluster's monitoring data and send these data to gmetad node 7. #注释掉多播模式的,以下出现这个都要注释掉 8. #mcast_join = 239.2.11.71 9. #添加单播模式的 10. host = node1 11. port = 8649 12. } 13. udp_recv_channel { 14. port = 8649 15. # 注释掉多余的,留下端口即可 16. } 17. tcp_accept_channel { 18. port = 8649 19. }
将主节点的发送到监控节点就可以了
(3 )修改 ganglia-web 访问 权限
# vi /etc/httpd/conf/httpd.conf
在文件的末尾添加
Alias /ganglia /opt/ganglia-web-3.7.2 <location /ganglia> Require all granted </location>
# service httpd restart
(4 )配置 gmetad
只需在主节点上配置即可
# vi /etc/ganglia/gmetad.conf
(5 )配置 hadoop1. data_source "bigdata_cluster" node1:8649 node2:8649 node3:8649 2. data_source:此参数定义了集群的名字,以及集群中的节点,
主节点配置
# vi $HADOOP_HOME/etc/hadoop/hadoop-metrics2.properties
可以 注释掉里面的内容直接粘贴修改
从节点配置### ganglia配置 namenode.sink.ganglia.servers=node1:8649 resourcemanager.sink.ganglia.servers=node1:8649 mrappmaster.sink.ganglia.servers=node1:8649 jobhistoryserver.sink.ganglia.servers=node1:8649 *.sink.ganglia.class=org.apache.hadoop.metrics2.sink.ganglia.GangliaSink31 *.sink.ganglia.period=10 *.sink.ganglia.supportsparse=true *.sink.ganglia.slope=jvm.metrics.gcCount=zero,jvm.metrics.memHeapUsedM=both *.sink.ganglia.dmax=jvm.metrics.threadsBlocked=70,jvm.metrics.memHeapUsedM=40
(6 )配置 hbase### ganglia配置 datanode.sink.ganglia.servers=node1:8649 nodemanager.sink.ganglia.servers=node1:8649 *.sink.ganglia.class=org.apache.hadoop.metrics2.sink.ganglia.GangliaSink31 *.sink.ganglia.period=10 *.sink.ganglia.supportsparse=true *.sink.ganglia.slope=jvm.metrics.gcCount=zero,jvm.metrics.memHeapUsedM=both *.sink.ganglia.dmax=jvm.metrics.threadsBlocked=70,jvm.metrics.memHeapUsedM=40
# vi $HBASE_HOME/conf/hadoop-metrics2.properties
可以 注释掉里面的内容直接粘贴修改(每个节点都一样)
### ganglia配置 *.sink.ganglia.class=org.apache.hadoop.metrics2.sink.ganglia.GangliaSink31 *.sink.ganglia.period=10 hbase.sink.ganglia.period=10 hbase.sink.ganglia.servers=node1:8649 hbase.class=org.apache.hadoop.metrics2.sink.ganglia.GangliaSink31 hbase.period=10 hbase.servers==node1:8649 jvm.class=org.apache.hadoop.metrics2.sink.ganglia.GangliaSink31 jvm.period=10 jvm.servers==node1:8649 rpc.class=org.apache.hadoop.metrics2.sink.ganglia.GangliaSink31 rpc.period=10 rpc.servers==node1:8649
(7 )启动 ganglia
主节点的启动(如果已经启动了,就重新启动)$ systemctl start httpd.service$ systemctl start gmetad.service$ systemctl start gmond.service$ systemctl enable httpd.service$ systemctl enable gmetad.service$ systemctl enable gmond.service
被监测节点的启动#systemctl enable gmond.service#systemctl start gmond.service
完整详细的安装文档可以参考我的这份PDF文档:https://download.csdn.net/download/github_39577257/10506860