首页>参考读物>计算机科学与技术>综合

Prometheus监控实战
作者 : [澳] 詹姆斯·特恩布尔(James Turnbull) 著
译者 : 史天 张媛 肖力 译
出版日期 : 2019-08-07
ISBN : 978-7-111-63311-2
定价 : 79.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 230
开本 : 16
原书名 : Monitoring with Prometheus
原出版社: Turnbull Press
属性分类: 店面
包含CD : 无CD
绝版 : 未绝版
图书简介

本书讨论如何用Prometheus实现以度量为中心的监控。教你如何使用Prometheus来监控主机、应用程序和服务。我们将介绍安装、基本监控、服务发现、警报、日志监控、扩展和可视化。了解如何在以度量为中心的世界中进行监控,包括构建动态阈值、基本异常检测和监控聚合和联合。将了解如何应用现代模式,如谷歌的四个黄金信号、使用方法和红色方法。我们讨论了对Kubernetes、Docker容器、数据库的监控,并研究了插装应用程序和集成日志记录。关注于监控高度动态、短暂的环境和微服务等新体系结构的特殊挑战。关注云中的监控,包括服务发现和云平台的监控。

图书特色

前Docker公司服务与支持副总裁撰写,全方位介绍继Kubernetes之后的第二个CNCF毕业项目——Prometheus
理论与实践相结合,从监控体系讲起,循序渐进地介绍了Prometheus的各个功能组件和配置方法,包括监控主机和容器、服务发现、警报管理,以及Kubernetes和运行其上的应用程序的监控

图书前言

本书面向的读者
本书是一本基于Prometheus的监控指南。
大多数示例都基于Ubuntu Linux,所以读者最好具备基本的UNIX/Linux技能,并熟悉命令行、文件编辑、软件安装、服务管理和基础网络知识。
Prometheus正在迅速发展,这意味着你需要注意本书中提及和使用的工具版本。
本书旨在支持Prometheus 2.3.2或更高版本,内容可能不适用于早期版本。
致谢
感谢露丝·布朗(Ruth Brown)帮助本书变得有趣,让我可以坚持写到深夜。
感谢西德·奥兰多(Sid Orlando)让本书的措辞变得更加得体。
感谢布莱恩·布雷泽(Bryan Brazil)出色的Prometheus博客,他同时也在做Prometheus的相关培训。
感谢戴维·卡尔森(David Karlsen)的技术评审工作。
技术评审人员
感谢那些帮助本书变得更加准确和有价值的技术评审!
杰米·威尔金森(Jamie Wilkinson)是Google存储基础设施团队的SRE(网站可靠性工程师)。他拥有计算机科学学士学位,有充足的计算理论知识,于1999年开始从事Linux系统管理工作。他为Google SRE手册贡献了关于监控的章节。杰米与他的家人住在澳大利亚的悉尼。
保罗·吉尔(Paul Gier)作为一个在专有软件流行时期成长的“好奇宝宝”,对缺乏资金和许可证感到沮丧。在了解了一个名为Linux的新操作系统后,保罗开始沉迷于提供自由软件的想法—这一想法最终使他成了Red Hat的首席软件工程师,在那里他做了10多年自由软件的开发工作。保罗对基于容器的新基础设施及其带来的所有解决方案和问题非常着迷。他和他的妻子、三个孩子,以及两只狗和一只淘气的猫住在得克萨斯州的奥斯汀。
编辑
希德·奥兰多(Sid Orlando)是一位编辑和作家,还做着其他一些有趣的事情。她目前正在制作Stripe的软件工程技术杂志《Increment》,吸引了一大批粉丝,并且她在自己纽约的公寓里养了大量的植物。
作者
詹姆斯·特恩布尔(James Turnbull)是一位作家和工程师。他最近出版的书包括《The Packer Book》《The Terraform Book》和《The Art of Monitoring》,以及关于开源容器虚拟化技术的《The Docker Book》,还有关于开源日志工具的《The Logstash Book》。詹姆斯还撰写了两本关于Puppet的书:《Pro Puppet》和《Pulling Strings with Puppet》。同时他还是另外三本书的作者:《Pro Linux System Administration》《Pro Nagios 2.0》和《Hardening Linux》。
他目前是Empatico公司的首席技术官,并且曾担任过Kickstarter公司的首席技术官、Docker公司服务和支持副总裁、Venmo公司工程副总裁以及Puppet公司技术运营副总裁。他喜欢品尝美食、喝酒、读书、摄影和养猫。
代码约定
这是一个内联代码语句。一个代码块如下所示:
代码清单1 示例代码

