一、介绍
ganglia主要包括gmond和gmeta
1、gmond用于收集监测数据,可以发送也可以接收在同一个组播或单播通道上的统计信息。gmond有两个角色,一个是发送者,另一个是接收者。当mute=no时,gmond是发送者,会收集本节点上的基本指标,比如系统负载(load_one)、cpu和memory利用率等,也可以发送用户通过添加C/Python模块来自定义的指标。当deaf=no是接收者,主要用来聚合所有从别的节点上发来的指标(如flume agent发来的metrics信息),并把他们都保存在内存缓冲区中。gmond节点之间通过UDP收集数据,gmetad通过TCP从gmond节点获取数据
2、gmeta定期检查gmond,拉取gmond上的数据,并将他们的指标存储在RRD存储引擎中。
3、除此之外还有个web组件用于显示监控图,ganglia-web(或者ganglia-webfrontend)
二、编译先决条件
apt-get install make gawk gcc g++ pkg-config python-libxml2 libcogl-pango-dev libxml2-dev libxslt-dev libaprutil1-dev libpcre*
apt-get install pkg-config -y
apt-get install pkgconf -y
apt-get install libapr1-dev -y
apt-get install libconfuse-dev -y
apt-get install expat -y
apt-get install libexpat-dev -y
apt-get install zlib1g-dev -y
apt-get install librrds-perl python-dev libpcre3-dev -y
可能不全,但也差不多
上面的依赖包都安装之后还需要confuse和rrdtool,这两个需要编译安装,所以单独说明下
1、安装confuse
wget http://download.savannah.gnu.org/releases/confuse/confuse-2.7.tar.gz
tar -zxvf confuse-2.7.tar.gz
cd confuse-2.7
./configure CFLAGS=-fPIC --disable-nls --prefix=/home/hadoop/confuse-2.7
make && make install #root用户执行
2、安装rrdtool
wget http://oss.oetiker.ch/rrdtool/pub/rrdtool-1.6.0.tar.gz
./configure --prefix=/usr/local # 貌似安装到别的目录,需要将bin下的命令加到环境变量中,否则后面编译ganglia会报错
make && make install #root用户执行
三、依赖安装完毕,进入ganglia-3.7.2.tar.gz的解压目录中
1、执行编译命令
./configure --prefix=/usr/local/ganglia --with-gmetad --with-librrd=/usr/local/lib --sysconfdir=/etc/ganglia --enable-gexec --enable-status
--prefix用于指定ganglia编译之后的目录,--with-gmetad包含gmeta组件,--with-librrd=/usr/local/lib包含rrd数据库,--sysconfdir=/etc/ganglia将gmeta
和gmond的配置文件放在此目录。
成功之后就可以执行
2、安装
make && make install
四、还需要安装
apt-get install ganglia-modules-linux ganglia-monitor ganglia-monitor-python ganglia-webfrontend libganglia1 libganglia1-dev
要不然无法收集机器的基础属性,也不能正常显示图片(ganglia-webfrontend不安装无法正常显示图片)。
五、安装ganglia-web
下面来编译ganglia-web,其实下载的ganglia-web-3.7.2.tar.gz已经是编译好的,直接执行安装命令(make && make install)就行了。但是ganglia-web需要依赖
apache作为服务器,则还需要安装依赖
apt-get install apache2.2-bin apache2.2-common apache2 libapache2-mod-php5 php5
这里也可以对ganglia-web的安装目录进行稍许的配置,配置在Makefile中
主要改的配置选项如下:
# Location where gweb should be installed to (excluding conf, dwoo dirs).
# web页面文件,需要放在apache web文件夹里
GDESTDIR = /usr/share/ganglia-webfrontend
# Location where default apache configuration should be installed to.
GCONFDIR = /etc/ganglia-web
# Gweb statedir (where conf dir and Dwoo templates dir are stored)
GWEB_STATEDIR = /var/lib/ganglia-web
# Gmetad rootdir (parent location of rrd folder)
GMETAD_ROOTDIR = /var/lib/ganglia
上面的目录配置的有点散,可以对其进行修改,使其便于管理,修改如下:
GDESTDIR = /var/lib/ganglia/web
# Location where default apache configuration should be installed to.
GCONFDIR = /var/lib/ganglia/etc/
#GCONFDIR = /etc/ganglia-web
# Gweb statedir (where conf dir and Dwoo templates dir are stored)
GWEB_STATEDIR = /var/lib/ganglia
# Gmetad rootdir (parent location of rrd folder)
GMETAD_ROOTDIR = /var/lib/ganglia
# 可改可不改,默认是www-data
APACHE_USER = hadoop_portal
之所以选择/var/lib/ganglia这个目录,是因为rrd在此目录中。如果你用的版本和我一样,可能会遇到个小bug,将GDESTDIR和GWEB_STATEDIR路径中的第一个/去掉
六、部署
修改两个配置文件就行,分别是gmond.conf和gmeta.conf,在目录/etc/ganglia(此路径是在编译ganglia时指定的)中。
gmeta.conf中只需添加数据源和gmod节点就可以了
# 说明:这里的 "flume" 表示的是集群的名称,与gmod中的cluster名字一样,后面的内容是这个集群中所包含的主机信息,也就是要监控的主机ip
# 这里采用单播方式,则只有一个节点,并配上端口,如果不指定端口,默认是8649
data_source "flume" 127.0.0.1:8666
# 由于setuid默认是开启的,而setuid_username默认是nobody,可能会遇到权限问题,则改为启动用户hadoop
setuid_username "hadoop"
启动之前需要改下rrd所在目录的权限,改为启动gmeta的用户,命令chown -R hadoop:hadoop /var/lib/ganglia(如果rrds目录不存在,则新建/var/lib/ganglia/rrds目录)
七、启动gmeta
/usr/local/ganglia/sbin/gmetad start
(/usr/local/ganglia/是在编译时由–prefix=指定的)
然后通过ps -ef | grep gm查看是否有gmeta进程,如果没有就代表没有启动成功,
可以使用gmetad --debug=4(或者gmeta debug=10 log message)进来debug启动
gmond.conf文件修改
globals {
daemonize = yes
setuid = yes
# 与gmeta中setuid_username相同,启动gmond的用户
user = hadoop
debug_level = 0
max_udp_msg_len = 1472
# 发送者开关
mute = no
# 接收者开关
deaf = no
host_dmax = 0 /*secs */
cleanup_threshold = 300 /*secs */
gexec = no
send_metadata_interval = 0
}
cluster {
# gmeta中data_source中的cluster名字
name = "flume"
owner = "unspecified"
latlong = "unspecified"
url = "unspecified"
}
#发送者channel
# 如果不用监视本节点基础指标则不用配置,并设置mute为yes
udp_send_channel {
# 多播方式
/*mcast_join = 239.2.11.71 */
host = 127.0.0.1
port = 8666
ttl = 1
}
# 接收者channel
udp_recv_channel {
/* mcast_join = 239.2.11.71 */
port = 8666
bind = 127.0.0.1
}
tcp_accept_channel {
port = 8666
}
八、启动gmond
/usr/local/ganglia/sbin/gmond start
没有启动则用上面介绍的debug模式启动,查找错误原因
九、启动ganglia-web
只需要将GDESTDIR所指定的目录放到/var/www目录中就可以了。我在这建了个软连
cd /var/www/html
ln -s /usr/share/ganglia-webfrontend ganglia
启动apache就可以访问了,apache启动命令
service apache2 start
十、查看显示结果
输入127.0.0.1/ganglia就可以查看监控指标了
十一、排错
如果服务器在本地不能访问,可以使用telnet localhost 8651来验证下gmeta是否成功(gmeta默认是8651端口)。
其他
更改Apache的默认端口
在debian系统下apache默认安装目录是/etc/apache2/
更改默认端口需要修改两个配置文件,分别为/etc/apache2/ports.conf和/etc/apache2/sites-available/default
更改内容如下:
#ports.conf
NameVirtualHost *:8001
Listen 8001
#default
VirtualHost *:8001
#ports.conf
NameVirtualHost *:8001
Listen 8001
#default
VirtualHost *:8001
然后重启就ok了。可以使用命令netstat -lnp |grep apache查看配置是否生效。显示内容如下则表示生效
tcp6 0 0 :::8001 :::* LISTEN 8647/apache2
删除一个节点
删掉rrd对应节点后,reload下gmetad