作者领读 | Prometheus云原生监控

撰文:朱政科

01 作者导读

昨天收到书,用了两天时间,我也亲自把这本书读完了一遍。今天写这篇文章的目的是带读者用正确的方式读这本书。

《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

首先要和大家说的是,这本书除了上百个案例以外,是配有免费视频的。重要的事情说三遍,配有免费视频的、配有免费视频的、配有免费视频的!!!地址如下:

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

其次要和大家说的是,在写这本书的期间,我的确读过了很多同类型的书籍。

第一章

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

举个例子,本章甚至对很多监控系统的英文名都做了罗列,可以看出作者是很用心的在做这件事,诸如:

Nagios 原名NetSaint,是NagiosAin'tGonna Insist On Sainthood的缩写,Sainthood 翻译为圣徒,而Agios是saint的希腊表示方法。

Ganglia的英文直译为神经节、中枢神经,项目的名称其实已经反映了作者的设计思路,即将服务器集群理解为生物神经系统,每台服务器都是独立工作的神经节,这些神经节通过多层次树突结构连接起来,既可以横向联合,也可以从低向高逐层传递信息。具体例证就是Ganglia的收集数据可以工作在单播(unicast) 或多播(multicast) 模式下(默认为多播模式)。很多通过cacti或者Zabbix看不出来的集群总体负载问题,都能在Ganglia中体现,其集群的熵图可以明确集群负载状况,这是Ganglia最大的亮点。

Falcon 是猎鹰、隼的意思,鹰眼具有精准、洞穿的特点。

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

第一章最后给读者的启示是,千万不要迷信权威。不要迷信权威,不能人云亦云。不是别人说好就是好,一定要自己亲身试验过才有发言权,实践出真知,比如Prometheus的作者就亲自怼过社区关于VictoriaMetrics的不实言论:

【原创|译】PromCon上VictoriaMetrics和Prometheus的权威性能和正确性评估

第一章部分原文:

不同的企业成长时期也可以选择不一样的监控系统,CMDB+Zabbix在一定的量级以内还是非常靠谱和稳定的,一台机器就可以扛住很多的监控业务。如果您的业务和技术并没有达到那个量级且中长期达不到那个量级,投入大量人力物力搞出来的那个“巨无霸”,真的非常有意义和价值吗?很多经验丰富的技术人员用过的监控系统应该不下十种,每款监控工具都有自己的优缺点,并不是越新的技术就越好,不能盲目跟风,没有最好的只有最合适的。Nagios,虽然历史悠久,但是在实际运维中依然有它独立存在的意义,在一些基本的监控项目中甚至比高大上的Prometheus更加方便:比如针对ping和telnet port这两项最基本的监控,prometheus有一个up功能函数进行支持,但是只有两个状态up和down,而Nagios对这种状态比较少的监控更为简单直接。盲目追新并不是监控选型的态度,专业的监控架构是综合实际使用情况去做设计做规划,多种监控可以根据实际情况结合使用、相辅相成。

十万的用户有十万的架构方案,百万的用户有百万的架构方案,千万的用户有千万的架构方案,亿级的用户有亿级的架构方案。就好比,我团队一个成员开会时曾提出,“现在我维护的网关系统,界面不太好看,我想请前端资源帮我美化一下”。我直接回复:“现在应该没有人接入你的网关吧,当前第一要务是接入,美化的事情并没有接入那么重要,当前也没有必要浪费前端资源”。什么阶段就应该做什么阶段的事情。

第二、三、八章有免费视频辅助阅读!

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

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

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

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

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

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

没有深度使用Prometheus的用户,第四章和第五章的实战部分可以直接跳过,看看概念就行。如果需要使用的时候可以当作工具书使用。含有大量的思考、误区规避、注意事项、案例等

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

也给出了非常详细的类似代码注释一般的配置文件的编写与解读,希望对读者有帮助

第六章还给出了关于告警过程中分组、抑制、静默等问题做了分析指导。解答技术人员在运维Prometheus过程中,普遍遇到的问题:

  • 为什么该告警的时候不告警 ?

  • 为什么不该告警的时候偏偏告警了 ?

