[套装书]Prometheus云原生监控:运维与开发实战+云原生应用管理:原理与实践(2册)

作者
朱政科 陈显鹭 阚俊宝 匡大虎 卢稼奇
丛书名
云计算与虚拟化技术丛书
出版社
机械工业出版社
ISBN
9782011181054
简要
简介
内容简介书籍计算机书籍 ---------------------------Prometheus云原生监控:运维与开发实战--------------------------- 本书主要围绕当前业界最流行的监控系统Prometheus展开,除了帮助读者快速了解Prometheus的概念、用途、环境搭建等系统性、宏观的认识,更多的让读者感受到Prometheus独孤九剑破众多技术壁垒的精彩。支持监控微服务、系统级监控、数据库监控、中间件监控、大数据监控等。 第1章主要介绍监控系统的相关概念。第2章介绍Prometheus的相关概念。第3章介绍SpringBoot如何集成Prometheus的实战案例。第4章介绍Prometheus中PromQL的相关概念。第5章继续介绍PromQL的更多高级用法。第6章介绍Prometheus的告警模块Alertmanager。第7章介绍Prometheus的exporter相关概念。第8章介绍Prometheus集成SpringBoot实战场景中的高级话题。第9章介绍Prometheus的集群实战。第10章介绍Prometheus的存储原理。第11章介绍Prometheus的其他相关技术。 ---------------------------云原生应用管理:原理与实践--------------------------- 内容简介 这是一部从原理与实践角度讲解云原生应用管理的著作,是阿里云容器服务团队工程师多年云原生应用开发与管理经验的总结。详细讲解了Helm、Kustomize、CNAB、Operator等云原生应用管理框架和工具的应用场景、功能和使用,并通过源码讲解了它们的实现原理,同时提供了大量的案例和代码解析,能帮助读者轻松掌握云原生应用的管理。 全书一共16章,分为4个部分: 第一部分(第1~4章) Helm 首先介绍了Helm的发展历程、适用场景、架构设计、工作机制;然后以Chart为例,讲解了Helm的功能和使用方法;最后通过源代码分析了Helm的实现原理。 第二部分(第5~8章) Kustomize 首先介绍了Kustomize的诞生背景、适用场景、工作机制;然后详细讲解了它的功能和使用方法;最后通过源代码分析了它的实现原理。 . 第三部分(第9~12章) CNAB 首先介绍了CNAB的基本概念、原理和规范;然后以Porter为例,详细讲解了它的功能、用法和实战;最后通过源代码分析了Porter的实现原理,同时讲解了mixin的开发。 第四部分(第13~16章) Operator 首先介绍了Operator的概念、发展和工作原理,然后详细讲解了它的功能、用法、架构、组件和实战,最后通过源代码分析了它的实现原理。
目录



---------------------------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_configs抓取指标 160
5.4.2 用metric_relabel_configs存储指标 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-Configuration 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



---------------------------云原生应用管理:原理与实践---------------------------


