Prometheus云原生监控:运维与开发实战pdf下载pdf下载

Prometheus云原生监控:运维与开发实战百度网盘pdf下载

作者:
简介:本篇主要提供Prometheus云原生监控:运维与开发实战pdf下载
出版社:机械工业出版社自营官方旗舰店
出版时间:2020-11
pdf下载价格:10.00¥


预览


内容介绍

产品特色

编辑推荐

适读人群 :本书适合运维工程师和所有Java程序员阅读,尤其适合以下读者: Java初中级开发者; 系统架构师; 中间件开发者; 运维工程师; 工作中使用Prometheus的公司与团队; 开设Prometheus相关课程的大专院校师生; 其他对Prometheus技术感兴趣的人员。

这本书除了上百个案例以外,是配有免费视频的。重要的事情说三遍,配有免费视频的、配有免费视频的、配有免费视频的!!!

地址如下:https://www.imooc.com/learn/1231


第一章是理论基础,它非微观,而是宏观上从方法论上几近全方位的覆盖了监控的方方面面。建议读者朋友们不要略过本章节,相信本章节一定会对大家有所启发。

第一章精心准备了大量的表格,比如Zabbix、Nagios、Ganglia、Open-Falcon、Prometheus等主流监控系统全方位的对比;比如Go语言开发的系统生态,监控系统、微服务框架、WEB框架、WEB工具、容器项目、PAAS工具、数据库工具、存储工具及分布式文件系统、消息系统、服务管理工具、安全工具、网络工具、分布式系统、区块链项目等;以及从功能、性能、数据存储、服务发现、运维管理、开发语言、社区力度及生态发展、误区探讨等九个角度进行监控系统的选型分析思路。


第二章和第三章,手把手带大家搭建基于Spring Boot 2.x的实战监控体系,让大家体会企业项目面向DevOps开发的监控情景。


第八章是第二、三章的升级,大家可以和二、三章以及视频内容结合起来学习。另外,市面上的Prometheus邮件告警内容都没有cc和bcc功能,本书79页针对抄送和密送能力进行了补充。

这是有免费视频的,如果看不懂的同学请结合免费视频学习:

https://www.imooc.com/learn/1231


第四、五章请作为工具书使用

第四章和第五章,用了80多页介绍了PromQL,作者给出了上百个实际案例,这是其他Prometheus书籍和官方文档都没有的。这部分内容,阅读了大量的资料,也做了不少的实践。一个个案例剖析,甚至精确到PromQL的极致优化。

没有深度使用Prometheus的用户,第四章和第五章的实战部分可以直接跳过,看看概念就行。如果需要使用的时候可以当作工具书使用。


第六章请大家一定要围绕这张架构图去理解Prometheus告警机制的原理:



第七章分析了很多Exporter的实现原理,并指导读者如何编写自己的Go语言Exporter。

该章节运用软件工程的知识,通过专业的软件研发流程指导开发者编写Exproter过程中需要注意的方方面面。


第九章介绍了Prometheus集群实战的架构问题,讨论多种集群集解决方案的理念、方法及优化手段,探究如何构建更具有扩展性和可靠性的集群实现。对集群感兴趣的同学可以关注本章节。


内容简介


本书共分为11章,紧密围绕Prometheus的相关概念和技术展开介绍。

第1章主要介绍了监控系统的相关概念。本章首先介绍了监控的概念、监控的分类、MDD(指标驱动开发)的理念、Google四大黄金指标、USE方法、RED方法等知识;接着介绍了监控中的探针和内省、拉取和推送等常见手法;最后介绍了常见的监控系统Nagios、Zabbix、Ganglia、Open-Falcon、ZMon,以及进行监控系统选型时应该考虑的维度及误区。

第2章介绍了Prometheus的相关概念。从历史、特点、架构、局限性、快速开始这5个方面介绍了Prometheus是什么,它在监控领域有哪些使用场景,以及如何快速安装和启动Prometheus。

