本书全方位、系统性地介绍了Graphite的起源、发展及其核心组件的应用,并深入浅出地介绍了监控领域的相关知识。
本书第1章至第4章主要介绍监控的基本概念,以及Graphite核心组件的特性。第5章至第7章主要介绍创建基本折线图的流程,使用链式函数和多坐标轴构建复杂图表的方法,以及使用Graphite原生仪表盘及其他第三方仪表盘的方法。第8章和第9章主要面向系统管理人员介绍如何在生产环境中对Graphite进行扩展及故障排除。
本书适合系统监控领域、AIOps相关领域的读者阅读,对于想要了解更多系统监控领域相关知识的技术人员、应用工程研发人员亦有一定的参考价值。
Graphite监控图书终于问世:配置简单、渲染API友好、支持图表原型开发,可大规模监控动态主机和应用指标。
韩曦,自2008年研究生毕业起,开始从事软件研发和技术管理工作,至今已有10余年相关经验。曾担任曙光信息高级研发工程师,火币资深研发工程师,融数数据架构师,目前担任多来点信息技术有限公司架构师。主导研发了日志平台、APM系统及CDP平台等大中型软件。此外对Kafka、ELK和FLINK等大数据技术框架有深入理解。对基于AIOps理论的监控系统构建有较深入的研究。
前言
20年前,使用SNMP和Perl脚本监控互联网路由器被认为是最前沿的技术。这些工具为网络管理员提供了对其个人操作和用户活动进行监控的全新方案。随着互联网的普及,成功的在线业务和服务的数量不断增加,这预示着需要更好的监控和趋势预测软件。一方面,企业必须进行防御性投资以免服务和网络中断; 另一方面,随着企业系统不断扩展以满足用户需求,它们需要改进容量规划方法。
Graphite是当今最强大的监控工具之一。它的受欢迎程度不仅取决于其开源性,还取决于其易用性、图表原型快速开发功能,以及友好的渲染API,渲染API允许任何人在其应用程序和网站中嵌入Graphite图表。Graphite用户社区非常庞大并会定期将增强功能反馈到核心项目中,例如,新的统计和转换函数,用于呈现客户端图表的JSON输出格式,甚至是可替换的存储后端,这样,开发人员就可以利用不断发展的分布式数据库系统生态带来的各种优势。
目标读者
本书适合想要了解更多有关监控系统、服务或应用程序方面内容的读者。除假设读者可以访问计算机进行相关配置并操作Graphite实例外,本书还对读者的背景或工作经历做了一些假设。
系统管理员和希望获得扩展Graphite相关高级技能的用户应该会喜欢使用 Linux或类UNIX风格的命令行环境。如果你已经知道如何浏览UNIX文件系统、如何使用软件包管理器,并且当Whisper文件过多而导致磁盘快满时,你知道该怎么做,那么你将从本书中获得更多的知识。
每个人都应该为准备好学习监控最佳实践而高兴,这包括时间序列数据(常简称为时序数据)的存储和检索,以及使用充满渲染函数和统计原语的工具包构建图表。我保证,你从本书中学习到的技巧将会让你的朋友和家人感到惊讶。
最后,且同样重要的是,了解如何使用和管理Graphite是一项宝贵的技能。试着搜索一下招聘信息吧,你会发现,有很多企业会为那些知道如何高效使用Graphite或者更好地安装和管理Graphite的人提供工作机会。
为什么要写此书
尽管Graphite很受欢迎,但有关维护和扩展其软件组件的高级知识往往集中在少数有经验的用户和开发人员手中。作为Graphite项目的核心开发者和维护者,当企业和个人经常来找我咨询扩展系统的建议和示范时,我深切感受到人们因未掌握这些知识而带来的影响。遗憾的是,我水平扩展系统的经验远不及我对这个项目的熟悉程度。因此,对我来说,只能在本书中交流我的经验。
我的一些朋友称我为“Graphite传播者”,这听起来可能很荒谬,但我承认当将精细的统计函数序列表示成一个能准确表示源数据的图形时,我有一种自豪感。我希望我能够让读者掌握尽可能多的有关Graphite的知识。
可以理解的是,并非所有人都能像我一样兴奋地谈论时序折线图。我将尽最大的努力让即将讲述的内容始终具有指导性且不失娱乐性,同时,与最常见的用例保持相关性和适用性。
当今监控情况简介
三年前,我写了有关“#监控糟透了”方面的内容,今天我们需要重新审视监控架构的方法。传统的监控系统是单一的、笨重的。Nagios已经暴露出很多不足,而且几乎没有其他替代品。
无论是运气还是本能,我都正确地预测了监控生态系统将朝着明确定义的服务与兼容的接口这种组合模型的方向发展。
特别是,NoSQL数据库的出现导致了各种时序数据库之间的巨大动荡和竞争。用户和企业已经接受了Etsy“衡量一切,衡量一切”的口号,这推动了对更大、更快的数据存储的需求。一个非常成功的系列会议围绕对监控工具链进行更多协作和讨论的愿望展开。人们对自己的流程和工具持有更加开放和透明的态度,这些共享经验使每个人受益。
换句话说,软件的发展速度很快,Graphite也不例外。幸运的是,Graphite在用户和企业中已经达到了很高的应用水平,以至于很难找到不通过其强大的API或任何数量的第三方桥接程序直接与其集成的工具和服务。在许多方面,Graphite已成为其他软件项目的时序规范。
本书内容
本书包括以下内容:
第1章和第2章介绍了监控和趋势方面的概念和名词。在Graphite用户群中有大量专业术语,通过这些专业术语,用户可以使用大家都能理解的语言进行沟通。
第3章和第4章介绍了Graphite的一些组件及各自的特性和功能。你会学到如何安装及配置Graphite。
第5章和第6章介绍了创建第一个线型图表的典型流程。通过这两章的学习,你会了解到使用链式函数和多坐标轴构建复杂图表的方法,并且可以直接使用渲染API进行操作。
第7章介绍了原生的Graphite仪表盘和部分流行的第三方仪表盘。你还会了解到渲染API及如何基于渲染API使用JavaScript进行客户端渲染,就像使用D3.js库一样。
第8章和第9章主要面向系统管理人员,使他们能掌握系统扩展及故障排除的技术,从而提供高性能或高可用的Graphite集群。
附录A 详细说明了由Carbon及Graphite Web提供的内部统计指标。这些指标对于了解 Graphite集群的健康状态是非常重要的。
如果你像我一样,不喜欢按页码顺序读书,那么你可能根本不会阅读前言。但是,如果你有机会看到本书的前言,你会发现这里提供了一些建议阅读的在线资源,参见链接1中提供的网址。