前言
第1章 什么是Helm 1
1.1 Helm的发展历程 1
1.2 Helm的适用场景 2
1.3 Helm的社区和生态 3
1.4 Helm的架构设计与工作原理 4
1.4.1 Helm Client 4
1.4.2 Tiller 5
1.5 本章小结 5
第2章 Chart 7
2.1 Chart文件结构 7
2.1.1 Chart.yaml 8
2.1.2 Chart license, README notes 9
2.1.3 Chart Dependences 10
2.1.4 template和values 14
2.2 Helm功能初体验 18
2.2.1 前置条件 18
2.2.2 Helm的三大基本概念 18
2.2.3 安装Helm 18
2.2.4 安装第一个Chart 19
2.2.5 查看当前安装实例 21
2.2.6 删除安装的实例 21
2.2.7 Helm后端存储 22
2.3 helm install 23
2.4 Helm 更新与回滚 25
2.4.1 helm upgrade 25
2.4.2 helm history 25
2.4.3 helm rollback 26
2.4.4 一些有用的更新参数 26
2.5 helm repo 26
2.6 创建自己的Chart 28
2.7 Helm Hooks 29
2.7.1 Helm支持的Hooks种类 30
2.7.2 Hooks 与Release 生命周期的关系 30
2.7.3 简单的Hooks示例 31
2.7.4 使用crd-install来定义一个CRD 33
2.7.5 自动删除先前版本的Hooks 33
2.8 Helm插件 34
2.9 Chart测试 36
2.10 Chart模板开发高阶介绍 38
2.10.1 创建第一个template文件 39
2.10.2 给template添加动态变量 41
2.10.3 模板函数与管道 42
2.10.4 逻辑控制 45
2.10.5 变量 51
2.10.6 自定义模板 53
2.10.7 在模板中引用文件 58
2.10.8 创建一个NOTES.txt文件 60
2.11 本章小结 61
第3章 使用Helm部署Wordpress实战 63
3.1 下载Wordpress Chart 63
3.2 Chart.yaml 64
3.3 requirements.yaml 64
3.4 Charts文件夹 65
3.5 template文件夹 65
3.5.1 helper文件 66
3.5.2 NOTES.txt 68
3.5.3 其他文件 69
3.5.4 tests文件 71
3.6 README.md 72
3.7 values.yaml 72
3.8 安装 73
3.9 本章小结 76
第4章 Helm 源码分析 77
4.1 helm install 77
4.1.1 locateChartPath 78
4.1.2 ensureHelmClient 81
4.1.3 InstallCmd Run 81
4.1.4 installReleaseFromChart 83
4.1.5 setupConnection 84
4.1.6 Helm Client install Function 85
4.1.7 返回Release状态信息 87
4.2 Helm Install Server 88
4.2.1 prepareRelease 89
4.2.2 performRelease 90
4.3 Helm update 93
4.3.1 update 命令的定义 93
4.3.2 Update 服务端的实现 94
4.4 helm ls 96
4.4.1 Client 端实现 96
4.4.2 Server端实现 98
4.5 Helm Rollback 100
4.6 Helm delete 102
4.7 Helm 3简介 104
4.8 本章小结 108
第5章 Kustomize入门 109
5.1 Kustomize介绍 109
5.2 Kustomize原理介绍 111
5.3 Kustomize快速入门 113
5.3.1 安装Kustomize 113
5.3.2 通过Kustomize部署helloworld 114
5.4 本章小结 117
第6章 Kustomize详解 118
6.1 Kustomize术语 118
6.2 Kustomize配置详解 121
6.2.1 资源 121
6.2.2 生成器 122
6.2.3 转换器 124
6.3 命令行使用方法 128
6.3.1 命令行使用 128
6.3.2 kustomize build 130
6.3.3 kustomize edit 136
6.3.4 kustomize create 141
6.3.5 kustomize config 143
6.4 基本用法 147
6.4.1 使用configGeneration 147
6.4.2 使用generatorOptions 149
6.4.3 配置转换器 150
6.4.4 使用变量 153
6.4.5 镜像替换 154
6.4.6 补丁 156
6.5 Kustomize插件 161
6.5.1 插件介绍 162
6.5.2 Exec类型插件 163
6.5.3 Go库文件插件 165
6.6 工作流 169
6.6.1 创建配置仓库 169
6.6.2 配置下发 170
6.6.3 使用共享配置 170
6.7 本章小结 172
第7章 Kustomize实战 173
7.1 示例介绍 173
7.1.1 基础配置 174
7.1.2 测试环境 177
7.1.3 生产环境 180
7.1.4 配置管理 185
7.2 通过插件实现不同环境下部署不同的模板 186
7.2.1 项目介绍 187
7.2.2 插件实现 188
7.2.3 运行插件 191
7.3 本章小结 193
第8章 Kustomize源码分析 194
8.1 Kustomize 执行流程介绍 194
8.2 kustomize build命令解析 196
8.2.1 NewCmdBuild函数解析 197
8.2.2 NewCmdBuildPrune函数详解 198
8.2.3 RunBuild函数详解 199
8.2.4 AccumulateTarget 解析 203
8.2.5 addHashesToNames函数 210
8.2.6 ResolveVars函数 211
8.2.7 computeInventory函数 212
8.3 kustomize edit命令分析 214
8.4 add子命令 215
8.5 set子命令 225
8.6 Fix子命令 228
8.7 remove子命令 229
8.8 kustomize create 命令分析 230
8.9 本章小结 233
第9章 走近CNAB 234
9.1 什么是CNAB 234
9.2 CNAB 基本概念和原理 236
9.3 CNAB规范 238
9.3.1 bundle.json文件格式 239
9.3.2 调用镜像 245
9.3.3 应用包运行规范 246
9.3.4 包格式规范 247
9.4 Duffle和Porter 248
9.4.1 使用Duffle打包Wordpress 248
9.4.2 使用Porter打包Wordpress 250
9.4.3 使用Duffle还是Porter 251
9.5 本章小结 251
第10章 Porter使用详解 252
10.1 Porter快速上手 252
10.1.1 安装Porter 252
10.1.2 创建应用包 253
10.1.3 部署应用 254
10.1.4 更新和卸载应用 255
10.2 创建应用包 255
10.2.1 应用包元数据 257
10.2.2 mixin 257
10.2.3 参数 258
10.2.4 输出 259
10.2.5 校验规则 260
10.2.6 凭据 260
10.2.7 应用包操作 261
10.2.8 自定义操作 263
10.2.9 依赖 263
10.2.10 镜像 263
10.2.11 自定义Dockerfile 264
10.3 mixin 265
10.3.1 安装mixin 266
10.3.2 常用mixin介绍 266
10.4 Porter命令详解 270
10.5 OCI仓库与应用分发 276
10.6 使用Porter分发CNAB应用 278
10.6.1 发布应用包 278
10.6.2 复制应用包 280
10.6.3 导出应用包 281
10.7 本章小结 282
第11章 Porter实战 283
11.1 创建基本的应用框架 283
11.1.1 环境准备 283
11.1.2 创建基本的应用框架 284
11.2 支持参数和输出 288
11.3 定义多个操作步骤 291
11.4 发布应用包 295
11.5 使用应用包依赖 298
11.6 本章小结 300
第12章 Porter mixin开发和源码解析 301
12.1 mixin实现原理 301
12.1.1 mixin调用机制 301
12.1.2 mixin API 302
12.2 mixin开发 306
12.2.1 创建mixin项目 306
12.2.2 mixin代码概览 308
12.2.3 实现build命令 312
12.2.4 定义JSON Schema 313
12.2.5 实现参数组装逻辑 316
12.3 Porter build源码解析 320
12.4 Porter install源码解析 329
12.4.1 准备应用包 330
12.4.2 准备和执行依赖 332
12.4.3 执行主应用包操作 336
12.4.4 Docker驱动的运行过程 339
12.5 Porter运行时源码解析 342
12.6 本章小结 346
第13章 全面了解Operator 347
13.1 初识Operator 348
13.1.1 什么是Operator 348
13.1.2 Operator的发展 349
13.1.3 Operator的社区与生态 351
13.2 Operator Framework 352
13.3 Operator 工作原理 354
13.4 本章小结 357
第14章 Operator Framework功能详解 358
14.1 Operator SDK 358
14.1.1 安装Operator SDK CLI 358
14.1.2 使用Operator SDK CLI 360
14.1.3 Operator的作用域 363
14.1.4 Operator SDK生成的代码框架 365
14.1.5 controller-runtime 367
14.1.6 使用Predicates过滤事件 381
14.1.7 Operator SDK的架构演进 383
14.2 Operator Lifecycle Manager 387
14.2.1 OLM组件模型定义 387
14.2.2 OLM结构介绍 389
14.2.3 OLM的安装 390
14.2.4 依赖解析和升级管理 392
14.2.5 operator-registry 395
14.3 Operator Metering 398
14.3.1 Operator Metering基本架构 398
14.3.2 Operator Metering核心组件 400
14.4 本章小结 407
第15章 Operator实战 408
15.1 基于Operator SDK构建Operator 408
15.1.1 生成第一个Operator项目 408
15.1.2 创建自定义资源定义 409
15.1.3 创建Controller 410
15.1.4 Operator的构建和运行 416
15.2 使用Operator Lifecycle Manager 419
15.2.1 构建一个CSV 419
15.2.2 基于Operator Lifecycle Manager测试Operator 423
15.3 部署和使用Operator Metering 425
15.3.1 安装Operator Metering 426
15.3.2 定制化Prometheus Report Queries 426
15.4 本章小结 432
第16章 Operator示例:cert-manager源码解析 433
16.1 cert-manager基本介绍 433
16.2 cert-manager组件架构解析 434
16.3 基于controller-runtime的cainjector架构解析 441
16.3.1 cainjector的启动流程 441
16.3.2 cainjector的Reconcile函数 446
16.4 本章小结 448

推荐

车牌查询
桂ICP备20004708号-3