随着数据中心的增长和管理人员的缩减,对计算资源使用有效监视工具的需求变得比以往更加迫切。术语监视 在应用到数据中心时可能会让人混淆,因为它的含义会根据具体的说话者和听众而有所不同。例如:

  • 在集群中运行应用程序的人员会思考:“我的作业什么时候运行?它什么时候会完成?以及与上一次相比,它是怎样执行的?”
  • 网络运营中心(NOC)的操作员会思考:“什么时候会出现表示需要解决问题的红灯并安排服务电话?”
  • 系统工程部的人员会思考:“我们的机器如何执行?所有服务是否运行正常?我们可以看到哪些趋势以及如何更好地利用计算资源?”

面对如此多的定义,您必须查找大量的代码才能监视您真正想要监视的内容,不仅如此,还存在无数的产品和服务。可是幸运的是,许多监视工具都是开源的 —— 实际上,某些开源工具的表现比尝试完成同样工作的某些商业应用程序还要好。

使用开源监视工具最困难的部分是实现适合环境的安装和配置。使用开源监视工具的两个主要问题是:

  • 没有一个工具可以按照期望的方式监视所需的所有内容。为什么?因为不同的用户将以不同的方式定义监视(正如我刚才所述)。
  • 由于存在第一个问题,因此要让工具完全按照期望在数据中心中工作可能需要完成大量自定义。为什么?因为不管多么地标准,每一个环境也都是独一无二的。

顺便说一句,商业监视工具也同样存在这两个问题。

因此,我将介绍 Ganglia 和 Nagios,这是两个用于监视数据中心的工具。这两个工具被大量用于高性能计算(HPC)环境中,但是它们对于其他环境也具有很大的吸引力(例如云、呈现集群和托管中心)。此外,两者对监视的定义也采取了不同的侧重点。Ganglia 更多地与收集度量数据并随时跟踪这些数据有关,而 Nagios 一直致力于成为一种报警机制。

随着独立项目的发展,逐步出现了交叠。例如:

  • Ganglia 过去要求代理运行在每台主机上以从中收集信息,但是现在可以通过 Ganglia 的欺骗机制获得度量数据。
  • Nagios 过去也是仅用于从目标主机中轮询信息,但是现在提供了在目标主机上运行代理的插件。

虽然这些工具在某些功能领域里已经发生交叠,但是两者之间还是有许多不同之处,可以让您从运行这两个工具中获益。同时运行两个工具可以相互弥补不足:

  • Ganglia 没有内置通知系统,而 Nagios 在这方面表现杰出。
  • Nagios 似乎没有适合目标主机的可伸缩内置代理(这是一个争议点),而 Ganglia 在设计之初就考虑到这点。

还有其他开源项目也可以完成这两个工具完成的工作,并且有些项目在某些领域做得比其他项目好。常用开源监视解决方案包括 Cacti、Zenoss、Zabbix、Performance Copilot(PCP)和 Clumon(而且我相信您已经有了自己喜欢的选择)。这些工具(包括 Ganglia 和一些 Nagios 插件)中的许多工具在底层都使用了 RRDTool 或 Tobi Oetiker 的 MRTG(Multi Router Traffic Grapher),以生成漂亮的图形和存储数据。

尽管用于监视数据中心的开源解决方案如此众多,我却经常惊讶地发现许多向外扩展的计算中心在开发自己的解决方案,而忽略其他人已经完成的工作。

在这个两部分文章中,我将讨论 Ganglia 和 Nagios,因为有一些事实证据表明这些工具是最常用的。尽管将两者集成在一起是非常普遍的实践(尤其是在一些大型的 HPC 实验室和大学里),但是我发现很少有文章对此进行介绍。

学完本系列,您应当能够安装 Ganglia 并与 Nagios 绑定在一起,并且可以回答不同的用户组向您询问的监视问题。这只是一个开始,但是应当可以帮助您了解基础知识并逐步把握集群的整体情况。

在本文中,我将指导您完成:

  • 安装和配置基本的 Ganglia 设置。
  • 如何使用 Python 模块来用 IPMI(Intelligent Platform Management Interface)扩展功能。
  • 如何使用 Ganglia 主机欺骗来监视 IPMI。

我们的目标 —— 设置 HPC Linux® 集群的基准监视系统,在其中可以在某个程度上解决上面所述的三个不同监视意图:

  • 应用程序人员可以看到队列的排队情况如何,并可以看到运行作业的可用节点。
  • NOC 可以收到系统故障报警或者在 Nagios Web 界面上看到一个闪亮的红色错误指示灯。如果节点出现故障或者温度过高,他们也可以通过电子邮件收到通知。
  • 系统工程师可以绘制数据曲线图、报告集群利用情况并决定未来采购哪些硬件。