第七

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

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

对于安全问题,本章还给出了一个彩蛋,《Exporter高级:开启TSL连接和Basic Auth认证》,感兴趣的读者可以阅读本内容。

第九


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

02 作者介绍

朱政科

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

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

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

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

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

03 本书的不同之处在哪里?

  • 被誉为Prometheus“百科全书”

  • 可以指导读者快速搭建一个Prometheus监控系统并将其应用到实际工作中

  • 囊括私有云、公有云、混合云环境下的大量案例

  • 针对运维人员,分享Prometheus对接各种云原生应用并实现事前预警、事中报警、事后提供翔实数据的方法

  • 针对开发人员,给出了Prometheus主要组件的源码分析以及部分功能的二次开发实现

  • 从入门知识到高级技巧,全面解读PromQL,并给出上百个PromQL实际案例

  • 以附录的形式给出端口、数据类型、选择器、指标类型、PromQL内置函数等实际工作中需要时常查阅的内容

04 专家推荐

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(网络可靠性工程)利器。

政科在阿里、华为等一线互联网公司长期从事中间件的研发工作,多次经历“双11”大促,在实践中积累了丰富的经验。这本书从架构、中间件研发、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。本书还介绍了很多常见的方法论。配合这些方法论,以及书中的实战内容,读者可以更好地建设自己的监控体系。

张晋涛

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

基于云的技术,不论是上层应用还是底层云平台,都离不开监控,而Prometheus是云化场景下的事实性标准。作者结合丰富的Prometheus实战经验写成本书。本书有概念,有方法,有实例,非常值得广大云化技术的从业者阅读。

苏光牛  

华为云数据库业务总裁,Gaussdb负责人

监控是整个运维乃至整个产品生命周期中重要的一环,选择一款开源的监控系统,是一个省时省力且高效的方案。目前业界有很多不错的开源产品可供选择,其中Prometheus已成为企业构建现代云原生架构的首选开源监控工具。本书通过理论和实践相结合的方式展开,非常适合运维人员及对运维监控感兴趣的开发者阅读。

史健(无济) 

原阿里云资深技术专家,原奇点云CTO 

政科曾主导Kubernetes+Prometheus项目,并一举拿下了公司年度产研类项目奖,他拥有丰富的实战经验,本书是他对这些经验的总结。本书在内容上深入浅出,注重实战性、实用性,不仅适用于运维人员,也很好地满足了开发人员的诉求,值得推荐。

殷柱伟  

腾讯WeTest产品总监 

监控的开源项目有很多,但是能像Prometheus这样优秀的作品并不多;讲述监控和Prometheus的书籍有很多,但是像本书一样完整地对Prometheus的方方面面进行剖析的并不多。所以我想,本书一定会对正走在奋斗路上的"监控者"们有所帮助。

王晓波  

同程旅行 机票事业群 CTO

作为作者多年的朋友加同事,熟知作者如何将Prometheus应用在平时的开发、运维工作中。本书便是作者在监控领域多年开发、运维经验的总结,书中对Prometheus的方方面面进行了深入剖析,从入门到精通全方面介绍如何体系化学习Prometheus系统,特别适合在监控或运维领域奋斗的互联网技术同胞们阅读。

 吕飞 

 华为云SRE技术专家,原阿里巴巴运维技术专家

更多精彩回顾

书讯 |11月书讯(下)| 这些好书必须“买买买”!

书讯 |11月书讯(上)| 这些好书必须“买买买”!

资讯 |DB-Engines 10月数据库排名:“三大王”无人能敌,PostgreSQL紧随其后

上新 | 百度官方出品 | 全面解读PaddlePaddle,零基础快速入门深度学习
书单 | 开学季——计算机专业学生必读的10本畅销经典

干货 | 数据分析必读干货:简单而实用的3大分析方法

收藏 | (万字长文)Spring的核心知识尽揽其中

点击阅读全文购买

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值