第3章介绍了在Spring Boot中如何集成Prometheus。本章通过介绍Micrometer的理论,辅以Spring Boot 2.x应用的案例,一步步教读者将Spring Boot 2.x应用数据传输到Prometheus监控系统中,再以可视化监控大盘的形式展现在Grafana仪表盘中。本章还介绍了当系统出现故障时,读者如何将Spring Boot 2.x应用的故障信息以告警的形式发送到邮箱或者钉钉中。本章内容对于广大开发者来说具有一定的实战指导作用。

第4章介绍了与PromQL相关的知识。PromQL是Prometheus实战的核心,是Prometheus

场景的基础,也是Prometheus的重中之重。本章用很大的篇幅,从时间序列、PromQL数据类型、指标类型、选择器、聚合操作、二元操作符、内置函数、最佳实践、性能优化等方面,通过理论联系实际的方式,全方位介绍了与PromQL相关的概念及其具体用法。

第5章介绍了PromQL的高级用法。首先介绍了39个PromQL内置函数,然后围绕HTTP API、记录规则、告警规则、metric_relabel_configs、relabel_configs等多个知识点,以理论联系实际、知识点结合案例的形式,全方位介绍了PromQL的高级用法和最佳实践。

第6章介绍了Prometheus的告警模块—Alertmanager。本章围绕Alertmanager告警的架构、工作原理、集群、触发的流程等展开介绍,接着拓展了告警分组、抑制、静默、延迟等众多知识点。读完本章,读者可以轻松理解告警是如何触发的,还可以分析、定位、解决告警轰炸、告警不准确等常见问题。

第7章介绍了Prometheus中与Exporter相关的概念。Exporter的来源主要有两个,一个是社区,另一个是用户自定义。本章从数据规范、数据采集方式、案例代码编写等方面一步步指导读者自定义Exporter。为了帮助读者提高编码水平和真正写好Exporter,本章还给出了写好Exporter的建议,并结合Node Exporter、Redis Exporter、MySQL Exporter、RocketMQ Exporter等的原理进行分析讲解。通过对本章的学习,读者可以掌握使用和定制Exporter的方法。

第8章介绍了与Spring Boot相关的高级话题,帮助读者了解Prometheus集成Spring Boot的原理、源码和解决方案。本章针对Prometheus监控RESTful、监控业务、通过注解进行监控、监控Dubbo这4个真实需求给出了源码级的技术指导方案。对Prometheus集成Spring Boot过程中可能产生的问题,如空指针、极大值、内存溢出等,本章也做了补充分析与解答。

第9章介绍了与Prometheus集群相关的实战内容。本章围绕Prometheus集群实战的架构问题,讨论了多种集群解决方案(简单HA、简单HA+远程存储、简单HA+远程存储+联邦集群)的理念、方法及优化手段,探究如何构建具有更高扩展性和可靠性的集群。本章是实战章节,在采集指标、推广Prometheus在企业中的部署等细节问题上都给出了指导。本章还通过搭建一个基于M3DB的简单HA+远程存储Prometheus K8S集群的真实案例,用步骤引导以及配置文件样例的形式,带领读者实际部署Prometheus集群。

第10章介绍了Prometheus的存储原理。Prometheus不仅是一个监控系统,还是一款优秀的时序数据库。本章主要围绕Prometheus 3.0版本的TSDB本地存储,对存储文件的格式、存储的原理、chunk、索引、block、WAL日志、tombstones、Checkpoint等相关知识点进行介绍,让读者清晰地了解Prometheus存储的运行机制。

第11章介绍了Prometheus的相关技术。本章首先介绍了Prometheus的伴侣—Thanos和M3DB,并对使用这些技术的过程中可能出现的一些问题给出了指导和建议;然后介绍了继承Prometheus理念的Loki,详细介绍了Loki、ELK等相关日志技术的原理和架构方案;最后,介绍了Operator模式和Prometheus Operator模式,以及在实战中针对压测、查找中间件(如Redis问题)等场景应该如何灵活运用Prometheus。


