第1章 Prometheus基础入门 1
1.1 时序数据库对比 1
1.1.1 InfluxDB简介 1
1.1.2 Graphite简介 3
1.1.3 OpenTSDB简介 5
1.1.4 Open-Falcon简介 6
1.2 Prometheus架构概述 8
1.3 快速安装Prometheus 10
1.4 Prometheus源码环境的搭建 12
1.5 时序数据可视化 14
1.6 本章小结 16
第2章 Prometheus配置详解 17
2.1 global配置 17
2.2 scrape_config基础配置 17
2.2.1 static_configs配置 18
2.2.2 file_sd_configs配置 18
2.2.3 其他服务发现 19
2.2.4 honor_labels配置 19
2.2.5 relabel_configs配置 20
2.3 Rule的相关配置 21
2.4 AlertManager相关配置 23
2.5 远程存储相关配置 23
2.6 本章小结 24
第3章 深入Prometheus TSDB 25
3.1 Gorilla简介 25
3.1.1 timestamp压缩 26
3.1.2 value值压缩 27
3.2 时序数据存储 28
3.2.1 bstream 29
3.2.2 Chunk接口 33
3.2.3 XORChunk实现 33
3.2.4 Pool 40
3.2.5 Meta元数据 42
3.2.6 ChunkWriter 43
3.2.7 ChunkReader 48
3.3 Label组件 52
3.4 索引 54
3.4.1 index文件格式 55
3.4.2 encbuf与decbuf 60
3.4.3 index写入详解 62
3.4.4 index读取详解 75
3.5 WAL日志 82
3.5.1 核心组件 83
3.5.2 WAL初始化 84
3.5.3 WAL日志写入详解 86
3.5.4 WAL日志读取详解 91
3.5.5 Record类型 95
3.6 tombstones文件 97
3.7 Checkpoint 101
3.8 Block 106
3.8.1 初始化 107
3.8.2 block相关操作 108
3.9 压缩 110
3.9.1 压缩计划 112
3.9.2 压缩数据 115
3.10 Head 131
3.10.1 memSeries 131
3.10.2 stripeSeries 135
3.10.3 Head结构体 137
3.11 DB 145
3.11.1 初始化流程 146
3.11.2 Querier接口 156
3.11.3 删除接口 167
3.11.4 写入操作 168
3.12 本章小结 169
第4章 scrape模块详解 171
4.1 Target 172
4.2 scraper接口 175
4.3 loop接口 177
4.3.1 Pool 179
4.3.2 scrapeCache 180
4.3.3 写入时序 183
4.3.4 sampleMutator&reportSampleMutator 186
4.4 scrapePool 189
4.5 Manager 196
4.6 本章小结 199
第5章 storage模块 201
5.1 写入 201
5.2 查询 206
5.3 本章小结 209
第6章 HTTP API接口 210
6.1 PromQL的相关接口 210
6.1.1 Instant Query 211
6.1.2 Range Query 214
6.2 时序元数据查询 216
6.3 Label Value查询 218
6.4 Target和Rule查询 219
6.5 Admin接口 220
6.6 本章小结 221
第7章 PromQL语句详解 222
7.1 Engine引擎 222
7.2 查询数据 226
7.3 执行流程 228
7.3.1 VectorSelector节点 229
7.3.2 AggregateExpr节点 232
7.3.3 BinaryExpr节点 239
7.3.4 Call节点 248
7.3.5 ParenExpr&UnaryExpr节点 250
7.4 本章小结 250
第8章 Rule详解 252
8.1 核心组件 252
8.2 加载Rule 254
8.3 Recording Rule处理流程 257
8.4 Alerting Record处理流程 261
8.5 发送告警 265
8.6 本章小结 268
第9章 Discovery分析 269
9.1 基于文件的服务发现 270
9.2 discovery.Manager实现 274
9.3 Prometheus Server的启动流程 277
9.3.1 监听关闭事件 279
9.3.2 配置变更监听 280
9.3.3 启动TSDB存储 281
9.3.4 初始化配置监听 282
9.3.5 启动核心模块 282
9.3.6 reloader函数定义 283
9.4 本章小结 284
第10章 深入AlertManager 285
10.1 接收告警 287
10.2 查询Receiver 289
10.3 Alert Provider存储 290
10.4 Dispatcher 294
10.5 Pipeline 299
10.5.1 Gossip协议简介 302
10.5.2 GossipSettleStage 303
10.5.3 InhibitStage 304
10.5.4 SilenceStage 307
10.5.5 DedupStage 314
10.5.6 RetryStage 319
10.5.7 SetNotifiesStage 322
10.6 cluster模块简析 323
10.7 本章小结 328
第11章 深入Client 330
11.1 数据类型 330
11.2 核心实现 331
11.2.1 Gauge 333
11.2.2 GaugeVec 335
11.3 Registerer 340
11.4 Handler 346
11.5 其他指标类型 348
11.5.1 Counter 348
11.5.2 Histogram 350
11.5.3 Summary 353
11.6 Exporter 357
11.7 本章小结 361