较长的代码会被换行。如果你在代码块中看到...,则表示为简洁起见,输出被缩减了。
代码和示例
本书中包含的代码和示例可从GitHub上获得:https://github.com/turnbullpress/prometheusbook-code。
勘误
请发送电子邮件至james+errata@lovedthanlost.net。
声明
本书仅供学习使用。作者未将其作为法律、会计或其他专业服务建议提供。尽管在编写本书时已尽最大努力,但作者不做任何形式的陈述或保证,并且不对内容的准确性或完整性承担任何责任,并特别声明对用于特定目的的适销性或适用性不做任何默认保证。对于因本书所含信息或程序直接或间接造成(或声称是由此造成)的任何损失,或偶然或间接损失,作者不对任何个人或实体承担任何责任或义务。每家公司情况都不同,此处包含的建议和策略可能不适合你的情况。在开始任何基础设施项目之前,你应该寻求专业人士的服务。

上架指导

计算机\应用软件

封底文字

通过阅读本书,你将学到以下内容:
·Prometheus监控:使用Prometheus来监控主机、应用程序和服务,内容涉及安装、基本监视、服务发现、警报、日志监控、伸缩和可视化。
·监控与度量:监控基础、方法和途径,介绍如何在以度量为中心的环境中进行监控,包括构建动态阈值、基本异常检测以及监控聚合与联合,研究如何应用现代模式,如谷歌的四个黄金指标、USE方法和RED方法。
·Kubernetes与容器:对Kubernetes、Docker和容器进行监控,专注于监控高度动态、瞬息万变的环境和新架构(如微服务)的特殊挑战。
·云:在云中进行监控,包括服务发现和云平台的监控。

译者序

监控无处不在。
任何服务都离不开监控系统,对于管理维护服务的组织来说,监控是必备技能之一。近几年来,容器化、微服务、云原生等方式成为流行的现代架构思想,这给监控系统带来了不小的挑战。具体来说,监控系统需要在动态的云环境或者基于容器的微服务中快速、自动地识别对象的生命周期,并持续地提供近实时的监控检测。
Prometheus可以帮助你应对这些挑战。Prometheus开源项目孵化于云原生计算基金会(Cloud Native Computing Foundation,CNCF),并在2018年的PromCon会议上宣布正式从CNCF毕业,这是继Kubernetes之后的第二个CNCF毕业项目。如今,Prometheus已被全球众多企业广泛使用,以满足上面提到的复杂的监控需求,同时它也可以用来监控属于传统架构的资源。目前,Prometheus已成为构建现代云原生架构的企业的首选开源监控工具。
本书由浅入深地对Prometheus进行了全方位的介绍,内容通俗易懂,理论与实践相结合。首先从监控体系讲起,介绍了关于监控的各种经典理论和方法。然后循序渐进地介绍了Prometheus的各个功能组件和配置方法,包括监控主机和容器、服务发现、警报管理,以及Kubernetes和运行其上的应用程序的监控。本书覆盖了目前的一些主流云技术(比如AWS),但同样适用于各种其他环境和技术栈。读过本书后,相信你可以设计并构建出一个优秀的监控系统。
这里要感谢肖总,无论是曾经共事的阶段还是在工作之外他都给了我很多的鼓励与支持,很开心也很幸运可以再一次共同完成翻译工作。另外,感谢各位编辑的悉心指导,他们不辞辛苦地对本书进行了大量的校对和编辑工作,最终确保了本书的顺利出版。
最后,感谢爱人和我一起牺牲掉很多休息时间,共同投入到本书的翻译工作中,同时这也是人生一次难得的体验。
由于本人水平有限,书中难免会出现错误或者不妥之处,欢迎批评指正。

