ganglia分布式监控软件集群部署

来源:互联网 发布:linux访问数据页面 编辑:程序博客网 时间:2024/06/06 03:04
     Ganglia的核心包含gmond、gmetad以及一个Web前端。主要是用来监控系统性能,如:cpu 、mem、硬盘利用率, I/O负载、网络流量情况等,通过曲线很容易见到每个节点的工作状态,对合理调整、分配系统资源,提高系统整体性能起到重要作用。
Ganglia是一种分布式监控系统。ganglia的设计便是基于大型集群进行设计的。主要体现在数据的获取方式以及分层设计。主要有以下三个优点:
   部署的方便性:ganglia类似与nagios的部署方式会更简单,更方便。有利于后期的大规模扩张;
   数据获取方式:Ganglia本身就是为集群监控进行设计的,这体现在其数据的获取方式(客户端主动推送)以及分层设计(node cluster grid);

   通信方式以及冗余:Ganglia通过组播进行数据交互,配置得当,可以实现冗余避免单点故障。另外,同样由于组播,数据可以在客户机本地进行存放的(安装rrdtool)。

Ganglia体系结构
Ganglia底层使用RRDTool获得数据,Ganglia主要分为两个进程组件:
    gmond(ganglia monitor deamon):组播包的发送和接受。发送本地信息,接受其他节点信息
    gmetad(ganglia metadata deamon):从监听节点轮询出数据,并对数据进行聚合、存储
除这两个Daemon进程外,Ganglia还依赖其他三个组件提供可视化和数据持久化的服务:
    Ganglia网页:提供ganglia的访问页面
    rrdtool: 数据存储以及提供画图功能
    Apache与php:网站功能,对ganglia提供的网页进行解析
其中,gmond运行在集群每个节点上,收集RRDTool产生的数据;gmetad运行在监控服务器上,收集每个gmond的数据。Ganglia还提供了一个PHP实现的web front end,一般使用Apache2作为其运行环境,通过Web Front可以看到直观的各种集群数据图表。
Ganglia的层次化结构做的非常好,由小到大可以分为node -> cluster -> grid,这三个层次:
    一个node就是一个需要监控的节点,一般是个主机,用IP表示。每个node上运行一个gmond进程用来采集数据,并提交给gmetad;
    一个cluster由多个node组成,就是一个集群,我们可以给集群定义名字。一个集群可以选一个node运行gmetad进程,汇总/拉取gmond提交的数据,并部署web front,将gmetad采集的数据用图表展示出来;
    一个grid由多个cluster组成,是一个更高层面的概念,我们可以给grid定义名字。grid中可以定义一个顶级的gmetad进程,汇总/拉取多个gmond、子gmetad提交的数据,部署web front,将顶级gmetad采集的数据用图表展示出来。
显然,这种方式非常灵活,可以实现多种结构的数据监控。

  集群环境
gmond:3台(192.168.1.101、192.168.1.102、192.168.1.103)
gmetad + ganglia web:1台(192.168.1.103)
操作系统:centos6.5(阿里云)

  首先安装客户端,客户端起到收集发送数据。centos上安装命令 yum install gmond,安装号后进行配置

vim /etc/ganglia/gmond.conf

cluster {
  name = "cluster name"  //集群名称
  owner = "root"                //所属用户名称
  latlong = "unspecified"
  url = "unspecified"
}

host {
  location = "192.168.0.101"  //必须填写集群节点位置
}

//数据发送

udp_send_channel {
  #bind_hostname = yes # Highly recommended, soon to be default.
                       # This option tells gmond to use a source address
                       # that resolves to the machine's hostname.  Without
                       # this, the metrics may appear to come from any
                       # interface and the DNS names associated with
                       # those IPs will be used to create the RRDs.
  #mcast_join = 192.168.0.101  //组播发送,
  host= 192.168.0.101                //单播发送
  port = 8649
  ttl = 1

//数据接受一般为本机IP地址

//组播需要bind信息

udp_recv_channel {
  #mcast_join = 192.168.0.101
  #host= 192.168.0.101
  port = 8649
  #bind = 192.168.0.101
  #retry_bind = true
  # Size of the UDP buffer. If you are handling lots of metrics you really
  # should bump it up to e.g. 10MB or even higher.
  # buffer = 10485760
}

port = 8649

//收集数据节点要访问的端口号

tcp_accept_channel {
  port = 8649
  # If you want to gzip XML output
  gzip_output = no

}

安装中心节点服务端

yum install ganglia-gmetad ganglia-devel  //数据收集

yum install rrdtool

yum install -y httpd

yum install -y ganglia-web php //提供web服务

编辑vim /etc/ganglia/gmetad.conf

服务端收集数据下载地址

data_source "cluster name" 192.168.0.101 192.168.0.102 192.168.0.103

配置网站权限和设置配置信息

将ganglia-web安装目录链接到httpd主站点目录
#  将ganglia-站点目录连接到httpd主站点目录
$  ln -s /usr/share/ganglia /var/www/html

修改httpd主站点目录下ganglia站点目录的访问权限
#将ganglia站点目录访问权限改为
apache:apache,否则会报错
$chown -R apache:apache /var/www/html/ganglia $  chmod -R 777 /var/www/html/ganglia

修改rrd数据库存放目录访问权限
#将rrd数据库存放目录访问权限改为nobody:nobody,否则会报错
$chown -R nobody:nobody /var/lib/ganglia/rrds

编辑vim /etc/httpd/conf.d/ganglia.conf进行权限设置
<Location /ganglia>
  Allow from all  //允许所有
  #Order deny,allow
  #Deny from all
  #Allow from 127.0.0.1 //允许某些IP地址
  #Allow from ::1
  # Allow from .example.com
</Location>

客户端安装后重启服务 service gmond restart;

服务端重启服务 service gmetad restart service httpd restart


0 0
原创粉丝点击