作者简介

朱政科

资深架构师,中间件技术专家,对数据库连接池和Prometheus等监控技术有深入研究。

有10余年IT行业从业经验,现就职于国内某大型世界百强企业。

曾在阿里等一线互联网公司长期从事中间件的研发及团队管理工作。

先后主导和参与了多个重要的与物联网、人工智能等相关的大型项目。

著有《HikariCP数据库连接池实战》。


精彩书评

Prometheus凭借优秀的表现和简单极致的用户体验,在时序数据库领域脱颖而出,并在监控方面表现优异,成为基础设施建设中不可或缺的部分。在CNCF中,其是除Kubernetes之外最早毕业的项目,这见证了它在云原生领域的影响力和声望。

本书系统阐述了Prometheus开发与运维的知识和技巧,并且辅助以大量实战案例,能够帮助读者更加立体地掌握Prometheus这项技术。

很开心看到朱政科将自己的所学所悟集结成书,也很惊讶他如此高效地出版了自己第二本著作。希望他的书籍能够持续给读者提供帮助。

张 亮

京东数科数字技术中心架构专家,Apache ShardingSphere、ElasticJob创始人


Prometheus作为源自Google INFRA的通用开源监控工具,在业界被广泛使用。学习、理解和熟练使用Promehteus,可以帮你快速构建轻量级监控体系。推荐大家通过本书系统学习Prometheus的特性、使用方法和作者的实战经验。

吴 晟

Tetrate.io创始工程师,Apache软件基金会会员,

Apache SkyWalking创始人兼项目VP,

Apache ShardingSphere、APISIX和Incubator PMC成员


一辆好车除了要有好的发动机和变速箱之外,还需要仪表盘和各种显示设备,以显示油量、速度等各种车辆状态数据。同理,互联网在线服务如果没有良好的监控告警系统,就如同一个人闭着眼睛开车,那是非常可怕的。

对于监控系统而言,简单、可配置、可靠、高性能是必要条件,海量数据的采集、存储与可分析是关键。Prometheus 是一套基于时序数据库的、目前最为流行的、较完善的监控解决方案,其可通过监控、告警及性能优化等,帮助企业及时发现问题、定位问题,是不可多得的SRE(网络可靠性工程)利器。

政科在阿里、华为等一线互联网公司长期从事中间件的研发工作,多次经历大促,在实践中积累了丰富的经验。这本书从架构、中间件研发、SRE等多个角度详细介绍了Prometheus,以及PromQL等知识,包括相关原理和实战要点,具有较强实战指导意义,是不可多得的佳作。

徐 巍

恺英网络技术中心总经理


监控是温度计,也是指标仪。在监控、告警、应急处置三部曲中,监控是基础。本书全面介绍了Prometheus的应用方法和产品内核,内容翔实,是该领域的佳作。

于君泽

《深入分布式缓存》《程序员的三门课》联合作者


相较以往的系统监控,监控作为可观察性实践(监控、日志、追踪)中的关键一环,在云原生时代产生了诸多变化:一是微服务和容器化,导致监控对象和指标呈指数级增加;二是监控对象的生命周期更加短暂,导致监控数据量和复杂度成倍增加。所以需要一款统一监控指标和数据查询语言的工具,Prometheus 应运而生。Pemetheus可以很方便地与众多开源项目集成,帮助我们了解系统和服务的运行状态,另外还可收集分析大数据,帮助我们进行系统优化和做出决策。它不仅可以应用在IT领域,还可以应用于任何需要收集指标数据的场景中。本书实用、凝练,是一本云原生时代监控领域难得的好书。

宋净超

云原生社区创始人


Prometheus作为第二个从CNCF毕业的项目,目前已经在全球各大企业中广泛使用,可以说是云原生架构的开源监控工具。作者作为该领域实战派专家,在本书中全方位阐述了Prometheus的系统架构和工作原理。更难能可贵的是,书中还包含大量实际项目落地指引、最佳实践,以及常见问题的解决方案,是学习Prometheus不可多得的好书。