史天
2019年5月

图书目录

译者序
前 言
第1章 监控简介1
1.1 什么是监控1
1.1.1 技术作为客户2
1.1.2 业务作为客户2
1.2 监控基础知识2
1.2.1 事后监控2
1.2.2 机械式监控3
1.2.3 不够准确的监控4
1.2.4 静态监控5
1.2.5 不频繁的监控5
1.2.6 缺少自动化或自服务6
1.2.7 监控模式总结6
1.3 监控机制7
1.3.1 探针和内省7
1.3.2 拉取和推送7
1.3.3 监控数据的类型8
1.4 指标8
1.4.1 什么是指标9
1.4.2 指标类型10
1.4.3 指标摘要12
1.4.4 指标聚合12
1.5 监控方法论20
1.5.1 USE方法20
1.5.2 Google的四个黄金指标21
1.6 警报和通知22
1.7 可视化23
1.8 另一本关于监控的书24
1.9 本书内容24
1.10 小结25
第2章 Prometheus简介26
2.1 Prometheus起源26
2.2 Prometheus架构27
2.2.1 指标收集28
2.2.2 服务发现29
2.2.3 聚合和警报29
2.2.4 查询数据29
2.2.5 自治30
2.2.6 冗余和高可用性30
2.2.7 可视化31
2.3 Prometheus数据模型31
2.3.1 指标名称31
2.3.2 标签32
2.3.3 采样数据32
2.3.4 符号表示32
2.3.5 保留时间33
2.4 安全模型33
2.5 Prometheus生态系统34
2.6 参考链接34
2.7 小结34
第3章 安装和启动Prometheus35
3.1 安装Prometheus35
3.1.1 在Linux上安装Prometheus36
3.1.2 在Windows上安装Prometheus37
3.1.3 在Windows上安装Prometheus的其他方式38
3.1.4 在Mac OS X上安装Prometheus38
3.1.5 通过监控套件安装Prometheus38
3.1.6 通过配置管理工具安装Prometheus39
3.1.7 通过Kubernetes安装Prometheus39
3.2 配置Prometheus39
3.2.1 global40
3.2.2 alerting41
3.2.3 rule_files42
3.2.4 scrape_configs42
3.3 启动Prometheus43
3.4 第一个指标44
3.5 表达式浏览器45
3.6 聚合时间序列48
3.7 容量规划51
3.7.1 内存51
3.7.2 磁盘51
3.8 小结52
第4章 监控主机和容器53
4.1 监控节点54
4.1.1 安装Node Exporter54
4.1.2 配置Node Exporter55
4.1.3 配置textfile收集器56
4.1.4 启用systemd收集器57
4.1.5 运行Node Exporter57
4.1.6 抓取Node Exporter58
4.1.7 过滤收集器58
4.2 监控Docker容器59
4.2.1 运行cAdvisor60
4.2.2 抓取cAdvisor61
4.3 抓取的生命周期62
4.4 标签64
4.4.1 标签分类64
4.4.2 重新标记65
4.5 Node Exporter和cAdvisor指标69
4.5.1 USE方法69
4.5.2 服务状态77
4.5.3 可用性和up指标78
4.5.4 metadata指标79
4.6 查询持久性81
4.6.1 记录规则82
4.6.2 配置记录规则82
4.6.3 添加记录规则83
4.7 可视化86
4.7.1 安装Grafana86
4.7.2 启动和配置Grafana88
4.7.3 配置Grafana Web界面89
4.7.4 第一个仪表板91
4.8 小结92
第5章 服务发现93
5.1 静态配置的局限性93
5.2 基于文件的服务发现94
5.3 基于API的服务发现98
5.4 基于DNS的服务发现102
5.5 小结104
第6章 警报管理105
6.1 警报105
6.2 Alertmanager如何工作107
6.3 安装Alertmanager108
6.3.1 在Linux上安装Alertmanager108
6.3.2 在Windows上安装Alertmanager109
6.3.3 通过监控套件安装Alertmanager110
6.3.4 通过配置管理工具安装Alertmanager110
6.4 配置Alertmanager111
6.5 运行Alertmanager113
6.6 为Prometheus配置Alertmanager114
6.6.1 Alertmanager服务发现114
6.6.2 监控Alertmanager115
6.7 添加警报规则115
6.7.1 添加第一条警报规则116
6.7.2 警报触发118
6.7.3 Alertmanager的警报118
6.7.4 添加新警报和模板120
6.8 路由123
6.9 接收器和通知模板126
6.10 silence和维护128
6.10.1 通过Alertmanager控制silence128
6.10.2 通过amtool控制silence130
6.11 小结132
第7章 可靠性和可扩展性133
7.1 可靠性和容错性133
7.1.1 重复的Prometheus服务器134
7.1.2 设置Alertmanager集群135
7.1.3 为Prometheus配置Alertmanager集群136
7.2 可扩展性138
7.2.1 功能扩展138
7.2.2 水平分片139
7.3 远程存储144
7.4 第三方工具144
7.5 小结144
第8章 监控应用程序145
8.1 应用程序监控入门145
8.1.1 从哪里开始146
8.1.2 监控分类146
8.2 指标146
8.2.1 应用程序指标147
8.2.2 业务指标147
8.2.3 放置指标147
8.2.4 实用程序模式147
8.2.5 外部模式148
8.2.6 监控应用程序示例149
8.3 小结155
第9章 日志监控156
9.1 日志处理156
9.2 mtail简介157
9.2.1 安装mtail157
9.2.2 使用mtail158
9.2.3 运行mtail159
9.3 处理Web服务器访问日志161
9.4 解析Rails日志到直方图163
9.5 部署mtail165
9.6 抓取mtail端点165
9.7 小结166
第10章 探针监控167
10.1 探针架构167
10.2 Blackbox exporter168
10.3 安装exporter168
10.3.1 在Linux上安装exporter169
10.3.2 在Windows上安装exporter170
10.3.3 通过配置管理工具安装exporter170
10.4 配置exporter171
10.4.1 HTTP检查172
10.4.2 ICMP检查 172
10.4.3 DNS检查 173
10.5 启动exporter173
10.6 创建Prometheus作业174
10.7 小结176
第11章 推送指标和Pushgateway177
11.1 Pushgateway177
11.1.1 Pushgateway使用场景178
11.1.2 安装Pushgateway179
11.1.3 在Linux上安装Pushgateway179
11.1.4 在Windows上安装Pushgateway180
11.1.5 通过配置管理工具安装Pushgateway181
11.1.6 配置和运行Pushgateway181
11.1.7 向Pushgateway发送指标182
11.1.8 在Pushgateway上查看指标183
11.1.9 删除Pushgateway中的指标184
11.1.10 从客户端发送指标185
11.2 抓取Pushgateway187
11.3 小结188
第12章 监控Kubernetes189
12.1 Kubernetes集群189
12.2 在Kubernetes上运行Prometheus190
12.3 监控Kubernetes191
12.4 监控Kubernetes节点191
12.4.1 Node Exporter DaemonSet191
12.4.2 Node Exporter服务194
12.4.3 部署Node Exporter195
12.4.4 Node Exporter作业196
12.4.5 Node Exporter规则199
12.5 Kubernetes200
12.5.1 Kube-state-metrics200
12.5.2 Kube API202
12.5.3 cAdvisor和节点205
12.6 小结206
第13章 监控Tornado207
13.1 边车模式207
13.2 MySQL208
13.3 Redis213
13.4 Tornado216
13.4.1 添加Clojure包装器216
13.4.2 添加注册表217
13.4.3 添加指标217
13.4.4 导出指标218
13.4.5 Tornado监控配置219
13.5 小结220

教学资源推荐
作者: 周启海
作者: (美)Maurice Herlihy布朗大学(以)Nir Shavit 著   特拉维夫大学
作者: [美]丹尼尔·A.弗莱施(Daniel A. Fleisch)著
参考读物推荐
作者: 方倍工作室 著
作者: [美]拉姆什·沙尔达(Ramesh Sharda) 杜尔森·德伦(Dursun Delen) 埃弗瑞姆·特班(Efraim Turban) 著
作者: 数码摄影杂志社