ganglia部署监控flume
debian环境下编译部署ganglia,用于监控flume。
ganglia编译部署
ganglia主要包括gmond和gmeta,
- gmond用于收集监测数据,可以发送也可以接收在同一个组播或单播通道上的统计信息。gmond有两个角色,一个是发送者,另一个是接收者。当
mute=no
时,gmond是发送者,会收集本节点上的基本指标,比如系统负载(load_one)、cpu和memory利用率等,也可以发送用户通过添加C/Python模块来自定义的指标。当deaf=no
是接收者,主要用来聚合所有从别的节点上发来的指标(如flume agent发来的metrics信息),并把他们都保存在内存缓冲区中。gmond节点之间通过UDP收集数据,gmetad通过TCP从gmond节点获取数据 - gmeta定期检查gmond,拉取gmond上的数据,并将他们的指标存储在RRD存储引擎中。
除此之外还有个web组件用于显示监控图,ganglia-web(或者ganglia-webfrontend)
下面开始编译ganglia,官网上gmond、gmeta和ganglia-web是分开的两个安装包。ganglia中只包括gmond和gmeta。
编译
apt-get install make gawk gcc g++ pkg-config python-libxml2 libcogl-pango-dev python-dev libxml2-dev libxslt-dev libaprutil1-dev libpcre* libconfuse*
可能不全,但也差不多。
上面的依赖包都安装之后还需要confuse和rrdtool,这两个需要编译安装,所以单独说明下。
安装confuse
1 | wget http://download.savannah.gnu.org/releases/confuse/confuse-2.7.tar.gz |
安装rrdtool
1 | wget http://oss.oetiker.ch/rrdtool/pub/rrdtool-1.6.0.tar.gz |
依赖安装完毕,进入ganglia-3.7.2.tar.gz
的解压目录中,执行编译命令
./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的配置文件放在此目录。
成功之后就可以执行make && make install
安装ganglia了。
还需要安装
apt-get install ganglia-modules-linux ganglia-monitor ganglia-monitor-python ganglia-webfrontend libganglia1 libganglia1-dev
,要不然无法收集机器的基础属性,也不能正常显示图片(ganglia-webfrontend不安装无法正常显示图片)。
下面来编译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中
主要改的配置选项如下:
1 | # Location where gweb should be installed to (excluding conf, dwoo dirs). |
上面的目录配置的有点散,可以对其进行修改,使其便于管理,修改如下:
1 | GDESTDIR = /var/lib/ganglia/web |
之所以选择/var/lib/ganglia
这个目录,是因为rrd在此目录中。如果你用的版本和我一样,可能会遇到个小bug,将GDESTDIR和GWEB_STATEDIR路径中的第一个/去掉
部署
部署比较简单,修改两个配置文件就行,分别是gmond.conf和gmeta.conf,在目录/etc/ganglia
(此路径是在编译ganglia时指定的)中。
gmeta.conf中只需添加数据源和gmod节点就可以了,
1 | # 说明:这里的 "flume" 表示的是集群的名称,与gmod中的cluster名字一样,后面的内容是这个集群中所包含的主机信息,也就是要监控的主机ip |
启动之前需要改下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文件修改
1 | globals { |
启动gmond,命令/usr/local/ganglia/sbin/gmond start
,没有启动则用上面介绍的debug模式启动,查找错误原因。
最后就是启动ganglia-web,这个比较简单,只需要将GDESTDIR所指定的目录放到/var/www
目录中就可以了。我在这建了个软连cd /var/www/ && ln -s /usr/share/ganglia-webfrontend ganglia
启动apache就可以访问了,apache启动命令apache2ctl -k 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
更改内容如下:
1 | #ports.conf |
然后重启就ok了。可以使用命令netstat -lnp |grep apache
查看配置是否生效。显示内容如下则表示生效tcp6 0 0 :::8001 :::* LISTEN 8647/apache2
flume 监控
使用ganglia监控flume较为简单,只要在启动agent时指定ganglia中gmond的地址和端口就ok了,命令如下:/bin/bash ${FLUME_PATH}/bin/flume-ng agent -n a1 -c ${FLUME_PATH}/conf -f ${FLUME_PATH}/conf/flume.conf -Dflume.monitoring.type=ganglia -Dflume.monitoring.hosts=127.0.0.1:8666 &