Linux下的监控器之一Ganglia详解与部署

Ganglia基础详解

Ganglia介绍 
Ganglia是一个跨平台可扩展的,高性能计算系统下的分布式监控系统,如集群和网格。它是基于分层设计,它使用广泛的技术,如XML数据代表,便携数据传输,RRDtool用于数据存储和可视化。它利用精心设计的数据结构和算法实现每节点间并发非常低的。它已移植到广泛的操作系统和处理器架构上,目前在世界各地成千上万的集群正在使用。

Ganglia特点

  1. 具有良好的扩展性,分层架构使用与大规模服务器集群的架构
  2. 负载开销低,支持高并发
  3. 广泛支持各种操作系统

Ganglia组成 

Ganglia框架有gmond,gmated和webfronted进程组成: 
gmond:是运行在被监控节点的守护进程,负责采集本节点的上数据,同时也接受替他节点上发送过来的数据,默认监听在8649。 
gmated:运行在监控节点上的守护进程,负责定期检查每个gmond进程并从哪里获取数据,然后将数据存储在本地的RRD存储引擎中。 
webfronted:使用PHP写成的web图形化界面,功能从gmetad获取数据并且读出数据库,通过rrdtool工具生成图表,通过http协议显示在终端上。


Ganglia的工作模型

node:监控单个服务器 

一台主机运行gmond进程,另一台主机运行gmetad进程进行数据采集。

cluster:监控一个集群

主机A,B,C,D,E模型一:
    主机A,B,C,D作为被监控端,运行gmont进程。
    主机E作为监控端运行gmetad进程。
模型二:
    主机A,B,C:被监控端
    主机D:运行gmont进程,负责采集A,B,C传送的数据,最终将数据传送给监控节点。
    主机E:监控节点
模型三:
    如见下图:

 
 

grid:监控一个网格,由多个集群服务组成


Ganglia之间的通信

gmond<–>gmond:采用UDP通信协议,并以文件格式为XDL的格式进行发送。 
gmond<–>gmetad:采用TCP通信协议,并以文件格式为XML的形式进行传送。 
gmetad<–>gmetad:采用TCP通信协议,并以文件格式为XML的形式进行传送。

  1. 通常采用单播和多播进行通信
  2. gmond与gmond之间以多播的方式行通信(默认)。gmond向外发送数据,相邻的gmond主机也会收到数据。

    Ganglia的部署

    部署结构


  主机                  IP                   作用
  Clone1           192.168.80.129             监控
  Clone2           192.168.80.130             被监控



监控端部署

gmetad安装:

提前安装confuse,rrdtool
yum源安装:
    [[email protected] ~]# yum install ganglia-gmetad ganglia-web
编译安装gmetad:
    [[email protected] ~]#  wget https://jaist.dl.sourceforge.net/project/ganglia/ganglia%20monitoring%20core/3.7.2/ganglia-3.7.2.tar.gz
    [[email protected] ~]# tar -xzf ganglia-3.7.2.tar.gz 
    [[email protected] ~]# cd ganglia-3.7.2
    [[email protected] ganglia-3.7.2]# ./configure --prefix=/usr/local/ganglia --with-static-modules --enable-gexec --enable-status --with-gmetad   --with-libexpat --with-libconfuse=/usr/local/confuse --with-libpcre --with-librrd=/usr/local/rrtdool --htmldir=/var/www/html/gangia
    [[email protected] ganglia-3.7.2]# make && make install

gmetad配置:

 1. 在安装包文件中找到gmetad.init文件 
 2. 将此文件复制到/etc/rc.d/init.d/gmetad
    [[email protected] gmetad]# cp gmetad.init /etc/rc.d/init.d/gmetad
 3. 编辑/etc/rc.d/init.d/gmetad,设置GMSTA=/usr/local/ganglia/sbin/gmetad 
 4. 添加多播地址
    [[email protected] sbin]# ip route add 239.2.11.71 dev eth0
 5. 编辑配置文件
    data_source "Ganglia" 192.168.80.130    //定义集群的名称,以及集群的节点
    gridname "MyGrid"      //定义一个网格名称,网格中的服务器集群由data_source定义
    xml_port 8651       //定义一个接受数据的端口,默认伪8651
    interactive_port 8652    //此参数定义web端获取数据的端口,
    rrd_rootdir "/var/lib/ganglia/rrds"     //rrd数据库的存放路径,默认伪/var/lib/ganglia/rrds