Ganglia简介

Ganglia 是 UC Berkeley 发起的一个开源监视项目,设计用于测量数以千计的节点。每台计算机都运行一个收集和发送度量数据(如处理器速度、内存使用量等)的名为 gmond 的守护进程。它将从操作系统和指定主机中收集。接收所有度量数据的主机可以显示这些数据并且可以将这些数据的精简表单传递到层次结构中。正因为有这种层次结构模式,才使得 Ganglia 可以实现良好的扩展。gmond带来的系统负载非常少,这使得它成为在集群中各台计算机上运行的一段代码,而不会影响用户性能。

所有这些数据收集会多次影响节点性能。网络中的 “抖动(Jitter)” 发生在大量小消息同时出现时。我们发现通过将节点时钟保持一致,就可以避免这个问题。

安装Ganglia(服务器)

第一步安装基础包(通过安装光盘的Packages都能找到)

  1. <span style="font-size:14px;">[root@hadoop1 Packages]# rpm -ivh apr-devel-1.3.9-3.el6_1.2.i686.rpm
  2. [root@hadoop1 Packages]# rpm -ivh apr-util-1.3.9-3.el6_0.1.i686.rpm
  3. [root@hadoop1 Packages]# rpm -ivh check-devel-0.9.8-1.1.el6.i686.rpm
  4. [root@hadoop1 Packages]# rpm -ivh cairo-devel-1.8.8-3.1.el6.i686.rpm
  5. [root@hadoop1 Packages]# rpm -ivh pango-devel-1.28.1-3.el6_0.5.i686.rpm
  6. [root@hadoop1 Packages]# rpm -ivh libxml2-devel-2.7.6-4.el6_2.4.i686.rpm
  7. [root@hadoop1 Packages]# rpm -ivh rpm-build-4.8.0-27.el6.i686.rpm
  8. [root@hadoop1 Packages]# rpm -ivh glib2-devel-2.22.5-7.el6.i686.rpm
  9. [root@hadoop1 Packages]# rpm -ivh dbus-devel-1.2.24-5.el6_1.i686.rpm
  10. [root@hadoop1 Packages]# rpm -ivh freetype-devel-2.3.11-6.el6_2.9.i686.rpm
  11. [root@hadoop1 Packages]# rpm -ivh gcc-c++-4.4.6-4.el6.i686.rpm
  12. [root@hadoop1 Packages]# rpm -ivh expat-devel-2.0.1-11.el6_2.i686.rpm
  13. [root@hadoop1 Packages]# rpm -ivh python-devel-2.6.6-29.el6_2.2.i686.rpm
  14. [root@hadoop1 Packages]# rpm -ivh libXrender-devel-0.9.5-1.el6.i686.rpm
  15. [root@hadoop1 Packages]# rpm -ivh dejavu-lgc-sans-mono-fonts-2.30-2.el6.noarch.rpm
  16. [root@hadoop1 Packages]# rpm -ivh rrdtool-1.3.8-6.el6.i686.rpm
  17. [root@hadoop1 Packages]# rpm -ivh php-common-5.3.3-3.el6_2.8.i686.rpm
  18. [root@hadoop1 Packages]# rpm -ivh php-cli-5.3.3-3.el6_2.8.i686.rpm
  19. [root@hadoop1 Packages]# rpm -ivh php-5.3.3-3.el6_2.8.i686.rpm
  20. [root@hadoop1 Packages]# rpm -ivh php-gd-5.3.3-3.el6_2.8.i686.rpm </span>
  1. <span style="font-size:14px;">[root@hadoop1 Downloads]# rpm -ivh libconfuse-2.6-2.el6.rf.i686.rpm
  2. [root@hadoop1 Downloads]# rpm -ivh libconfuse-devel-2.6-2.el6.rf.i686.rpm
  3. [root@hadoop1 Downloads]# rpm -ivh libganglia-3.4.0-1.el6.i686.rpm
  4. [root@hadoop1 Downloads]# rpm -ivh ganglia-devel-3.4.0-1.el6.i686.rpm
  5. [root@hadoop1 Downloads]# rpm -ivh ganglia-gmond-modules-python-3.4.0-1.el6.i686.rpm
  6. </span>

第二步安装RRDTOOL