张 乐

京东DevOps与研发效能技术总监


监控系统是DevOps工程师或SRE工程师必须掌握的系统,因为他们80%以上的线上运维事务都与监控密切相关。完美的监控系统,可以大力促进运维向智能化发展,结合业务报警实现故障快速自愈、无人化运维,并可及时定位问题根源,以及依据历史监控数据对指标做出预测。Prometheus几乎是为云原生而生的监控系统,它具有易于管理、可扩展、易集成、易获取服务内部状态、拥有高效灵活的查询语句、支持统计分析数据、生态强大等特点,因此迅速被各大云厂商使用。本书由入门到精通全方位介绍了如何玩转Prometheus,适合关注监控的广大互联网技术从业者阅读。

王 伟

Oracle ACE For MySQL,京东零售数据库运维专家


Prometheus是一款造福广大DevOps、SRE工程师们的分布式监控系统神器。借助愈演愈烈的容器化部署和云原生的浪潮,Prometheus成为CNCF的基石项目。本书作者有深厚的基础中间件研发背景和丰富的实践经验,对Prometheus进行过深入研究和深度应用,他把自己的理解和实战经验总结出来,著成本书。本书文字简洁而不失其味,对技术原理的剖析鞭辟入里,实用性极强,相信能给读者带来不一样的启发。

张 聪

税友软件集团研发中心副总,基础中间件、持续交付工具和大数据平台研发负责人


我本人接触和使用Prometheus已经很久了,很高兴看到国内有Prometheus相关的书籍出版。本书不局限于Prometheus本身,还对比了市面上其他常见的监控系统,可以帮助读者更好地理解Prometheus。本书还介绍了很多常见的方法论。配合这些方法论,以及书中的实战内容,读者可以更好地建设自己的监控体系。

张晋涛

网易有道资深运维开发人员,云原生技术布道师


目录

赞誉

前言

第1章 监控之美 1

1.1 监控:把握应用的脉搏 2

1.2 监控架构分类 6

1.3 MDD思想:从指标到洞察力 10

1.3.1 MDD理念综述 10

1.3.2 指导实践的3大监控方法论 12

1.4 监控系统选型分析及误区探讨 13

1.4.1 黑盒监控和白盒监控 14

1.4.2 监控检查的两种模式—拉取和推送 14

1.4.3 5种常见的监控系统 15

1.4.4 监控系统的选型分析及误区探讨 24

1.5 本章小结 32

第2章 Prometheus入门 33

2.1 Prometheus发展简史 34

2.2 Prometheus的主要特点 35

2.3 Prometheus架构剖析 37

2.4 Prometheus的3大局限性 43

2.5 快速安装并启动Prometheus 43

2.6 本章小结 49

第3章 Spring Boot可视化监控实战 50

3.1 用Micrometer仪表化JVM应用 50

3.2 在Spring Boot 2.x中集成Prometheus的方法 53

3.2.1 引入Maven依赖 54

3.2.2 application.properties配置 56

3.2.3 通过MeterBinder接口采集和注册指标 57

3.2.4 以埋点的方式更新指标数据 58

3.2.5 效果展示 59

3.3 针对Spring Boot 2.x采集并可视化相关数据 61

3.4 第三方专业可视化工具—Grafana 62

3.5 Grafana高级模板 67

3.6 邮件告警的生成与扩展 77

3.6.1 通过Alertmanager生成邮件告警 77

3.6.2 邮件告警扩展:cc和bcc 79

3.7 构建钉钉告警系统 80

3.7.1 安装MacOS Docker 80

3.7.2 安装Docker镜像 81

3.7.3 钉钉接入设置 83

3.7.4 钉钉告警功能验证 84

3.8 本章小结 86

第4章 PromQL让数据会说话 87

4.1 初识PromQL 87

4.1.1 PromQL的4种数据类型 89

4.1.2 时间序列 90

