Ganglia 是 UC Berkeley 发起的一个开源监视项目,可以对分布式集群的所有计算资源进行监控。
ganglia由三个组件构成
ganglia-web :(只需server端)顾名思义,他应该安装在有gmetad运行的机器上,以便读取RRD文件。 集群是主机和度量数据的逻辑分组,比如数据库服务器,网页服务器,生产,测试,QA等,他们都是完全分开的,你需要为每个集群运行单独的gmond实例。
Ganglia的收集数据工作可以工作在单播(unicast)或多播(multicast)模式下,默认为多播模式。(一般使用单播)
单播:发送自己收集到的监控数据到特定的一台或几台机器上,可以跨网段。
多播:发送自己收集到的监控数据到同一网段内所有的机器上,同时收集同一网段内的所有机器发送过来的监控数据。因为是以广播包的形式发送,因此需要同一网段内。但同一网段内,又可以定义不同的发送通道。
1. server端
安装
除了ganglia的三个组件外还需要web服务。
yum -y install rrdtool ganglia-gmetad ganglia-gmond ganglia-web httpd php
配置
/etc/ganglia/gmond.conf文件
cluster {
name = "spark cluster" //改成自己集群名
owner = "unspecified"
latlong = "unspecified"
url = "unspecified"
}
udp_send_channel {
# mcast_join = 239.2.11.71 //注释掉多播
host = master //master为主机名
port = 8649
ttl = 1
}
udp_recv_channel {
# mcast_join = 239.2.11.71 //注释mcast_join和bind
port = 8649
# bind = 239.2.11.71
retry_bind = true
# Size of the UDP buffer. If you are handling lots of metrics you really
# should bump it up to e.g. 10MB or even higher.
# buffer = 10485760
}
/etc/ganglia/gmetad.conf文件
name和ip要和gmond.conf中配置一样
data_source "spark cluster" master:8649
该配置文件还可以设置分组。Ganglia会把所有东西放在一个Grid里面,也就是一个网格。大的集群,不分组。但是真实的服务器集群有各种功能,每个群分管不同的事务,全放一起就太乱了。也不好识别,所以需要分组使用。
其实Ganglia的分组很简单,就是分端口,不同的组配置不同的监听端口就完事了。
data_source "spark cluster" master:8649
data_source "hadoop cluster" master:8444
gridname "MyGird"
参考:http://slaytanic.blog.51cto.com/2057708/808981
2. client端
安装
只需要gmond
yum -y install ganglia-gmond
可用pdsh对集群节点批量安装
pdsh -w ssh:root@slave[1-40] yum -y install ganglia-gmond
配置
只需将server的gmond.conf复制到每个节点
service gmond start
service gmetad start
service httpd start
service gmond start
可以使用chkconfig设置开机启动:
可能会出现
You don’t have permission to access /ganglia on this server.
解决办法
修改/etc/httpd/conf.d/ganglia.conf文件
Order deny,allow
#Deny from all
Allow from all
#Allow from 127.0.0.1
#Allow from ::1
# Allow from .example.com
重启服务,ok
spark默认不把ganglia相关的类包含在发行包中 ,所以在官网上下载的包是不支持ganglia的,所以下载源码包 加上-Pspark-ganglia-lgpl自行编译
修改spark的metrics.propertics文件
关于metrics的介绍:https://www.iteblog.com/archives/1341.html#GangliaSink
*.sink.ganglia.class=org.apache.spark.metrics.sink.GangliaSink
*.sink.ganglia.host=master //ganglia server ip
*.sink.ganglia.port=8649
*.sink.ganglia.period=10
*.sink.ganglia.unit=seconds
*.sink.ganglia.ttl=1
*.sink.ganglia.mode=unicast //单播
*.sink.ganglia.name=My cluster //集群名
master.source.jvm.class=org.apache.spark.metrics.source.JvmSource
worker.source.jvm.class=org.apache.spark.metrics.source.JvmSource
driver.source.jvm.class=org.apache.spark.metrics.source.JvmSource
executor.source.jvm.class=org.apache.spark.metrics.source.JvmSource
参考链接:
安装:http://www.linuxidc.com/Linux/2012-12/76536.htm
参数配置:http://www.cnblogs.com/wukenaihe/archive/2013/03/21/2972837.html
spark监控:http://blog.csdn.net/czmacd/article/details/52957524