RRDTool 表示:轮循数据库工具(Round Robin Database Tool)。它是由 Tobias Oetiker 创建的,并且为许多高性能监视工具提供了引擎。Ganglia 是其中之一,但是 Cacti 和 Zenoss 是另外两个。

要安装 Ganglia,首先需要让 RRDTool 运行在监视服务器上。RRDTool 将提供其他程序使用的两个非常优秀的功能:

  • 它将在轮循数据库中存储数据。随着捕捉的数据变得越来越旧,解析的精确性将变得越来越低。这将占用很少的内存并且在大多数情况下仍然有用。
  • 它可以通过使用命令行实参根据捕捉的数据生成图形。
  1. <span style="font-size:14px;">[root@hadoop1 tmp]# tar -zxvf rrdtool.tar.gz
  2. [root@hadoop1 rrdtool-1.4.7]# ./configure --prefix=/usr
  3. [root@hadoop1 rrdtool-1.4.7]# make -j8
  4. [root@hadoop1 rrdtool-1.4.7]# make install</span>

第三步安装Ganglia

安装Ganglia相关包

  1. <span style="font-size:14px;">[root@hadoop1 Downloads]# rpm -ivh ganglia-gmond-3.4.0-1.el6.i686.rpm</span>

安装完毕以后gmond默认就启动了,稍后可以使用service gmond start|stop|restart等,控制启动

在/etc/ganglia/gmond.conf下,先找到setuid = yes,改成setuid=no;然后找到在cluster中的name,改成name='"onlyking";保存,重启gmond服务

  1. <span style="font-size:14px;">[root@hadoop1 Downloads]# rpm -ivh ganglia-gmetad-3.4.0-1.el6.i686.rpm</span>

安装完成后gmetad服务就默认启动了,稍后可以使用service gmond start|stop|restart等,控制启动
在/etc/ganglia/gmetad.conf,下增加一些被监控的机器列表。

data_source "onlyking" hadoop1:8649 hadoop3:8649 hadoop3:8649

其中“onlyking”是集群的名称,呆会要和客户端的gmond中name的配置一样,修改完重启gmetad服务