4.1.3 指标 91

4.2 PromQL中的4大选择器 94

4.2.1 匹配器 95

4.2.2 瞬时向量选择器 98

4.2.3 区间向量选择器 99

4.2.4 偏移量修改器 100

4.3 Prometheus的4大指标类型 101

4.3.1 计数器 101

4.3.2 仪表盘 103

4.3.3 直方图 104

4.3.4 摘要 107

4.4 13种聚合操作 109

4.5 Prometheus的3种二元操作符 117

4.5.1 算术运算符 118

4.5.2 集合/逻辑运算符 119

4.5.3 比较运算符 120

4.5.4 优先级 122

4.6 向量匹配 122

4.6.1 一对一匹配 122

4.6.2 一对多和多对一匹配 123

4.6.3 多对多匹配 124

4.7 本章小结 124

第5章 PromQL高级实战 125

5.1 Prometheus内置函数 125

5.1.1 动态标签函数 126

5.1.2 数学运算函数 128

5.1.3 类型转换函数 133

5.1.4 时间和日期函数 133

5.1.5 多对多逻辑运算符函数 137

5.1.6 排序函数 138

5.1.7 Counter函数 139

5.1.8 Gauge函数 141

5.1.9 Histogram函数 144

5.1.10 时间聚合函数 145

5.2 HTTP API 146

5.2.1 API响应格式 148

5.2.2 表达式查询 149

5.2.3 元数据管理 150

5.2.4 其他拓展 151

5.3 两种可定期执行的规则 155

5.3.1 记录规则 155

5.3.2 告警规则 159

5.4 指标的抓取与存储 160

5.4.1 用relabel_conf?igs抓取指标 160

5.4.2 用metric_relabel_conf?igs存储指标 163

5.5 通过调优解决PromQL耗尽资源问题 166

5.6 本章小结 166

第6章 Prometheus告警机制深度解析 167

6.1 Alertmanager架构解析 167

6.2 AMTool的安装与用法 169

6.3 配置文件的编写与解读 171

6.4 告警规则的定义 177

6.5 关于告警的高级应用与问题处理 180

6.5.1 Prometheus告警失灵 180

6.5.2 出现告警轰炸的问题 182

6.6 构建高可用告警集群 184

6.7 本章小结 186

第7章 Prometheus独孤九剑:通过定制Exporter监控一切 187

7.1 Exporter概述 187

7.2 Exporter的数据规范 189

7.3 Exporter数据采集方式 191

7.4 一个最简单的Exporter示例 192

7.5 自己动手编写一个Exporter 195

7.6 高质量Exporter的编写原则与方法 198

7.6.1 分配合理的端口号 198

7.6.2 设计落地页 201

7.6.3 将软件版本信息提供给Prometheus的正确方法 201

7.6.4 必备指标的梳理 202

7.6.5 编写高质量Exporter的其他注意事项 209

7.7 Node Exporter源码解析 210

7.8 Exporter高级应用:开启TSL连接和Basic Auth认证 214

7.8.1 准备证书 214

7.8.2 支持TLS的配置方法 214

7.8.3 支持Basic Auth的配置方法 215

7.9 本章小结 216

第8章 Spring Boot高级监控实战 217

8.1 Controller监控实战 217

8.2 业务代码监控实战 218

8.3 通过注解进行监控的设置与实战 221

8.4 Dubbo监控实战 223

8.5 SPI机制原理解析 225

8.6 SPI高级实战:基于Dubbo的分布式日志链路TraceID追踪 228

8.7 集成Spring Boot时的常见问题及其解决方案 231

8.8 关于Micrometer的两个常见问题及其解决方案 234

8.8.1 极大值BUG问题 235

8.8.2 Actuator内存溢出问题 237

8.9 micrometer-spring-legacy源码解析 242

8.9.1 spring.factories 244

8.9.2 CompositeMeterRegistryAuto-Conf?iguration 246

8.9.3 XX-MeterRegistry的注册 248