ganglia-web配置:

 1. yum源安装:
    [[email protected] ~]# yum install  ganglia-web
    [[email protected] ~]# cp /usr/share/ganglia/* /var/www/html/
 2. 编译安装:
    [[email protected] ~]# git clone https://github.com/ganglia/ganglia-web.git
    [[email protected] ~]# cd ganglia-web/
    [[email protected] ganglia-web]# cp -rv  * /var/www/html/ganglia/
    [[email protected] ganglia]# mv conf_default.php.in conf_default.php
 3. 编辑conf_default.php    
     $conf[‘gmetad_root‘] = "/var/lib/ganglia";  //ganglia-gmetad安装目录    
     $conf[‘gweb_root‘] . "/version.php";           //genglia的web根目录 
     $conf[‘rrds‘] = "${conf[‘gmetad_root‘]}/rrds";   //web读物rrd数据库的路径    
     $conf[‘dwoo_compiled_dir‘] = "${conf[‘gweb_confdir‘]}/dwoo/compiled"; //需要777权限    
     $conf[‘dwoo_cache_dir‘] = "${conf[‘gweb_confdir‘]}/dwoo/cache";            //需要777权限    
     $conf[‘rrdtool‘] = "/usr/local/rrtdool/bin/rrdtool";      //指定rrdtool的路径    
     $conf[‘graphdir‘]= $conf[‘gweb_root‘] . ‘/graph.d‘;      //生成图成模板目录    
     $conf[‘ganglia_ip‘] = "127.0.0.1"; //gmetad服务器的地址    
     $conf[‘ganglia_port‘] = 8652;      //提供监控数据端口 
     4. 改变rrd库的权限为777
 5. 创建/var/www/html/ganglia/dwoo/下comiled目录和cache目录,并赋予可写权限

被监控端部署

gmond安装:

前提安装confuse 
     1. yum安装:
    [[email protected] ~]#  yum install ganglia-gmond
 2. 编译安装:
    [[email protected] ~]#  wget https://jaist.dl.sourceforge.net/project/ganglia/ganglia%20monitoring%20core/3.7.2/ganglia-3.7.2.tar.gz
    [[email protected] ~]# tar -xzf ganglia-3.7.2.tar.gz 
    [[email protected] ~]# cd ganglia-3.7.2
    [[email protected] confuse-2.5]# ./configure --prefix=/usr/local/ganglia --enable-gexec --enable-status  --with-libconfuse=/usr/local/confuse --with-expat=/usr --with-libpcre=/usr
    [[email protected] confuse-2.5]# make && make install

gmond配置:

 1. cp启动文件
    [[email protected] gmond]# cp gmond.init /etc/rc.d/init.d/gmond
 2. 编译启动文件/etc/rc.d/init.d/gmond:
    GMSTA=/usr/local/ganglia/sbin/gmond 
 3. 配置多播地址:
    [[email protected] ganglia-3.7.2]# ip route add 239.2.11.71 dev eth0
 4. 生成配置文件:
    [[email protected] gmond]# ./gmond -t > /etc/ganglia/gmond.conf
    [[email protected] gmond]# ./gmond -t > /usr/local/ganglia/etc/gmond.conf

gmond配置文件:

gmond的配置文件分为Gloabl,cluster,host,协议配置四部分组成
第一部分:
globals {
  daemonize = yes      //是否后台运行
  setuid = yes         //是否设置用户运行
  user = nobody        //运行程序的用户
  debug_level = 0      //调试级别
  max_udp_msg_len = 1472        //最大UDP队列长度
  mute = no             //是否将采集到的数据广播到其他节点
  deaf = no             //是否接受其他节点发送过来的数据
  allow_extra_data = yes      //允许额外数据
  host_dmax = 86400          //是否删除一个节点,0表示永不删除,非0表示不响应时间,超过这个时间系统会刷新集群节点,从而删除此节点
  host_tmax = 20            //
  cleanup_threshold = 300    //清理过期数据的时间
  gexec = no          //是否使用gexec来告知主机是否可用
  send_metadata_interval = 0       //在单播通信中,新添加的节点多长时间表示一下自己的存在,0表示启动时通知。}

第二部分:定义主机在集群中的信息cluster {
  name = "my cluster"        //集群名称,要与监控端data_source其中一项匹配
  owner = "unspecified"       //节点拥有者
  latlong = "unspecified"     //节点的坐标,一般不用指定
  url = "unspecified"         //节点的URL,一般不用指定} 

第三部分:定义主机
host {
  location = "unspecified"      //节点的物理位置,一般不用指定}

第四部分:协议配置
udp_send_channel {      //udp发送通道
    mcast_join = 239.2.11.71        //指定发送的多播地址,单播模式下,为host_ip,可以定义多个udp_send_channel
    port = 8649                     //监听的端口
    ttl = 1}

udp_recv_channel {      //udp接受通道
    mcast_join = 239.2.11.71        //指定接受的多播地址
    port = 8649                     //监听的端口
    bind = 239.2.11.71              //绑定地址
    retry_bind = true
}

tcp_accept_channel {
    port = 8649                     
    gzip_output = no
}


结果 

时间: 2024-09-27 04:30:06

Linux下的监控器之一Ganglia详解与部署的相关文章

[fw]Linux下tty/pty/pts/ptmx详解

基本概念: 1> tty(终端设备的统称):tty一词源于Teletypes,或者teletypewriters,原来指的是电传打字机,是通过串行线用打印机键盘通过阅读和发送信息的东西,后来这东西被键盘与显示器取代,所以现在叫终端比较合适.终端是一种字符型设备,它有多种类型,通常使用tty来简称各种类型的终端设备. 2> pty(虚拟终端):但是如果我们远程telnet到主机或使用xterm时不也需要一个终端交互么?是的,这就是虚拟终端pty(pseudo-tty) 3> pts/ptm

【转】Linux 下搭建Postfix邮件服务器详解:

在我自己的服务器上面搭建了邮件服务器,为的是接下来写shell脚本进行报警监控.当服务器发生意外,可以及时发送邮件服务器到邮箱. 看了两个教程,按照两个教程来搭建的,感谢原作. Linux 下搭建Postfix邮件服务器详解: 1.首先关闭sendmail服务 service sendmail stop 2.chkconfig sendmail off(关闭开机自启动) 3.修改DNS正解文件,使DNS能够解析邮箱服务 添加下面两行 mail.zhubf.com. IN A           

linux下文件打包、压缩详解

Linux平台下,有如下几种常见的压缩工具: ========================================================================= 工 具 文件扩展名 描述 ------------------------------------------------------------------------- bzip2 .bz2 采用Burrows-Wheeler块排序文本压缩算法和霍夫曼编码 compress .Z 原始的Unix文件压

【Linux学习】Linux下用户组、文件权限详解

原文地址:http://www.cnblogs.com/123-/p/4189072.html Linux下用户组.文件权限详解 用户组 在linux中的每个用户必须属于一个组,不能独立于组外.在linux中每个文件有所有者.所在组.其它组的概念 - 所有者 - 所在组 - 其它组 - 改变用户所在的组 所有者 一般为文件的创建者,谁创建了该文件,就天然的成为该文件的所有者 用ls ‐ahl命令可以看到文件的所有者 也可以使用chown 用户名 文件名来修改文件的所有者 文件所在组 当某个用户创

【转】Linux下Android ADB驱动安装详解

原文网址:http://blog.csdn.net/zhenwenxian/article/details/5901350 Linux下Android ADB驱动安装详解 概述 最近由于内置的合作商比较多,本人使用的Ubuntu系统好多厂商的Android手机都无法正确的识别,经过一番折腾,和查阅SDK,现把Linux下ADB驱动配置的方法和当中会遇到的相关问题的解决方法整理出来贡献给大家. Linux下使用手机USB调试模式连接ADB进行Android程序的调试,配置驱动没有Windows来的

Linux 下的dd命令使用详解

dd if=/dev/zero of=的含义是什么?Linux 下的dd命令使用详解     一.dd命令的解释 dd:用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换. 注意:指定数字的地方若以下列字符结尾,则乘以相应的数字:b=512:c=1:k=1024:w=2 参数注释: 1. if=文件名:输入文件名,缺省为标准输入.即指定源文件.< if=input file > 2. of=文件名:输出文件名,缺省为标准输出.即指定目的文件.< of=output file >

linux下redis与phpredis安装详解与简单操作

首先下载redis安装包 [[email protected] ~]#wget http://download.redis.io/releases/redis-3.0.2.tar.gz [[email protected] ~]# tar xzf redis-3.0.2].tar.gz [[email protected] ~]# cd redis-3.0.2 [[email protected] redis-3.0.2]#ls [[email protected] redis-3.0.2]#m

Linux下的压缩解压缩命令详解

zip -r myfile.zip ./*将当前目录下的所有文件和文件夹全部压缩成myfile.zip文件,-r表示递归压缩子目录下所有文件. 2.unzipunzip -o -d /home/sunny myfile.zip把myfile.zip文件解压到 /home/sunny/-o:不提示的情况下覆盖文件:-d:-d /home/sunny 指明将文件解压缩到/home/sunny目录下: 3.其他zip -d myfile.zip smart.txt删除压缩文件中smart.txt文件z

Linux 下的dd命令使用详解(摘录)

一.dd命令的解释 dd:用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换. 注意:指定数字的地方若以下列字符结尾,则乘以相应的数字:b=512:c=1:k=1024:w=2 参数注释: 1. if=文件名:输入文件名,缺省为标准输入.即指定源文件.< if=input file > 2. of=文件名:输出文件名,缺省为标准输出.即指定目的文件.< of=output file > 3. ibs=bytes:一次读入bytes个字节,即指定一个块大小为bytes个字节.