现在已满足所有先决条件,您可以安装 Ganglia。首先需要获得它。在本文中,我们使用的是 Ganglia 3.4.0。下载 ganglia-3.4.0.tar.gz 文件并将其放在监视服务器的 /tmp 目录中

  1. <span style="font-size:14px;">[root@hadoop1 tmp]# tar -zxvf ganglia-3.4.0.tar.gz
  2. [root@hadoop1 ganglia-3.4.0]# ./configure --with-gmetad
  3. Welcome to..
  4. ______                  ___
  5. / ____/___ _____  ____ _/ (_)___ _
  6. / / __/ __ `/ __ \/ __ `/ / / __ `/
  7. / /_/ / /_/ / / / / /_/ / / / /_/ /
  8. \____/\__,_/_/ /_/\__, /_/_/\__,_/
  9. /____/
  10. Copyright (c) 2005 University of California, Berkeley
  11. Version: 3.4.0
  12. Library: Release 3.4.0 0:0:0
  13. Type "make" to compile.
  14. [root@hadoop1 ganglia-3.4.0]# make -j8
  15. [root@hadoop1 ganglia-3.4.0]# make install</span>

安装web

  1. [root@hadoop1 Downloads]# rpm -ivh ganglia-web-3.5.1-1.noarch.rpm
  1. [root@hadoop1 Downloads]# service httpd start

启动成功后,通过访问http://hadoop1/ganglia就可以看到ganglia的首页了。

第四步,配置hadoop文件

# Configuration of the "dfs" context for ganglia
 dfs.class=org.apache.hadoop.metrics.ganglia.GangliaContext
 dfs.period=10
 dfs.servers=239.2.11.71:8649
# Configuration of the "mapred" context for ganglia
 mapred.class=org.apache.hadoop.metrics.ganglia.GangliaContext
 mapred.period=10
 mapred.servers=239.2.11.71:8649
# Configuration of the "jvm" context for ganglia
 jvm.class=org.apache.hadoop.metrics.ganglia.GangliaContext
 jvm.period=10
 jvm.servers=239.2.11.71:8649
注:239.2.11.71这个是ganglia用的多播的地址,不需要改成gmetad的服务器地址
如果需要监控hbase的话,也一样找到hbase目录下的这个文件,改法一样就不重复了。
改完以后重启hadoop服务

参考资料:

http://blog.csdn.net/a15039096218/article/details/7857308

推荐阅读: 

http://blog.csdn.net/a274955739/article/details/17766107

https://www.zhihu.com/question/21437136

http://gethue.com/

【Hadoop】用 Ganglia 监控hadoop集群的更多相关文章

  1. Ubuntu 14.10 下Ganglia监控Spark集群

    由于Licene的限制,没有放到默认的build里面,所以在官方网站下载的二进制文件中并不包含Gangla模块,如果需要使用,需要自己编译.在使用Maven编译Spark的时候,我们可以加上-Pspa ...

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

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

  3. Ganglia 监控Hadoop

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

  4. Hadoop ha CDH5.15.1-hadoop集群启动后,两个namenode都是standby模式

    Hadoop ha CDH5.15.1-hadoop集群启动后,两个namenode都是standby模式 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一说起周五,想必大家都特别 ...

  5. Hadoop 系列(二)—— 集群资源管理器 YARN

    一.hadoop yarn 简介 Apache YARN (Yet Another Resource Negotiator) 是 hadoop 2.0 引入的集群资源管理系统.用户可以将各种服务框架部 ...

  6. Hadoop 3.1.1 - 概述 - 集群安装

    Hadoop 集群安装 目标 本文描述了如何从少数节点到包含上千节点的大规模集群上安装和配置 Hadoop 集群.如果只是为了尝试,你可以先从单台机器上安装开始(参阅单节点安装). 本文并不包含诸如安 ...

  7. 菜鸟玩云计算之十九:Hadoop 2.5.0 HA 集群安装第2章

    菜鸟玩云计算之十九:Hadoop 2.5.0 HA 集群安装第2章 cheungmine, 2014-10-26 在上一章中,我们准备好了计算机和软件.本章开始部署hadoop 高可用集群. 2 部署 ...

  8. 菜鸟玩云计算之十八:Hadoop 2.5.0 HA 集群安装第1章

    菜鸟玩云计算之十八:Hadoop 2.5.0 HA 集群安装第1章 cheungmine, 2014-10-25 0 引言 在生产环境上安装Hadoop高可用集群一直是一个需要极度耐心和体力的细致工作 ...

  9. Apache Hadoop 2.9.2 的集群管理之服役和退役

    Apache Hadoop 2.9.2 的集群管理之服役和退役 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 随着公司业务的发展,客户量越来越多,产生的日志自然也就越来越大来,可能 ...

  10. Hadoop ha CDH5.15.1-hadoop集群启动后,集群容量不正确,莫慌,这是正常的表现!

    Hadoop ha CDH5.15.1-hadoop集群启动后,集群容量不正确,莫慌,这是正常的表现! 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.集群启动顺序 1>. ...

随机推荐

  1. Linux设备模型(3)_Uevent【转】

    转自:http://www.wowotech.net/device_model/uevent.html 1. Uevent的功能 Uevent是Kobject的一部分,用于在Kobject状态发生改变 ...

  2. USACO 2012 Feb Cow Coupons

    2590: [Usaco2012 Feb]Cow Coupons Time Limit: 10 Sec Memory Limit: 128 MB Submit: 349 Solved: 181 [Su ...

  3. Redis Hlen 命令用于获取哈希表中字段的数量

    http://www.runoob.com/redis/hashes-hlen.html

  4. java使用maven项目(二)分模块开发

    1       整合ssh框架 1.1     依赖传递 只添加了一个struts2-core依赖,发现项目中出现了很多jar, 这种情况 叫 依赖传递 1.2     依赖版本冲突的解决 1.  第 ...

  5. Spring源码 之环境搭建

    1.安装gitHub 在官网https://desktop.github.com/下载githubsetup.exe,在线安装总是出错,试了几次后不成功就放弃了.不知道是不是网络的原因. 后来在网上找 ...

  6. hdu 2236(二分图最小点覆盖+二分)

    无题II Time Limit: 2000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submis ...

  7. JAVA集合操作的利器:CollectionUtils

    使用 CollectionUtils 中四个方法之一执行集合操作.这四种分别是 union(),intersection();disjunction(); subtract(); 下列例子就是演示了如 ...

  8. ionic3 cordova ionic-native插件

    ionic-native插件 cordova安装插件 以及 ionic-native插件使用过程以及步骤 cordova plugin add cordova-plugin-插件名称. //安装插件 ...

  9. [win7] 带网络的安全模式,启动QQEIMPlatform第三方服务

    REG ADD "HKLM\SYSTEM\CurrentControlSet\Control\SafeBoot\Network\QQEIMPlatform" /VE /T REG_ ...

  10. Codeforces 538 B. Quasi Binary

    B. Quasi Binary   time limit per test 2 seconds memory limit per test 256 megabytes input standard i ...