批量上传,套装书可能不全,下单前咨询在线客服! 正版书 !!!
¥ 43.25 4.9折 ¥ 89 全新
库存6件
作者(美)Jason Dixon(杰森·迪克森)
出版社电子工业出版社
ISBN9787121395154
出版时间2020-09
装帧平装
开本16开
定价89元
货号29130754
上书时间2024-10-19
译者序
几乎所有的系统、应用程序、产品的关键性能指标,都是对某些参数或数据点随时间变化情况的统计。因为捕获单个数据点并不能告诉我们太多信息,但是跟踪同一指标随时间的变化趋势可以为我们提供很多有价值的信息。这就是时间序列数据的价值。
在系统监控领域,相信大家对Graphite并不陌生。Graphite是用于收集、存储和绘制时间序列数据的开源监控工具。福特汽车、GitHub、Etsy、华盛顿邮报等都在生产环境中使用Graphite。该工具具有以下三个核心组件。
Carbon:指标收集守护程序,用于监听、收集时间序列数据。
Whisper:简单的数据库,用于存储时间序列数据。
Graphite WebApp:使用Cairo库按需呈现图表的Django WebApp。
我在工程实践中一般使用Prometheus与Graphite这两款工具进行监控系统的构建。在众多监控工具中,为何我会选用Graphite呢?简单来说就是,我觉得它稳定、功能齐全、易扩展。
在使用Graphite的过程中,我发现Graphite具有如下特性,这些特性非常实用,能为生产实践带来很多便利。
拥有完整的生态系统,从指标收集到图表生成,再到与第三方系统集成,所有环节的操作都非常方便。
拥有完整的高可用和可伸缩方案,在生产环境中安全可靠。
配置简单,能很方便地构建百万级指标收集应用程序。
提供类RRD服务,支持指标数据精度递减。
提供丰富的查询函数,包括sum、min、max等。
提供RESTful API,可以直接对接Grafana,以展示指标数据。
基于此,我非常希望能将Graphite推荐给更多相关领域的技术人员。
有幸得到电子工业出版社博文视点公司的编辑的邀请,并完成了本书的翻译和审校工作。我与我的同事刘亚伟、王义明共同完成了本书的翻译工作。我负责第1章、第6章、第7章、前言、封底等的翻译工作,刘亚伟负责第2章、第8章、第9章的翻译工作,王义明负责第3章、第4章、第5章的翻译工作。在此由衷感谢二位的辛勤付出,若读者在阅读过程中发现翻译文风略有不同,还请理解。
在本书的翻译过程中,我获益匪浅。本书作者对Graphite进行了全方位的介绍,我从中深刻理解了Graphite的体系结构及实践。按照本书的指导,我们团队对生产环境中的Graphite集群进行了多方面的加固与性能优化,目前可以稳定支撑日均数十亿条、体量达5~7 TB的监控数据。如果你也与我一样正在使用,或即将使用Graphite来进行应用系统监控,我强烈推荐你阅读本书,它一定会给你带来对Graphite的全新认知,同时对你的工作、学习有非常大的帮助,千万不要错过。
本书是一本非常实用的Graphite从入门到实践的指导手册,如果各位读者具备系统监控领域的基础知识,会更容易理解本书所讲解的内容。
韩曦
前言
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集群的健康状态是非常重要的。
如果你像我一样,不喜欢按页码顺序读书,那么你可能根本不会阅读前言。但是,如果你有机会看到本书的前言,你会发现这里提供了一些建议阅读的在线资源。
本书全方位、系统性地介绍了Graphite的起源、发展及其核心组件的应用,并深入浅出地介绍了监控领域的相关知识。本书第1章至第4章主要介绍监控的基本概念,以及Graphite核心组件的特性。第5章至第7章主要介绍创建基本折线图的流程,使用链式函数和多坐标轴构建复杂图表的方法,以及使用Graphite原生仪表盘及其他第三方仪表盘的方法。第8章和第9章主要面向系统管理人员介绍如何在生产环境中对Graphite进行扩展及故障修复。本书适合系统监控领域、AIOps相关领域的读者阅读,对于想要了解更多系统监控领域相关知识的技术人员、应用工程研发人员亦有一定的参考价值。
Jason Dixon在指标、监控及基础设施领域是一位优秀的思想家。他是全球Monitorama系列会议的创始人,并且是Graphite 项目成员之一。他曾在世界知名企业担任过工程和管理职位,这些公司包括Heroku、GitHub、Librato 和Dyn。他和家人一起住在马里兰州。
韩曦,自2008年研究生毕业起,开始从事软件研发和技术管理工作,至今已有10余年相关经验。曾担任曙光信息高级研发工程师,火币资深研发工程师,融数数据架构师,目前担任多来点信息技术有限公司架构师。主导研发了日志平台、APM系统及CDP平台等大中型软件。此外对Kafka、ELK和FLINK等大数据技术框架有深入理解。对基于AIOPS理论的监控系统构建有较深入的研究。
刘亚伟,自2017年以来先后任职融数数据高级开发工程师、火币资深开发工程师、多来点架构师,负责APM、Alarm系统的构建,对于系统后续演进有深入的理解。
王义明,从事软件开发与测试相关工作多年,具有长期外资企业任职经历,参与过多个著名开源项目,如OpenJDK(Oracle)、OpenWorkben(CA)。具有良好的英文沟通、阅读和写作能力。对Java核心库、应用性能监控、分布式追踪、JVM、Java字节码编程有深入研究。
第1章 什么是Graphite
什么是时序数据
时序数据库
存储注意事项
优先操作
Graphite的发展历程
是什么让Graphite与众不同
简单的指标格式
绘图API
快速原型制作
丰富的统计函数库
链式函数
案例研究:谁在生产环境中使用Graphite
Booking.com
GitHub
Etsy
Electronic Arts
我为什么会选择Graphite
第2章 监控惯例
监控三要素
故障检测
告警
容量规划
重新审视轮询/拉取模型
拉取模型
推模型
Graphite适合监控领域吗
可组合的监控系统
遥测技术
指标路由
聚合
状态引擎
通知路由
存储引擎
可视化
总结
第3章 Graphite组件
Carbon
carbon-cache
carbon-relay
carbon-aggregator
过滤指标
内部统计数据
网络安全注意事项
Whisper
如何创建Whisper文件
保留策略和存档
Whisper归档规则
计算Whisper文件的大小
解析Whisper文件
哪个归档处理我的查询
聚合方法
xFilesFactor
规划命名空间
性能考量
Graphite Web
Django框架
Web服务器
数据库
Memcached
事件
后端存储
总结
基本安装
垂直扩展
水平扩展
多站点复制
后一点想法
第4章 构建你的个Graphite服务器
Synthesize快速入门
Graphite安装在哪里
安装包是否适用于我的操作系统发行版
有哪些安装方法
我应该使用virtualenv吗
有效使用sudo
依赖项
从源码安装
准备你的Web数据库
配置Carbon
carbon.conf
storage-schemas.conf
storage-aggregation.conf
后一些准备工作
启动你的Carbon守护进程
配置Graphite Web
local_settings.py
配置Apache
验证你的Graphite安装
Carbon统计
向Carbon提供新数据
构建你的张图表
第5章 Graphite用户界面
查找指标
浏览导航树
使用搜索功能
使用自动补全功能更智能地工作
通配符
Graphite Composer窗口
嵌入式图表
工具栏
选择近的数据
刷新图表
选择时间范围
导出短链接
从URL加载图表
保存我的图表
从我的图表中删除图表
“图表选项”菜单
添加图表标题
隐藏图例
隐藏坐标轴和网格
使用图表模板
线型图模式
面积图和堆叠图
调整Y轴
“图表数据”对话框
到底什么是目标
构建Carbon性能图表
分享你的工作
第6章 渲染API
使用函数
从基础函数开始
数学与统计转换
过滤和排序
基于通配符分组
数据平滑和预测
调整指标标签
备用的输出格式
第7章 仪表盘
为什么需要仪表盘
Graphite 仪表盘
第三方仪表盘
Grafana
Tasseo
Dusk
自定义开发
Dashing
Rickshaw和D3.js
总结
第8章 定位Graphite性能问题
首要的,也是基本的
故障诊断工具箱
生成指标和基准测试
CPU利用率
磁盘性能
网络
检查指标
配置设置
Carbon
Graphite Web
日志
Carbon
Graphite Web
内核消息
失败场景
磁盘已满
CPU饱和度
渲染问题
更上一层楼
第9章 扩展Graphite
是什么让扩展Graphite变得“困难”
Peter的Graphite故事
开端
受欢迎的痛苦
扫清下一个障碍
试试,再试试
资源化
避免停机
共享Web数据库
双向扩展
后的一些想法
总结
附录A Carbon和Graphite Web的内部统计
本书全方位、系统性地介绍了Graphite的起源、发展及其核心组件的应用,并深入浅出地介绍了监控领域的相关知识。本书第1章至第4章主要介绍监控的基本概念,以及Graphite核心组件的特性。第5章至第7章主要介绍创建基本折线图的流程,使用链式函数和多坐标轴构建复杂图表的方法,以及使用Graphite原生仪表盘及其他第三方仪表盘的方法。第8章和第9章主要面向系统管理人员介绍如何在生产环境中对Graphite进行扩展及故障修复。本书适合系统监控领域、AIOps相关领域的读者阅读,对于想要了解更多系统监控领域相关知识的技术人员、应用工程研发人员亦有一定的参考价值。
Jason Dixon在指标、监控及基础设施领域是一位优秀的思想家。他是全球Monitorama系列会议的创始人,并且是Graphite 项目成员之一。他曾在世界知名企业担任过工程和管理职位,这些公司包括Heroku、GitHub、Librato 和Dyn。他和家人一起住在马里兰州。
韩曦,自2008年研究生毕业起,开始从事软件研发和技术管理工作,至今已有10余年相关经验。曾担任曙光信息高级研发工程师,火币资深研发工程师,融数数据架构师,目前担任多来点信息技术有限公司架构师。主导研发了日志平台、APM系统及CDP平台等大中型软件。此外对Kafka、ELK和FLINK等大数据技术框架有深入理解。对基于AIOPS理论的监控系统构建有较深入的研究。
刘亚伟,自2017年以来先后任职融数数据高级开发工程师、火币资深开发工程师、多来点架构师,负责APM、Alarm系统的构建,对于系统后续演进有深入的理解。
王义明,从事软件开发与测试相关工作多年,具有长期外资企业任职经历,参与过多个著名开源项目,如OpenJDK(Oracle)、OpenWorkben(CA)。具有良好的英文沟通、阅读和写作能力。对Java核心库、应用性能监控、分布式追踪、JVM、Java字节码编程有深入研究。
— 没有更多了 —
以下为对购买帮助不大的评价