首页>参考读物>计算机科学与技术>软件与程序设计

Ganglia系统监控
作者 : (美)Matt Massie Bernard Li Brad Nicholes Vladimir Vuksan 著
译者 : 陈学鑫 张诚诚 译
出版日期 : 2013-09-02
ISBN : 978-7-111-43674-4
定价 : 59.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 228
开本 : 16
原书名 : Monitoring with Ganglia
原出版社: O'Reilly Media USA
属性分类: 店面
包含CD :
绝版 : 未绝版
图书简介

图书特色

Ganglia系统监控
本书由Ganglia的设计者和维护人员亲自执笔,知识性和权威性毋庸置疑。本书不但展示了如何从任意规模的集群、网格或云基础架构中收集系统指标并使其可视化,而且为如何针对20 000台主机每10秒跟踪一次CPU利用率等问题提供答案。一旦你知晓Ganglia的主要部件如何协同工作,就会明白Ganglia是解决上述问题的最佳选择。本书颇具实践性,可以帮助经验丰富的系统管理员更好地运用Ganglia 3.X。
本书还可以帮助你了解如何扩展基本的指标库,取回当前指标数值,查看指标的汇聚视图,观察数据时序的趋势。你也可以通过一些实际Ganglia案例了解它是如何满足监控的一些需求的。
■ 判断Ganglia是否适合你的工作环境。
■ 了解Ganglia的gmond和gmetad后台程序是如何建立一个临时指标集合的。
■ 根据一些有价值的提示和建议,在部署Ganglia的早期制订可扩展的计划。
■ 利用gweb和Ganglia的Web客户端进一步可视化数据。
■ 编写插件来扩展gmond的指标集。
■ 如何解决安装Ganglia时可能遇到的问题。
■ 如何将Ganglia和sFlow以及Nagios监控系统集成。
Matt Massie:Cloudera软件工程师,在担任加利福尼亚大学伯克利分校研究员时设计开发了Ganglia。
Bernard Li:劳伦斯伯克利国家实验室高性能计算系统工程师,Ganglia系统的维护工程师。
Brad Nicholes:Novell公司软件顾问工程师,Ganglia项目的开发者及系统管理员。
Vladimir Vuksan:Broadcomg公司系统管理员,Ganglia维护 人员。
本书的贡献者还包括:Robert Alexander、Jeff Buchbinder、 Frederiko Costa、Alex Dean、 Dave Josephsen、Peter Phaal和Daniel Pocock。

图书前言

1999年,我收拾行囊,踏上跨国旅途,来到加利福尼亚大学伯克利分校计算机科学系,作为一名研究员,开始新的工作。对我以及整个国家来说,这是一段愉悦的时间。经济在互联网泡沫下发展良好,并且距离泡沫破灭仍有数年时间,私人投资者仍然兴高采烈地砸钱到互联网公司上。
  美国国家科学基金会(National Science Foundation,NSF)也在资助着雄心勃勃的数字化项目,如美国国家高级计算基础设施同盟(National Partnership for Advanced Computing Infrastructure,NPACI)合作项目。NPACI项目的目标是通过建立遍布整个国家的计算基础设施来促进科学发展,在当时,该基础设施被称为“网格”(Grid)。很多大学和政府实验室通过网络连接在一起,共享他们的计算和存储资源,加利福尼亚大学伯克利分校便是其中之一。
