百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

Ganglia监控安装总结(监控安装工作总结)

myzbx 2025-04-11 02:25 35 浏览

一、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的监控页面上面就能看到各个被监控机的状态了。

相关推荐

怎么恢复7z文件 7z文件删除了怎么恢复

7z是一种压缩格式的文件,它运用LZMA压缩算法,该压缩算法的输出稍后被算数编码进行处理以便后续进一步压缩,压缩比十分高。我们可以将文件压缩成这种格式,便于传输,保存,占空间少。了解更多7z文件知识...

郎酒让消费者喝得明明白白 算术题里有答案

日前,『郎酒酱香产品企业内控准则』颁布,郎酒首次公开酱香产品生产全过程,公布酱香产品产能、储能及投放计划。随后,郎酒官微向消费者发出「品控算术题」有奖问答。郎酒亮出家底,消费者踊跃留言。8天后,谜底揭...

学龄前,比识字、算术更重要的是这三件事

“为了给孩子选择一家合适的幼儿园,我曾穿梭于纽约各家幼儿园的开放日,这些幼儿员既包括主流的公立幼儿园,还包括那些遥不可及的私人幼儿园。我的目的就是想了解他们的教育理念是什么,到底厉害在哪里,看看对于我...

参加CSP-J信奥赛需要掌握数学知识

在C++语法的学习中需要储备的数学知识如下①数据类型:需要知道整数、正整数、负整数、小数、判断对错②算术运算符:加法、减法、乘法、除法、取模运算③关系表达式:大于、大于等于、小于、小...

1g米饭能做多少深蹲?今天我们来算一算

减重我们都知道3分在练,7分在吃,吃这件事情上,真的是每一口都算数。今天我们来算一笔账,1粒米饭可以做多少事情?本着认真负责的态度,今天在食物秤上称了1g米饭,是16粒。根据能量换算:100g米饭是4...

web 自动化测试,一定得掌握的 8 个核心知识点

使用cypress进行端对端测试,和其他的一些框架有一个显著不同的地方,它使用JavaScript作为编程语言。传统主流的selenium框架是支持多语言的,大多数QA会的pytho...

大话C语言:赋值运算符(c语言中赋值运算符是什么)

赋值运算符是最基本的运算符之一,用于将右侧的值或表达式的计算结果赋给左侧的变量。它是一个二元运算符,意味着它需要两个操作数:一个是目标变量(左侧),另一个是要赋给该变量的值或表达式(右侧)。赋值运算符...

Vue进阶(幺幺伍):js 将字符串转换为boolean

Boolean();参数为0、null和无参数返回false,有参数返回true。Boolean("");//输出为:falseBoolean(null);//输出为...

mongodb查询的语法(大于,小于,大于或等于,小于或等于等等)

1).大于,小于,大于或等于,小于或等于$gt:大于$lt:小于$gte:大于或等于$lte:小于或等于例子:db.collection.find({"field":{$gt:valu...

Python学不会来打我(21)python表达式知识点汇总

在Python中,表达式是由变量、运算符、函数调用等组合而成的语句,用于产生值或执行特定操作。以下是对Python中常见表达式的详细讲解:1.1算术表达式涉及数学运算的表达式。例如:a=5b...

C|数据存储地址与字节偏移、数据索引

话说C是面向内存的编程语言。数据要能存得进去,取得出来,且要考虑效率。不管是顺序存储还是链式存储,其寻址方式总是很重要。顺序存储是连续存储。同质结构的数组通过其索引表示位置偏移,异质结构的结构体通过其...

下班后累懵?4 个 JS 手写题帮你搞定前端面试高频考点

打工人下班后最痛苦的事,莫过于拖着疲惫的身子还要啃前端面试题吧?看着那些密密麻麻的JS代码,脑子都快转不动了!别担心,今天咱就用轻松的方式,带你吃透4道高频手写题,让你在面试时自信满满,再也不...

嵌入式数据库sqlite3【进阶篇】-子句和函数的使用,小白一文入门

sqlite在《嵌入式数据库sqlite3命令操作基础篇-增删改查,小白一文入门》一文中讲解了如何实现sqlite3的基本操作增删改查,本文介绍一些其他复杂一点的操作。比如where、orderby...

前缀表达式与后缀表达式(前缀表达式后缀表达式中缀表达式计算)

昨天晚上和儿子一起学习了前缀表达式和后缀表达式。这应该是字符串算式如何被计算机识别并计算的2种方法。本来是想先给他讲一个逆波兰式(后缀表达式),以后再讲前缀表达式。没想到他还挺聪明,很快就把2个都掌握...

Python快速入门教程1:基本语法、数据类型、运算符、数字字符串

Python3的基础教程,涵盖了基本语法、数据类型、类型转换、解释器、注释、运算符、数字和字符串等内容,并附有使用实例场景。Python3的基础教程,涵盖了基本语法、数据类型、类型转换、解释器、注释、...