8.9.4 WebMvcMetricsFilter过滤器 249

8.9.5 其他 250

8.10 本章小结 251

第9章 Prometheus集群实战 252

9.1 校时 252

9.2 Prometheus的3种常见HA架构

 方案 255

9.2.1 简单HA 256

9.2.2 简单HA+远程存储 256

9.2.3 简单HA+远程存储+联邦集群 257

9.2.4 联邦集群配置方式 261

9.2.5 功能分区配置方式 262

9.2.6 K8S单点故障引发的POD漂移问题 263

9.3 Prometheus集群架构采集优化方案 263

9.4 在企业中从零推广Prometheus架构 266

9.4.1 研发团队 266

9.4.2 运维团队 267

9.4.3 借助K8S一起推进上线 268

9.5 搭建基于M3DB的简单HA+远程存储Prometheus K8S集群 268

9.5.1 架构说明 268

9.5.2 K8S内部Prometheus 270

9.5.3 K8S外部Prometheus 270

9.5.4 M3DB 276

9.6 多租户、可横向扩展的Prometheus即服务—?Cortex 277

9.7 本章小结 280

第10章 Prometheus存储原理与问题分析 281

10.1 本地存储文件结构解析 282

10.2 存储原理解析 286

10.3 存储配置方法 287

10.4 本地存储容量规划原则与方法 290

10.5 RAM容量规划原则与方法 291

10.6 本地存储及时性和时序性问题分析 293

10.7 本章小结 294

第11章 Prometheus其他相关技术分析与实战 296

11.1 Thanos架构与监控实战 296

11.1.1 Thanos架构解析 297

11.1.2 Thanos在Prometheus监控中的作用与实战 299

11.1.3 Thanos存在的问题 302

11.2 M3DB技术详解 303

11.3 Loki的特性、架构与应用 306

11.3.1 Loki特性 307

11.3.2 Loki架构简介 308

11.3.3 Loki使用方法 310

11.4 ELK的5种主流架构及其优劣分析 311

11.4.1 为什么要用ELK 312

11.4.2 基础架构 313

11.4.3 改良架构 314

11.4.4 二次改良架构 315

11.4.5 基于Tribe Node概念的架构 316

11.4.6 带有冷热分离功能的架构 316

11.5 Fluentd和Fluent Bit项目简介 317

11.6 Operator模式现状与未来展望 319

11.7 关于灵活运用Prometheus的几点建议 321

11.8 本章小结 323

附录A Prometheus相关端口列表 324

附录B PromQL速查手册 350

附录C Prometheus 2.x(从2.0.0到2.20.0)的重大版本变迁 354

附录D Prometheus自监控指标 363

附录E SLA服务可用性基础参考指标 366


前言/序言

为什么要写这本书

熟悉我的读者应该都知道,在这本书之前我写过一本书《HikariCP数据库连接池实战》。那本书解答了“HikariCP该如何监控”的问题,提出了HikariCP的主要监控指标,但是没有对Prometheus这项技术做专项分析。本书则弥补了那本书的遗憾,全面且系统地介绍了Prometheus这款监控产品,并将介绍对象由数据库连接池转移到监控产品本身。从HikariCP(光)到Prometheus(火),也展示了我对于技术的理解层层深入、渐入佳境的过程。

Prometheus是由SoundCloud开源的监控系统,是Google BorgMon监控系统的开源版本。Prometheus开源项目是继Kubernetes后第二个正式加入CNCF(Cloud Native Computing Foundation,云原生计算基金会)的项目,也是继Kubernetes之后第二个正式“毕业”的CNCF项目,是容器和云原生领域事实上的监控标准解决方案。

如今,Prometheus已经被全球众多企业广泛使用,它已经成为企业构建现代云原生架构的首选开源监控工具。近几年来,国内技术社区关于监控的讨论有很多,尤其是关于监控选型的讨论比较频繁,目前IT类公司有一个统一的趋势—使用Prometheus作为通用的监控系统解决方案。百度、京东、阿里、宜信、51信用卡等互联网公司都有专门的Prometheus研发及运维团队。

