大家好,欢迎来到IT知识分享网。
一、ganglia简介:
Ganglia是一个跨平台可扩展的,高 性能计算系统下的分布式监控系统,如集群和网格。它是基于分层设计,它使用广泛的技术,如XML数据代表,便携数据传输,RRDtool用于数据存储和可 视化。它利用精心设计的数据结构和算法实现每节点间并发非常低的。它已移植到广泛的操作系统和处理器架构上,目前在世界各地成千上万的集群正在使用。已 被用来连结大学校园和世界各地,可以处理2000节点的规模。
二、与cacti的比较:
起初,对于为什么非要使用ganglia而不使用cacti,让我很迷惑。不过后来在部署过程中,以及后期的体验中。主要由两点:
1. 部署的方便性。相对于cacti的逐台服务器的添加方式,ganglia类似与nagios的部署方式会更简单,更方便。有利于后期的大规模扩张。
2. 两者的数据获取方式(重点):
a:ganglia本身就是为集群监控进行设计的,这体现在其数据的获取方式(客户端主动推送)以及分层设计(node cluster grid)
b:cacti则是服务端主动去轮循(逐台服务器)这在一定程度上影响了数据的新鲜,以及所能监控节点的数量。
3. 通信方式以及冗余:
a:cacti属于点到点通信,并且不会在本地对信息进行存储。存在单点故障的风险
b:ganglia通过组播进行数据交互,配置得当,可以实现冗余避免单点故障。另外,同样由于组播,数据可以在客户机本地进行存放的(安装rrdtool)。
三、Ganglia体系结构:
Ganglia系统组成:
gmetad: 从监听节点轮询出数据,并对数据进行聚合、存储(ganglia组件)
gmond: 组播包的发送和接受。发送本地信息,接受其他节点信息(ganglia组件)
Ganglia网页:提供ganglia的访问页面(ganglia组件)
rrdtool: 数据存储以及提供画图功能
Apache与php:网站功能,对ganglia提供的网页进行解析。
Ganglia工作原理:(网上找了一张图)
上图是描述在一个cluster环境中,数据的采集,传送,处理,存储,以及展示过程
1. 客户端数据的采集是通过gmond这个进程(端口8649)实现的。然后会将数据以xml的格式发送到一个组播地 址(默认是239.2.11.71 这个是可以更改的)
2. 由于在监控端也会有一个gmond进程,所以该进程会收到所有node发出的数据。(XML)
3. Gmetad进程是server进程。运行时将开启两个端口(8651与8652)
其中8651负责在监听地址上面收集gmond数据(填写本地IP即可配置后面说注)
其中8652负责数据的聚合,以及在rrd中的存储(这里有个问题不懂,最后描述)
4. 当通过浏览器访问的时候,php对ganglia的网页进行解析,rrdtool画图。从而将监控 结果进行展示。
四、安装环境:
操作系统:CentOS 6.2 64位
采用LNMP架构(Mysql可以不用,暂时用不上)
五、Ganglia安装:
Server安装:
Mysql安装:
http://dev.mysql.com/get/Downloads/MySQL-5.5/mysql-5.5.28.tar.gz/from/http://cdn.mysql.com/
cmake安装:yum install cmake
编译参数:
cmake . -DCMAKE_INSTALL_PREFIX=/home/mysql-DMYSQL_DATADIR=/var/lib/mysql/ -DSYSCONFDIR=/etc -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci
make && make install
cd /home/mysql
cp./support-files/my-huge.cnf /etc/my.cnf
cp./support-files/mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld
Nginx安装:
下载Nginx及相关包
$wget 121.14.129.199:8000/nginx-1.2.1_m.tar.gz
$wget 121.14.129.199:8000/pcre-8.20.tar.gz
依赖包:yum install zlib zlib-devel openssl openssl-devel pcre pcre-devel
解压
$tar xzf nginx-1.2.1_m.tar.gz
$tar xzf pcre-8.20.tar.gz
编译参数
$
./configure –prefix=/home/nginx –with-pcre=../pcre-8.20–without-http_charset_module –without-http_ssi_module–without-http_userid_module –without-http_auth_basic_module–without-http_autoindex_module –without-http_geo_module–without-http_map_module –without-http_empty_gif_module–without-http_browser_module –without-http_upstream_ip_hash_module–with-http_stub_status_module
编译
$make && make install
配置文件
配置文件nginx.conf和common.conf从现网机器上copy一份过来,修改相应配置如主机域名、IP等等。
测试配置文件:$/home/nginx/sbin/nginx –t
Reload:$/home/nginx/sbin/nginx –s reload
PHP安装:
下载地址:http://www.51osos.com/uploads/soft/libmcrypt-2.5.8.tar.gz
http://php.net/get/php-5.4.3.tar.gz/from/cn2.php.net/mirror
依赖包:yum -y install libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel libidn libidn-devel
编译安装libmcrypt:
tar -zxflibmcrypt-2.5.8.tar.gz
./configure
make && makeinstall
编译php参数&安装:
tar -zxf
php-5.4.5.tar.gz
cd php-5.4.5
./configure -prefix=/home/php–with-config-file-path=/home/php/etc –with-mysql=/home/mysql/ –with-mysqli=/home/mysql/bin/mysql_config–with-mysql-sock=/tmp/mysql.sock –with-gd –with-iconv –enable-fpm–with-zlib –enable-libxml –enable-xml –enable-bcmath –enable-shmop–enable-sysvsem –enable-inline-optimization –with-curlwrappers –enable-mbregex–enable-mbstring –with-openssl –enable-pcntl –enable-sockets –with-xmlrpc–enable-zip –enable-soap –enable-session –with-mcrypt –with-curl–enable-gd-native-ttf –without-pear
make && makeinstall
cp php.ini-production/home/php/etc/php.ini
ln -s/home/php/etc/php.ini /etc/php.ini
cp/home/php/etc/php-fpm.conf.default /home/php/etc/php-fpm.conf
cp./sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
chmod +x/etc/init.d/php-fpm
Rrdtool安装:
$wget -d http://oss.oetiker.ch/rrdtool/pub/rrdtool-1.4.7.tar.gz
$tar xzf rrdtool-1.4.7.tar.gz
cdrrdtool-1.4.7
$./configure –prefix=/usr (放在这里会省很多麻烦)
$make && make install
# Linklib
$ldconfig
Ganglia服务端安装:
Ganglia相关下载:
http://nchc.dl.sourceforge.net/project/ganglia/ganglia%20monitoring%20core/3.4.0/ganglia-3.4.0.tar.gz
http://ncu.dl.sourceforge.net/project/ganglia/ganglia-web/3.5.0/ganglia-web-3.5.0.tar.gz
依赖包安装:yum -y install
apr* libconfuselibconfuse-devel* automake autoconf libtool ncurses-devel libxslt groffpcre-devel pkgconfig
Gmetad 编译参数&安装:
cd ganglia-3.3.7
./configure –sysconfdir=/etc/ganglia –with-gmetad –prefix=/home/ganglia
make && make install
Gmond 编译参数&安装:
cd ganglia-3.3.7
./configure –sysconfdir=/etc/ganglia –prefix=/home/ganglia
make && make install
创建启动脚本:
mkdir /etc/ganglia
cp gmond/gmond.init/etc/rc.d/init.d/gmond
cp gmetad/gmetad.init/etc/rc.d/init.d/gmetad
chkconfig –add gmond && chkconfig gmond on
chkconfig –add gmetad&& chkconfig gmetad on
修改/etc/rc.d/init.d/gmetad和/etc/rc.d/init.d/gmond,分别指定如下参数:
·GMETAD=/home/ganglia/sbin/gmetad
·GMOND=/home/ganglia/sbin/gmond
vim /etc/rc.d/init.d/gmond
将daemon $GMOND 替换成daemon $GMOND–conf=/etc/ganglia/gmond.conf
vim /etc/rc.d/init.d/gmetad 将daemon $GMOND 替换成daemon $GMOND–conf=/etc/ganglia/gmetad.conf
gmond–default_config>/etc/ganglia/gmond.conf 加载Gmond配置
至此大部分工作已经完成。(注意:网上很多资料将配置文件放在了/etc下面。可能版本更新的问题,已经不在那个地方了,而是在/etc/ganglia下面。这个可以在README中看到)
配置文件的更改 gmetad配置文件是/etc/ganglia/gmetad.conf 。修改data_source即可
data_source “NeiMeng Hadoop” 10.101.0.251
Data_source 的值包含两部分 “Cluster名称”(也是一个简单的认证,在一个cluster中的所有node都必须配置为该值)
注:这里是要监听的地址,由于数据是组播,所以每个node都会收集到整个cluster的数据,所以填写本地的一个IP(ganglia使用的IP)就可以了。当然这里也可以将所有node的ip加进来。如果有node的端口不是默认的8649,也可以在这里指定端口IP:port
然后此时启动服务 httpd gmetad gmond 进行访问就会看见监控页面了(当然界面中只有本地)
这里有一项要特别注意:就是当有服务器有多个IP的时候,一定要为其添加一条到组播地址的路由,并指定网卡
route add -net 239.2.11.71 netmask 255.255.255.255 dev eth0 (不用重启网络)
或者添加路由文件
[root@dc01c01ts01 ~]# cat /etc/sysconfig/network-scripts/route-eth0
239.2.11.71 dev eth0
然后重启网络
否则会出现服务器“丢失”或者没有数据的问题。
Client安装:
依赖包安装:yum -y install apr* libconfuselibconfuse-devel* automake autoconf libtool ncurses-devel libxslt groffpcre-devel pkgconfig
客户端的添加
客户端安装相对简单,只需要拷贝需要的文件即可
由于服务器端,未指定安装路径,故出于方便考虑,拿了一台客户机操作,首先将源码包拷贝至该服务器,命令过程如下:
tar -zxf ganglia-3.0.6.tar.gz
cd ganglia-3.0.6
./configure –prefix=/usr/local/ganglia
make
make install
gmond -t > /etc/gmond.conf
ln -s /usr/local/ganglia/bin/* /usr/bin/
ln -s /usr/local/ganglia/sbin/* /usr/sbin/
然后修改/etc/gmond.conf
cluster {
name = “NeiMeng Hadoop”
将这里的name修改为在gmetad.conf中定义的名字即可。
然后将安装后的程序包,/etc/gmond.conf 、/etc/init.d/gmond 打包然后批量拷贝至其他所有客户端,解压然后做链接即可。或者通过cf同步亦可。
记住:如果有客户端有多个IP,一定要添加路由。
gmetad.conf配置:
要将case_sensitive_hostnames 0 设置成case_sensitive_hostnames 1 要不然php无法进入rrds里面的文件目录
#——————————————————————————-
# In earlier versions of gmetad, hostnames were handled in a case
# sensitive manner
# If your hostname directories have been renamed to lower case,
# set this option to 0 to disable backward compatibility.
# From version 3.2, backwards compatibility will be disabled by default.
# default: 1 (for gmetad < 3.2)
# default: 0 (for gmetad >= 3.2)
case_sensitive_hostnames 1
最后就是相关服务的制定:
Chkconfig –add gmond
Chkconf gmond on
Service gmond start
在所有客户机上面执行完这些命令以后,在ganglia的监控页面上面就能看到各个被监控机的状态了。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/162349.html