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

其实之前就是有做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的方式,再回来补充哈。更多详细的内容,可以看我给出的参考文章 :)

分布式监控工具Ganglia 介绍 与 集群部署.的更多相关文章

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

    如果你目的很明确就是冲着标题来的,不爱看我唠叨,请直接进入第二个分割线之后的内容. 其实之前就是有做Swift监控平台的打算的,但是因为没什么硬性需求么,也不要紧的,就一直搁置了.最近实验室来了个大二 ...

  2. 分布式协调服务之Zookeeper集群部署

    一.分布式系统概念 在聊Zookeeper之前,我们先来聊聊什么是分布式系统:所谓分布式系统就是一个系统的软件或硬件组件分布在网络中的不同计算机之上,彼此间通过消息传递进行通信和协作的系统:简单讲就是 ...

  3. 分布式消息系统之Kafka集群部署

    一.kafka简介 kafka是基于发布/订阅模式的一个分布式消息队列系统,用java语言研发,是ASF旗下的一个开源项目:类似的消息队列服务还有rabbitmq.activemq.zeromq:ka ...

  4. kafka分布式消息队列介绍以及集群安装

    简介 首先简单说下对kafka的理解: 1.kafka是一个分布式的消息缓存系统: 2.kafka集群中的服务器节点都被称作broker 3.kafka的客户端分为:一是producer(消息生产者) ...

  5. Hadoop系列之(二):Hadoop集群部署

    1. Hadoop集群介绍 Hadoop集群部署,就是以Cluster mode方式进行部署. Hadoop的节点构成如下: HDFS daemon:  NameNode, SecondaryName ...

  6. Ganglia监控Hadoop集群的安装部署[转]

    Ganglia监控Hadoop集群的安装部署 一. 安装环境 Ubuntu server 12.04 安装gmetad的机器:192.168.52.105 安装gmond的机 器:192.168.52 ...

  7. Dubbo+zookeeper构建高可用分布式集群(二)-集群部署

    在Dubbo+zookeeper构建高可用分布式集群(一)-单机部署中我们讲了如何单机部署.但没有将如何配置微服务.下面分别介绍单机与集群微服务如何配置注册中心. Zookeeper单机配置:方式一. ...

  8. Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列之flanneld网络介绍及部署(三)

    0.前言 整体架构目录:ASP.NET Core分布式项目实战-目录 k8s架构目录:Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录 一.flanneld介绍 ...

  9. 基于winserver的Apollo配置中心分布式&集群部署实践(正确部署姿势)

    基于winserver的Apollo配置中心分布式&集群部署实践(正确部署姿势)   前言 前几天对Apollo配置中心的demo进行一个部署试用,现公司已决定使用,这两天进行分布式部署的时候 ...

随机推荐

  1. unity物理检测的几种方式

    (由于本人大多做2d游戏,因此以下以2d为主介绍,但是具体和3d相差不大) 在unity中有很多不同的物理检测方式,但是大致可以分为以下几种: 1.Physics2d检测系列 Physics2d.Li ...

  2. C++基础知识(2)

    作为接口的函数头 C++函数可被其他函数激活或调用,函数头描述了函数与调用它的函数之间的接口. 在C语言中,省略返回类型相当于说函数的类型为int,然而,C++逐步淘汰了这种用法 也可以使用下面的变体 ...

  3. 网易云易盾朱星星:最容易被驳回的10大APP过检项

    本文由  网易云发布. 1月20日,“走进网易:移动测试与安全实践”公开活动在杭州西湖区颐高创业大厦4F楼友会创业咖啡厅举行.本次活动的议题聚焦在如何实现应用的高效开发.安全过检.开发功耗降到最低等热 ...

  4. 关于T/G/M/K

    //扫盲贴 K, G, T,都是表数量,只是个数字,在不同的场合下表示的不同.在计算机行业中,这几个量可用来表示数据传输速度和容量,下面分别讨论,希望不了解的朋友不要被某知道上的误解了.如果有什么错误 ...

  5. 第五次Scrum meeting

    第五次Scrum meeting 会议内容: 连接方面:确定封装成json的文本格式,尽量在满足在线组和手机客户端两组的情况下,降低自身的难度 测试方面:进行新一轮测试,主要测试程序的稳定性和可靠性, ...

  6. Beta版本冲刺(一)

    目录 组员情况 组员1(组长):胡绪佩 组员3:庄卉 组员4:家灿 组员5:凯琳 组员6:翟丹丹 组员7:何家伟 组员8:政演 组员9:黄鸿杰 组员10:刘一好 组员11:何宇恒 展示组内最新成果 团 ...

  7. 第十一周(11.24-12.01)----ptim测试程序运行速度

    我在dos下用ptime指令对分数运算(http://www.cnblogs.com/YangXiaomoo/p/6095583.html)的运行时间进行了测试.测试结果一般都在0.212-0.217 ...

  8. CentOS 安装 Harbor的简单过程(仅使用http 未使用https)

    1. 下载离线安装包 在线安装 99% 会失败, 建议还是使用离线安装包 下载地址 https://github.com/vmware/harbor/releases 20180719 时最新版本的g ...

  9. OneZero第四周第四次站立会议(2016.4.14)

    1. 时间: 15:00--15:10  共计10分钟. 2. 成员: X 夏一鸣 * 组长 (博客:http://www.cnblogs.com/xiaym896/), G 郭又铭 (博客:http ...

  10. Java == ,equals 和 hashcode 的区别和联系(阿里面试)

    今天阿里的人问我 equals 与hashcode的区别,我答不上来, 仔细查了一下,做了总结: (1) == 这是Java 比较内存地址,就是内存中的对象: java中的==是比较两个对象在JVM中 ...