分布式监控工具Ganglia 介绍 与 集群部署.

若是你目的很明确就是冲着标题来的,不爱看我唠叨,请直接进入第二个分割线以后的内容。html

 

其实以前就是有作Swift监控平台的打算的,可是由于没什么硬性需求么,也没关系的,就一直搁置了。最近实验室来了个大二升大三的小MM体验生活,老大就让咱们带着她一块儿作这个东西,主要好处就是能够多学些实用的技术,了解云存储的基本架构,同时也不须要深刻细节,难以理解。node

好吧,我就是个爱说废话和铺陈的妞,这样才体现“原创”不是?O(∩_∩)O哈哈~ 进入正题。。。linux

 

================================被38°杭州烤化掉的分割线================================web

 

关于对分布式文件系统的监控,主要分为两个部分:机器性能相关的监控 和 系统运行状态 的监控。apache

机器性能相关的监控:这个比较泛化,也比较成熟,主要是对CPU、内存、网络、磁盘I/O等信息的监控,咱们不必重复造轮子,能够选择比较方便强大的开源工具来搭建,这里咱们选择Ganglia;ubuntu

系统运行状态的监控:这个与不一样的文件系统相关,虽然不一样DFS也有一些共性的内容,好比帐户、日志、请求量等,可是具体到每个DFS的实现其实仍是有很大不一样的,所以须要特别的定制。考虑到swift中ring的概念、ReST接口、帐户建立等信息,这一个部分咱们打算本身来开发,同时能够提供ring建立,帐户添加等基本的管理员工具;swift

整合:提供统一入口、统一风格,这就要求咱们须要对Ganglia作必定的二次开发,从而与swift-related 监控部分整合,考虑到ganglia web front使用的是PHP语言开发的,运行环境为Apache2。而咱们打算用JSP对swift-related部分进行开发,运行在Tomcat中,所以须要整合PHP + JSP环境,这个再以后再介绍。windows

好了,以上就是总体的思路了,step by step,本篇主要介绍Ganglia。浏览器

 

=====================================Ganglia=====================================服务器

Ganglia是一个集群监控工具,由UC Berkeley建立并开源。Ganglia的中文意思是神经中枢,如今支持多部分操做系统(包括linux、unix、windows),可支持2000个节点的网络监控(固然这不是上限,只是一个大集群使用的范例)。

基本结构

Ganglia底层使用RRDTool得到数据,Ganglia主要分为两个进程组件:

  • gmond(ganglia monitor deamon)
  • gmetad(ganglia metadata deamon)

其中,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采集的数据用图表展现出来。

显然,这种方式很是灵活,能够实现多种结构的数据监控。由下图,咱们能够清晰的看出这种层次化的结构,和不一样的部署方式。

 

集群部署

在这里,仅介绍ubuntu上的部署方式,由于很简单!只须要安装两个包:ganglia-monitor和ganglia-webfrontend。其中ganglia-webfrontend只须要安装在提供页面展现的服务器上,而且若是你的ubuntu没有PHP和Apache2环境的话,它也会自动帮你安装。

在这里我直接介绍多播(ganglia默认的方式,此外还支持单播)方式的集群部署,至于单机的方式,其实只要把ganglia-monitor和ganglia-webfrontend装在一台机器上就能够了。

1)集群环境
  gmond:4台(192.168.1.10一、192.168.1.10二、192.168.1.10三、192.168.1.104)
  gmetad + ganglia web:1台(192.168.1.104)
  操做系统:Ubuntu 11.04

2)部署过程
  在192.168.1.10一、192.168.1.10二、192.168.1.103这三台仅运行gmond的节点上安装ganglia-monitor:

sudo apt-get install ganglia-monitor

  在192.168.1.104这台包含全部ganglia服务的节点上安装ganglia-monitor和ganglia-webfrontend,这个过程会默认为没有Apache和PHP的环境的系统安装Apache2和PHP:

sudo apt-get install ganglia-webfrontend ganglia-monitor

  在ganglia-webfrontend安装完毕后,ganglia-webfrontend这个包默认会将Web相关的代码安装在”/usr/share/ganglia-webfrontend/”路径下,这样apache访问不到。所以,可使用软连接,或者直接将目录移到”/var/www/”目录下。

sudo ln -s /usr/share/ganglia-webfrontend/ /var/www/ganglia

  或者: 

sudo mv /usr/share/ganglia-webfrontend/ /var/www/ganglia

3)配置 

  在咱们的监控系统中,将cluster命名为swift,grid命名为MyGrid,并采用组播的方式。

  配置gmond:打开/etc/ganglia/gmond.conf 修改 cluster name :

cluster { 
    name = "swift"
    owner = "unspecified"
    latlong = "unspecified"
    url = "unspecified" 
}

  配置gmetad:打开/etc/ganglia/gmetad.conf 添加数据源 和 网格名称:

data_source "swift" localhost 
gridname "MyGrid"

4)启动
  重启192.168.1.104的gmated:

service gmated restart

  重启每一个节点的gmond(注意服务名是ganglia-monitor,不是gmond!):

service ganglia-monitor restart

5)页面

  完成以上工做后,ganglia的部署就完成了,如今你能够在192.168.1.104上直接打开浏览器访问 http://localhost/ganglia,就能看到图形界面啦!或者你能够经过IP直接访问,若是修改了端口记得加上新端口访问。

  这里给出一张单机部署的web front end截图,示意示意 ^_^~ 这个单机的服务,我将其cluster命名为“yuki-cluster”,哈哈

 

至此,部署的工做就完成啦!=D

 

注意点

  • 本打算使用单播的方式来部署,即每一个gmond配置文件中指定gmetad的IP地址,可是失败了。
  • 在采用多播的方式时,若是gmetad所在的节点不运行ganglia-monitor,也没法采集到其余纯ganglia-monitor的数据,不知道为何。
  • 若是在启动的过程当中出现数据不一致,好比CPU明明是4核,但只看到1个,则有多是ganglia-monitor的启动时间与gmetad有冲突,重启一下便可。

 

参考文章

Ganglia 体系结构及功能介绍  

Ubuntu10.04 Ganglia安装配置

Ganglia监控Hadoop及Hbase集群性能(安装配置)

 

  若是之后成功实现了单播部署,以及只运行gmetad的方式,再回来补充哈。更多详细的内容,能够看我给出的参考文章 :)

相关文章
相关标签/搜索