描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787115642677
·带你深入理解Prometheus监控系统的主要模块。
·从源码层次带你理解Prometheus本质。
·拆解监控流程,带你深入观察其内部工作机制。
·与两位在监控岗位工作10多年的作者交流监控系统实战经验。
本书按照监控数据的采集和加工流程的顺序,深入剖析 Prometheus 监控系统的主要模块,旨在帮助读者理解 Prometheus 监控系统的底层工作机制。本书主要内容包括监控数据来源模块、监控目标发现模块、监控数据采集模块、监控数据存储与读写模块、监控数据查询语言、监控数据计算与告警模块、Web模块,以及警报管理系统等。通过对主要模块的学习,读者可以了解 Prometheus 监控系统是如何充分利用并发能力和 Go 语言的关键特性来应对动态变化的云环境的。
本书适合已经对 Prometheus 有初步了解的读者,也适合想要进一步探究其内部工作机制的运维工程师、软件设计人员及软件开发工程师阅读。
第 1章 Prometheus技术演进史 1
1.1 Prometheus 0.1.0(首个版本) 1
1.2 Prometheus 1.0 3
1.3 Prometheus 2.0 4
1.4 Prometheus 2.37(LTS版本) 5
第 2章 YAML文本与配置文件 7
2.1 YAML文本解析过程 7
2.1.1 记号类型 8
2.1.2 词法分析过程 12
2.1.3 句法分析过程 17
2.1.4 将语法树转换为目标对象 24
2.2 配置文件的加载与刷新 26
第3章 监控数据的来源——Exporter 28
3.1 Exporter的典型工作架构 28
3.2 采集器 30
3.2.1 采集器的工作机制 30
3.2.2 监控项描述符 32
3.2.3 Gauge样本状态结构体 33
3.2.4 Counter样本状态结构体 34
3.2.5 Histogram样本状态结构体 35
3.2.6 Summary样本状态结构体 36
3.3 汇集器 37
3.4 编码器 39
3.5 推送模式 41
第4章 监控目标的发现——Discovery 42
4.1 Discovery管理器 42
4.2 数据供应者 43
4.3 目标数据的组织结构 45
4.4 数据供应过程 47
4.4.1 目标探测与处理 47
4.4.2 Kubernetes供应者 48
4.4.3 Consul供应者 51
4.4.4 PuppetDB供应者 52
4.4.5 ZooKeeper供应者 53
4.4.6 文件目标供应者 53
4.4.7 HTTP供应者 54
4.4.8 DNS供应者 54
4.4.9 其他供应者 55
第5章 监控数据的采集与加工 56
5.1 采样管理器概述 56
5.2 监控目标数据加工过程 59
5.2.1 目标数据加载协程 59
5.2.2 采样池的目标数据同步 60
5.2.3 采样协程的创建 63
5.2.4 采样时间偏置 63
5.3 监控数据加工过程 64
5.3.1 HTTP请求与响应消息 65
5.3.2 响应消息的解析 66
5.3.3 写入数据库 75
5.3.4 生成报告 76
5.4 配置信息加载过程 77
5.5 采集过程自身监控指标 78
第6章 监控数据的存储与读写 ——TSDB 81
6.1 头部块 81
6.1.1 头部追加器 81
6.1.2 追加样本 83
6.1.3 写入WAL文件 84
6.1.4 写入头部子块 86
6.1.5 头部子块的持久化 87
6.2 压缩器 88
6.2.1 将头部块转换为主体块的1级压缩 88
6.2.2 主体块的逐级压缩 92
6.3 WAL文件与快照文件 94
6.3.1 WAL文件的加载 94
6.3.2 快照文件的生成与加载 95
6.4 事务及其隔离性 97
第7章 监控数据的查询语言——PromQL 100
7.1 PromQL解析器 100
7.1.1 解析器的工作过程 101
7.1.2 句法分析 103
7.1.3 词法分析 104
7.2 PromQL语法树的结构 105
7.2.1 语法树的节点类型 105
7.2.2 向量选择器 108
7.2.3 矩阵选择器 109
7.2.4 子查询表达式 110
7.2.5 二元表达式 111
7.2.6 函数调用表达式 113
7.2.7 聚合表达式 115
7.2.8 步调恒定表达式 115
7.3 PromQL语法树的执行 116
7.3.1 监控数据查询模型 116
7.3.2 向量选择器的执行 119
7.3.3 时间参数及其处理 121
7.3.4 矩阵选择器的执行 124
7.3.5 子查询节点的执行 125
7.3.6 聚合表达式的执行 127
7.3.7 函数调用节点的执行 128
7.3.8 二元表达式的执行 130
7.3.9 查询任务的调度与监控 131
第8章 监控数据的计算与告警触发 133
8.1 转录规则 133
8.2 告警规则 135
8.2.1 告警规则的定义与执行 135
8.2.2 警报状态及其转换 136
8.2.3 警报外发及其生命延续方法 137
8.2.4 警报样本写入数据库 138
8.3 规则组及其评价任务调度 140
8.4 通知器 143
第9章 HTTP API与PromQL编辑器 146
9.1 路由选择器 146
9.2 Web API与联邦 150
9.2.1 远程写请求及其处理 150
9.2.2 远程读请求及其处理 151
9.2.3 本地查询请求及其处理 154
9.2.4 本地TSDB管理 155
9.2.5 联邦 155
9.3 PromQL编辑器 157
9.3.1 自动补全 157
9.3.2 语法高亮 160
9.3.3 语法检查 161
9.4 PromQL前端解析器 162
9.4.1 解析器的栈结构 162
9.4.2 分析表的编码及其加载 162
9.4.3 词法分析器 163
9.4.4 句法分析器 165
第 10章 Prometheus的构建与部署 171
10.1 Makefile文件 171
10.2 代码静态检查 173
10.3 构建过程 175
10.3.1 Web用户界面静态资源文件的构建 176
10.3.2 Go代码的构建 178
10.3.3 自动发现插件的构建 179
10.4 代码测试 180
10.4.1 Go代码测试 180
10.4.2 Web用户界面代码测试 181
10.5 部署 181
第 11章 警报管理系统——Alertmanager 183
11.1 警报管理系统的分布式集群 183
11.1.1 集群成员间传输的消息类型 183
11.1.2 节点的数据表示与新节点的加入 185
11.1.3 节点间的探测 187
11.1.4 全量数据交换 189
11.1.5 消息的散播 192
11.2 警报存储池与警报状态总账 198
11.2.1 警报的存储结构 198
11.2.2 警报的写入 200
11.2.3 警报的订阅 201
11.2.4 警报的清理 202
11.3 警报的分组与组内处理流程 202
11.3.1 封闭式分组(路由树及其匹配) 203
11.3.2 开放式分组(自我聚类) 204
11.3.3 组内警报处理流程 206
11.4 警报的滤除 207
11.4.1 抑制器 208
11.4.2 时钟过滤 209
11.4.3 消声器 210
11.5 警报的派发 212
11.5.1 收件人的数据结构表示 212
11.5.2 派发等待与去重 213
11.5.3 警报的试投 213
11.6 警报的登记 216
11.6.1 通知日志的存储与读写 216
11.6.2 通知日志的广播 218
11.6.3 通知日志的作用 218
评论
还没有评论。