Prometheus既是一个监控系统,又是一个存储系统,可以说它提供了一个完备的监控生态。我和Prometheus有着不解之缘:早在2014年,我在阿里就职期间就接触过与TSDB时序数据库相关的技术;我后来研发的底层数据库中间件采用了HikariCP数据库连接池,数据库连接池的监控就依托于公司的Prometheus监控系统;2019年,我主导的项目Kubernetes+Prometheus一举拿下了公司年度最佳产研类项目,有10余人参与到这个项目中,通过项目室闭关的形式,用了半年多的时间将全公司的应用全部迁移到了Kubernetes集群上并接入了Prometheus监控。由于长期接触Prometheus,我也经常和一些使用者进行相关问题的讨论,这些经历帮我积累了宝贵的实战经验。

虽然Prometheus相关的书市面上有很多,但是大多都存在一些问题。首先,其中大多数书籍面向的群体仅是运维工程师,却忽略了开发者;其次,部分书籍专注于源码解析或者对Kubernetes技术进行介绍,却忽略了Prometheus本身的内容,比如PromQL是实战中非常重要的知识,但却少有书籍会通过理论联系实际的方式具体介绍;最后,一些书籍大量堆砌代码和概念,导致重点内容介绍不足和实战案例缺乏,这对实际工作不会有太多帮助。

本书在内容上深入浅出,注重实战性、实用性,兼顾开发者的诉求,可以让读者迅速对Prometheus形成闭环认知。书中还提炼了最佳实践以提升读者认知高度和实践能力。

读者对象

本书适合运维工程师和所有Java程序员阅读,尤其适合以下读者:

Java初中级开发者;

系统架构师;

中间件开发者;

运维工程师;

工作中使用Prometheus的公司与团队;

开设Prometheus相关课程的大专院校师生;

其他对Prometheus技术感兴趣的人员。

如何阅读本书

本书共分为11章,紧密围绕Prometheus的相关概念和技术展开介绍。

第1章主要介绍了监控系统的相关概念。本章首先介绍了监控的概念、监控的分类、MDD(指标驱动开发)的理念、Google四大黄金指标、USE方法、RED方法等知识;接着介绍了监控中的探针和内省、拉取和推送等常见手法;最后介绍了常见的监控系统Nagios、Zabbix、Ganglia、Open-Falcon、ZMon,以及进行监控系统选型时应该考虑的维度及误区。

第2章介绍了Prometheus的相关概念。从历史、特点、架构、局限性、快速开始这5个方面介绍了Prometheus是什么,它在监控领域有哪些使用场景,以及如何快速安装和启动Prometheus。

第3章介绍了在Spring Boot中如何集成Prometheus。本章通过介绍Micrometer的理论,辅以Spring Boot 2.x应用的案例,一步步教读者将Spring Boot 2.x应用数据传输到Prometheus监控系统中,再以可视化监控大盘的形式展现在Grafana仪表盘中。本章还介绍了当系统出现故障时,读者如何将Spring Boot 2.x应用的故障信息以告警的形式发送到邮箱或者钉钉中。本章内容对于广大开发者来说具有一定的实战指导作用。

第4章介绍了与PromQL相关的知识。PromQL是Prometheus实战的核心,是Prometheus

场景的基础,也是Prometheus的重中之重。本章用很大的篇幅,从时间序列、PromQL数据类型、指标类型、选择器、聚合操作、二元操作符、内置函数、最佳实践、性能优化等方面,通过理论联系实际的方式,全方位介绍了与PromQL相关的概念及其具体用法。

第5章介绍了PromQL的高级用法。首先介绍了39个PromQL内置函数,然后围绕HTTP API、记录规则、告警规则、metric_relabel_configs、relabel_configs等多个知识点,以理论联系实际、知识点结合案例的形式,全方位介绍了PromQL的高级用法和最佳实践。