我到伯克利分校的时候,工作站网络(Network of Workstations,NOW)项目正接近尾声。NOW项目的团队通过Myrinet交换机和一些专用软件把Sun工作站集群在一起,成功破解了RSA密钥,并打破了一系列排序基准测试的纪录。NOW项目的成功引导了下一个项目Millennium。Millennium项目旨在支持伯克利分校校内基于x86硬件平台构建的更大的分布式集群系统。
今天既有的Ganglia得到了美国NSF对NPACI项目和Millennium项目的大力支持。在科学和教育方面的长期投资使得我们受益,因此,本书的所有销售额将捐赠给美国奖学金(Scholarship America)组织,这个慈善机构迄今已帮助170万学生实现自己的大学梦想。
当然,这个项目中还有很多幕后英雄。例如伯克利分校的David Culler教授,早在硬件集群成为行业实践之前,他就前瞻性地建立了强大的集群来代替商业硬件。David Culler教授的集群研究吸引了大量优秀的研究生参加,包括Brent Chun和Matt Welsh,以及世界一流的技术人员Eric Fraser和Albert Goto。
之所以Ganglia使用轻量级多播监听/通告协议,就是因为受到了Brent Chun早期在集群系统建立可扩展执行环境方面研究的影响。Brent还帮我写过一篇关于Ganglia注1的学术论文,仅要求一瓶Red Bull饮料作为回报。Matt Welsh以其对Linux社区的贡献而闻名,他的专业知识对我个人和开发团队都是无价的。Eric Fraser是Millennium团队完美的领导者,他参与会议讨论、调解竞争优先级,帮助团队重点关注研究工作,同时作出了重大的技术贡献。Ganglia这个名字就是Eric在头脑风暴时想到的。 Albert Goto开发了一个自动安装系统,使得大型集群系统的安装变得容易,通过特定软件配置文件,几分钟内即可完成。他的软件让我轻松地在大型集群系统部署和测试Ganglia,对Ganglia开发的速度和质量作出了毋庸置疑的贡献。
能够和这些才华横溢的教授、学生和同事一起合作,我认为自己真的非常幸运。
我在伯克利分校工作了5年,早期我分别参加了NPACI项目和Millennium项目。回想起来,从中积累的工作经验对我设计并部署Ganglia起到了很大的作用。NPACI项目是基于网格设计的,并且重点监控分散在美国各处的集群;Millennnium项目则关注可扩展软件,从而可以处理越来越大的集群。Ganglia Meta Daemon(gmetad)的分层授权模型以及TCP/XML数据交换功能非常适合在网格中应用。值得一提的是,Federico Sacerdoti积极参与了gmetad的实施,并且写了一篇很棒的学术论文注2来强调gmetad设计的优点。另一方面,Ganglia Monitoring Daemon(gmond)轻量级的消息传递以及UDP/XDR数据交换功能是大型集群的理想选择。Ganglia各部件相互配合,从而提供了可扩展的、适用于多种部署场景的可扩展监控系统。
2000年,我开放了Ganglia的源代码,并且把它放到了伯克利分校的网站上。通过互联网档案馆(Internet Archive抯 wayback Machine)一个全球网站历史信息查询系统,你现在依然可以看到原来的那个网页(http://web.archive.org/web/20010603093706/http://www.millennium.berkeley.edu/ganglia/)。Ganglia的第一个版本是用C语言开发的,发布于2001年1月9日,版本号为1.0-2。有趣的是,前不久我下载了1.0-2,稍微调整之后,它仍然可以在我的笔记本电脑CentOS 5.8 VM中运行。
接下来我将带你迅速浏览Ganglia 12年来的历史。
Ganglia 1.0-2需要在集群中的每台主机上部署一个守护进程,称为树突(dendrite)。树突会定时发送心跳,并在常用多播通道上公布/proc目录下主要指标的变化。为了收集树突状态的更新,需要为每个守护进程部署一个单独的实例,称为轴突(axon)。轴突用来索引内存中的指标,并应答ganglia这个命令行工具的各种查询请求。

如果不附加任何选项运行ganglia,输出的提示内容如下:
$ ganglia 
GANGLIA SYNTAX
   ganglia [+,-]token [[+,-]token]...[[+,-]token] [number of nodes]
   modifiers
    + sort ascending  (default)
    - sort descending
   Tokens
    cpu_num cpu_speed cpu_user cpu_nice cpu_system
    cpu_idle cpu_aidle load_one load_five load_fifteen
    proc_run proc_total rexec_up ganglia_up mem_total
    mem_free mem_shared mem_buffers mem_cached swap_total
    swap_free
   number of nodes
    the default is all the nodes in the cluster or GANGLIA_MAX
   environment variables
    GANGLIA_MAX  maximum number of hosts to return          
             (can be overidden by command line) 
 EXAMPLES
 prompt> ganglia -cpu_num
   would list all (or GANGLIA_MAX) nodes in ascending order by number of cpus
 prompt> ganglia -cpu_num 10
   would list 10 nodes in descending order by number of cpus
 prompt> ganglia -cpu_user -mem_free 25
   would list 25 nodes sorted by cpu user descending then by memory free ascending  
(例如, CPU负载最低且可用内存最多的25台主机)
从帮助界面可以看到,ganglia的第一个版本可以支持21种不同系统指标的查询、排序和输出。现在你知道为什么Ganglia的指标名称看起来很像一个个命令行参数(例如,cpu_num、mem_total)了吧,因为它们曾经就是命令行参数。
ganglia命令的输出使它很容易嵌入脚本中,比如例P-1,从-load命令行的输出可以自动生成一个包含集群中最小负载主机的MPI主机文件,从而均衡各主机MPI工作负荷。Ganglia也可以自动将已经停止发送心跳的主机从列表中删除,以避免系统的任务发送到那些已经死机的主机上。
例P-1:查询最小负载的10台主机
$ ganglia -load_one 10
hpc0991 0.10
hpc0192 0.10
hpc0381 0.07
hpc0221 0.06
hpc0339 0.06
hpc0812 0.02
hpc0042 0.01
hpc0762 0.01
hpc0941 0.00
hpc0552 0.00
Gangia1.0-2可以查询轴突,并将查询结果以PHP 3编写的一个简单的用户界面显示,其中包括聚合集群CPU的动态曲线图、内存利用率和被查询指标的表格显示。在用户界面中,可以根据主机名过滤显示结果,也可以限制显示的主机数量。
Ganglia在过去的12年中走过很长的路。阅读本书的时候,你可以看到它的进步。
Ganglia 1.0只能运行在Linux中,而今天的Ganglia可以在几十种平台上运行。
Ganglia 1.0不支持时间序列,而今天的Ganglia借助Tobi Oetiker开发的RRDtool(Round Robin Database tool)或者Graphite能够提供粒度从几分钟到几年的历史数据。
Ganglia 1.0只有一个基本的Web界面,而今天的Ganglia具有丰富的用户界面(见图P-1),支持自定义视图、手机应用,现场仪表盘等。
Ganglia 1.0是不可扩展的,而今天的Ganglia可以通过Python和C模块或简单的命令行工具来发布自定义指标。
Ganglia 1.0只能监控单一集群,而今天的Ganglia可以同时监控分布在全球的上百个集群。

图P-1:Ganglia的第一个Web 界面
我刚刚在Ganglia的主要网站检查了Ganglia的下载状态,Ganglia的下载次数已经超过880 000次。如果把提供Ganglia安装包的所有第三方网站也计算在内,我相信总下载次数会超过一百万次。
虽然美国NSF和伯克利分校对Ganglia的发起作出了巨大贡献,但Ganglia能有今天的发展,更离不开开源社区的慷慨支持。在Ganglia的发展过程中,开源社区有近40位活跃的提交者,并有数百人提交了补丁和bug报告。本书的作者和撰稿人是Ganglia系统的主要贡献者以及权威用户,将向你提供他们曾经亲自编写过或者每天都会用到的Ganglia特性的深度信息。
回想Ganglia的发展及现在的成功,我在骄傲之余仍有些小小遗憾。我很遗憾我们花了11年时间才出版了一本关于Ganglia的书。但是我相信你会发现这本书是值得等待的。我要感谢Michael Loukides、 Meghan Blanchette,以及让这本书成为现实的O扲eilly的优秀团队。
——Matt Massie
本书的约定
本书使用了以下排版约定:
斜体(Italic)
用于新术语、URL、电子邮件地址、文件名与文件扩展名。
等宽字体(Constant width)
用于表明程序清单,以及在段落中引用的程序中的元素,如变量、函数名、数据库、数据类型、环境变量、语句、关键字等。
等宽粗体(Constant width bold)
用于表明命令,或者需要读者逐字输入的文本内容。
等宽斜体(Constant width italic)
用于表示需要使用用户提供的值或者由上下文决定的值来替代的文本内容。
注意: 这个图标代表一个技巧、建议或一般性说明。
警告: 这个图标代表一个警告或注意事项。
示例代码的使用
本书提供代码的目的是帮你快速完成工作。一般情况下,你可以在你的程序或文档中使用本书中的代码,而不必取得我们的许可,除非你想复制书中很大一部分代码。例如,你在编写程序时,用到了本书中的几个代码片段,这不必取得我们的许可。但若将O扲eilly图书中的代码制作成光盘并进行出售或传播,则需获得我们的许可。引用示例代码或书中内容来解答问题无需许可。将书中很大一部分的示例代码用于你个人的产品文档,这需要我们的许可。
如果你引用了本书的内容并标明版权归属声明,我们对此表示感谢,但这不是必需的。版权归属声明通常包括:标题、作者、出版社和ISBN号,例如:“Monitoring with Ganglia by Matt Massie, Bernard Li, Brad Nicholes, and Vladimir Vuksan (O扲eilly). Copyright 2013 Matt Massie, Bernard Li, Brad Nicholes, Vladimir Vuksan, 978-1-449-32970-9”。
如果你认为你对示例代码的使用已经超出上述范围,或者你对是否需要获得示例代码的授权还不清楚,请随时联系我们:permissions@oreilly.com。
联系我们
有关本书的任何建议和疑问,可以通过下列方式与我们取得联系:
美国:
O'Reilly Media, Inc.
1005 Gravenstein Highway North
Sebastopol, CA 95472
中国:
北京市西城区西直门南大街2号成铭大厦C座807室(100035)
奥莱利技术咨询(北京)有限公司
我们会在本书的网页中列出勘误表、示例和其他信息。可以通过http://oreil.ly/ganglia访问该页面。
要评论或询问本书的技术问题,请发送电子邮件到:
bookquestions@oreilly.com
想了解关于O扲eilly图书、课程、会议和新闻的更多信息,请访问以下网站:
http://www.oreilly.com.cn
http://www.oreilly.com

上架指导

计算机\程序设计

封底文字

本书由Ganglia的设计者和维护人员编写,展示了如何从任意规模的集群、网格或云基础架构中收集系统指标并使其可视化。如何对20 000台主机每十秒跟踪一次CPU利用率?一旦你知道Ganglia的主要部件如何一起协同工作,就会明白Ganglia是解决上述问题的最佳工具。本书非常实用,可以帮助经验丰富的系统管理员更好地运用Ganglia 3.X。
本书还可以帮助你了解如何扩展基本的指标库,取回当前指标数值,查看指标的汇聚视图,观察数据时序的趋势。你也可以通过一些实际Ganglia案例了解它是如何满足监控的一些需求。
·判断Ganglia是否适用于你的工作环境。
·了解Ganglia的gmond和gmetad守护进程是如何建立一个临时指标集合的。
·根据一些有价值的提示和建议,在部署Ganglia的早期制定可扩展的计划。
·用gweb和Gangla的Web前端进一步可视化数据。
·编写插件来扩展gmond的指标集。
·如何解决安装Ganglia时可能遇到的问题。
·如何将Ganglia和sFlow以及Nagios监控系统集成。

作者简介

(美)Matt Massie Bernard Li Brad Nicholes Vladimir Vuksan 著:Matt Massie,Cloudera软件工程师,在担任加利福尼亚大学伯克利分校研究员时设计开发了Ganglia。 Bernard Li,劳伦斯伯克利国家实验室的高性能计算系统工程师,Ganglia系统的维护工程师。 Brad Nicholes,Novell公司软件顾问工程师,Ganglia项目的开发者及系统管理员。 Vladimir Vuksan,Broadcomg公司系统管理员,Ganglia的维护人员。对本书的贡献者还包括:Robert Alexander、Jeff Buchbinder、Frederiko Costa、Alex Dean、Dave Josephsen、Peter Phaal和Daniel Pocock。

译者简介

陈学鑫 张诚诚 译:暂无简介

译者序

Ganglia引起了计算机网络监控领域的一场大型革命,它独到的设计理念、强大的功能、丰富的插件,以及它与Nagios、sFlow等工具的有机结合,成为大型计算机网络监控领域当之无愧的王者。本书详细介绍了Ganglia的设计、功能和使用方法,并配有大量的实例解析,帮助你快速上手使用Ganglia,而当你开始使用Ganglia的时候,就会发现,以后再也离不开它了。
  本书作者同时也是Ganglia系统的缔造者,他们就像一群宗师级别的武林高手,把创造的绝世武功写入一本秘籍中。秘籍中每招每式的背后都深藏着这群宗师返璞归真的宝贵经验,反复的阅读过程中你会感受到这本秘籍的博大精深,每读一遍,都会有不同的收获。
  翻译图书是一个痛苦而又令人兴奋的过程。大量的专业词汇、几位作者风格迥异的英文写作方式,以及Ganglia特有的一些参数设置,这些都给翻译带来了极大的困难。往往为了翻译短短的一句话,需要查阅几个小时的资料,并反复揣摩作者的原意,这些都给我们带来极大的“痛苦”,而当我们终于为这些词汇找到准确并合适的翻译,并贴切地表达出作者的原意时,一种兴奋感油然而生,正是这种兴奋感让我们一直坚持着,并最终完成了整本书的翻译。
  由于时间上的仓促和Ganglia极强的专业性,在本书翻译过程中难免出现欠妥之处,如果对本书的翻译有任何的问题和建议,请与我们联系:shally_chen@live.cn,感谢你的理解与支持。
  感谢机械工业出版社华章分社对我们的信任,没有他们的支持,我们很难有勇气完成这项艰巨的任务。
陈学鑫 张诚诚
2013年7月于深圳

图书目录

前言 1
第1章 初识Ganglia 9
规模的问题 9
主机即监控系统 10
基于冗余的结构 11
Ganglia是否适合你 11
gmond:字节大爆炸 12
gmetad:整合所有信息 14
gweb:下一代数据分析 15
稍等!这并不是所有 16
第2章 Ganglia的安装和配置 18
Ganglia的安装 18
Ganglia的配置 27
安装后的工作 47
第3章 可扩展性 49
谁会关注可扩展性 49
gmond和Ganglia集群的可扩展性 49
gmetad存储规划和可扩展性 50
第4章 Ganglia的Web界面 58
Ganglia的Web 界面导航 58
gweb的Search选项卡 65
gweb的Views选项卡 66
gweb 的Aggregated Graphs选项卡 68
gweb的Compare Hosts选项卡 69
gweb的Events选项卡 69
gweb的Automatic Rotation选项卡 72
gweb的Mobile选项卡 72
自定义复合图表 72
其他特性 74
认证和授权 75
第5章 指标管理和扩展 78
gmond:指标收集代理 78
基本指标 79
扩展指标 81
利用模块扩展gmond 82
利用gmetric扩展gmond 98
如何在C/C++、Python和gmetric之间做出选择 101
XDR协议 102
Java和gmetric4j 104
真实世界:利用NVML模块进行GPU监控 105
第6章 Ganglia故障排查与处理 108
概述 108
有用的资源 109
对监控系统进行监控 110
常用故障排查机制及工具 110
在前台/调试模式下运行 115
常见的部署问题 120
典型问题及解决步骤 121
第7章 Ganglia与Nagios 129
发送Nagios数据到Ganglia 130
使用Nagios监控Ganglia指标 133
在Nagios UI中显示Ganglia数据 138
使用Nagios监控Ganglia 139
第8章 Ganglia与sFlow 142
架构 144
标准sFlow指标 145
Java虚拟机指标 149
配置gmond以接收sFlow 153
Host sFlow 代理 155
故障解决 160
联合其他sFlow工具使用Ganglia 163
第9章 Ganglia案例分析 168
Tagged公司 169
SARA 177
路透社财务软件 182
Lumicall(Android上的移动VoIP) 186
稍等,多少指标?监控Quantcast 191
工具箱中的很多工具:监控Etsy 197
附录A 先进的指标配置与调试 201
附录B Ganglia和Hadoop/HBase 209

教学资源推荐
作者: 邱李华 曹青 郭志强
作者: [美] 约翰·戴维·斯通(John David Stone) 著
作者: Alfred V.Aho, Ravi Sethi, Jeffrey D.Ullman
参考读物推荐
作者: Dave Shreiner, Mason Woo, Jackie Neider, Tom Davis