zoukankan      html  css  js  c++  java
  • 分布式监控工具Ganglia 介绍 与 集群部署.

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

    其实之前就是有做Swift监控平台的打算的,但是因为没什么硬性需求么,也不要紧的,就一直搁置了。最近实验室来了个大二升大三的小MM体验生活,老大就让我们带着她一起做这个东西,主要好处就是可以多学些实用的技术,了解云存储的基本架构,同时也不需要深入细节,难以理解。

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

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

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

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

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

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

    好了,以上就是整体的思路了,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.101、192.168.1.102、192.168.1.103、192.168.1.104)
      gmetad + ganglia web:1台(192.168.1.104)
      操作系统:Ubuntu 11.04

    2)部署过程
      在192.168.1.101、192.168.1.102、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的方式,再回来补充哈。更多详细的内容,可以看我给出的参考文章 :)

  • 相关阅读:
    67. Add Binary
    66. Plus One
    64. Minimum Path Sum
    63. Unique Paths II
    How to skip all the wizard pages and go directly to the installation process?
    Inno Setup打包之先卸载再安装
    How to change the header background color of a QTableView
    Openstack object list 一次最多有一万个 object
    Openstack 的 Log 在 /var/log/syslog 里 【Ubuntu】
    Git 分支
  • 原文地址:https://www.cnblogs.com/yuki-lau/p/3201110.html
Copyright © 2011-2022 走看看