第6章介绍了Prometheus的告警模块—Alertmanager。本章围绕Alertmanager告警的架构、工作原理、集群、触发的流程等展开介绍,接着拓展了告警分组、抑制、静默、延迟等众多知识点。读完本章,读者可以轻松理解告警是如何触发的,还可以分析、定位、解决告警轰炸、告警不准确等常见问题。

第7章介绍了Prometheus中与Exporter相关的概念。Exporter的来源主要有两个,一个是社区,另一个是用户自定义。本章从数据规范、数据采集方式、案例代码编写等方面一步步指导读者自定义Exporter。为了帮助读者提高编码水平和真正写好Exporter,本章还给出了写好Exporter的建议,并结合Node Exporter、Redis Exporter、MySQL Exporter、RocketMQ Exporter等的原理进行分析讲解。通过对本章的学习,读者可以掌握使用和定制Exporter的方法。

第8章介绍了与Spring Boot相关的高级话题,帮助读者了解Prometheus集成Spring Boot的原理、源码和解决方案。本章针对Prometheus监控RESTful、监控业务、通过注解进行监控、监控Dubbo这4个真实需求给出了源码级的技术指导方案。对Prometheus集成Spring Boot过程中可能产生的问题,如空指针、极大值、内存溢出等,本章也做了补充分析与解答。

第9章介绍了与Prometheus集群相关的实战内容。本章围绕Prometheus集群实战的架构问题,讨论了多种集群解决方案(简单HA、简单HA+远程存储、简单HA+远程存储+联邦集群)的理念、方法及优化手段,探究如何构建具有更高扩展性和可靠性的集群。本章是实战章节,在采集指标、推广Prometheus在企业中的部署等细节问题上都给出了指导。本章还通过搭建一个基于M3DB的简单HA+远程存储Prometheus K8S集群的真实案例,用步骤引导以及配置文件样例的形式,带领读者实际部署Prometheus集群。

第10章介绍了Prometheus的存储原理。Prometheus不仅是一个监控系统,还是一款优秀的时序数据库。本章主要围绕Prometheus 3.0版本的TSDB本地存储,对存储文件的格式、存储的原理、chunk、索引、block、WAL日志、tombstones、Checkpoint等相关知识点进行介绍,让读者清晰地了解Prometheus存储的运行机制。

第11章介绍了Prometheus的相关技术。本章首先介绍了Prometheus的伴侣—Thanos和M3DB,并对使用这些技术的过程中可能出现的一些问题给出了指导和建议;然后介绍了继承Prometheus理念的Loki,详细介绍了Loki、ELK等相关日志技术的原理和架构方案;最后,介绍了Operator模式和Prometheus Operator模式,以及在实战中针对压测、查找中间件(如Redis问题)等场景应该如何灵活运用Prometheus。

勘误和支持

由于作者的水平有限,书中难免会出现一些错误或者不准确的地方,恳请读者批评指正。为此,我在GitHub网站上专门建了一个Issue项目(https://github.com/CharlesMaster/PrometheusBook/issues),你可以将书中的错误,以及你的疑问、改进建议以GitHub Issue的形式发布在Bug勘误表页面中,我将尽量在线上为你提供最满意的解答。当然,更希望大家通过Issue对Prometheus展开讨论,互相切磋和共同成长。

致谢

首先要感谢伟大的Prometheus,它是一款影响我整个人生的软件。

感谢曾经和我一起致力于研究Prometheus这项技术的领导、同事、朋友,你们投入的时间、精力和智慧为我提供了莫大的帮助。

感谢机械工业出版社华章公司的编辑杨福川老师和孙海亮老师,你们始终支持我的写作,你们的鼓励和帮助引导我顺利完成全部书稿。

最后感谢我的爸爸、妈妈、小姨、姨夫、爷爷、奶奶、外公、外婆,感谢你们将我培养成人,并时时刻刻给予我信心和力量!

谨以此书献给我最亲爱的家人,以及众多热爱Prometheus的朋友们!