Prometheus是一款當前迅速崛起的新興監(jiān)控系統(tǒng)。本書主要以Prometheus 2.5.0版本為基礎(chǔ)進行介紹。全書分為11章,從Prometheus的基礎(chǔ)入手,系統(tǒng)地介紹了Prometheus配置、Prometheus TSDB、scrape模塊、storage模塊、HTTP API接口、PromQL語句、Rule配置、Discovery、AlertManager以及Client等內(nèi)容,讀者閱讀本書后,將會全面了解并掌握Prometheus的原理與應(yīng)用,并在實際場景中進行實踐。 本書適合監(jiān)控運維人員 、Prometheus二次開發(fā)人員 、Golang工程師以及時序數(shù)據(jù)庫開發(fā)人員閱讀。
暢銷圖書作者再出新作,從原理到應(yīng)用清晰透徹地闡述 Prometheus 技術(shù)難點; 層層深入、循序漸進,配合實際應(yīng)用場景對 Prometheus 技術(shù)進行系統(tǒng)介紹; 入門到實戰(zhàn),一本書闡述 Prometheus 生態(tài)中核心組件的工作原理以及核心實現(xiàn)。
百里燊,碩士研究生畢業(yè),小時候想成為闖蕩江湖的俠客,結(jié)果著迷于代碼,最終淪為辛勤工作的程序員。目前關(guān)注各種開源時序數(shù)據(jù)庫,期待與大家共同進步。聯(lián)系郵箱:shen_baili@163.com
第 1章 Prometheus基礎(chǔ)入門1
1.1 時序數(shù)據(jù)庫對比 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架構(gòu)概述 8
1.3 快速安裝Prometheus 10
1.4 Prometheus源碼環(huán)境的搭建 12
1.5 時序數(shù)據(jù)可視化 14
1.6 本章小結(jié) 16
第 2章 Prometheus配置詳解 17
2.1 global配置 17
2.2 scrape_config基礎(chǔ)配置 17
2.2.1 static_configs配置 18
2.2.2 file_sd_configs配置 18
2.2.3 其他服務(wù)發(fā)現(xiàn) 19
2.2.4 honor_labels配置 19
2.2.5 relabel_configs配置 20
2.3 Rule的相關(guān)配置 21
2.4 AlertManager相關(guān)配置 23
2.5 遠程存儲相關(guān)配置 23
2.6 本章小結(jié) 24
第3章 深入Prometheus TSDB 25
3.1 Gorilla簡介 25
3.1.1 timestamp壓縮 26
3.1.2 value值壓縮 27
3.2 時序數(shù)據(jù)存儲 28
3.2.1 bstream 29
3.2.2 Chunk接口 33
3.2.3 XORChunk實現(xiàn) 33
3.2.4 Pool 40
3.2.5 Meta元數(shù)據(jù) 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相關(guān)操作 108
3.9 壓縮 110
3.9.1 壓縮計劃 112
3.9.2 壓縮數(shù)據(jù) 115
3.10 Head 131
3.10.1 memSeries 131
3.10.2 stripeSeries 135
3.10.3 Head結(jié)構(gòu)體 137
3.11 DB 145
3.11.1 初始化流程 146
3.11.2 Querier接口 156
3.11.3 刪除接口 167
3.11.4 寫入操作 168
3.12 本章小結(jié) 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 本章小結(jié) 199
第5章 storage模塊 201
5.1 寫入 201
5.2 查詢 206
5.3 本章小結(jié) 209
第6章 Http API接口 210
6.1 PromQL的相關(guān)接口 210
6.1.1 Instant Query 211
6.1.2 Range Query 214
6.2 時序元數(shù)據(jù)查詢 216
6.3 Label Value查詢 218
6.4 Target和Rule查詢 219
6.5 Admin接口 220
6.6 本章小結(jié) 221
第7章 PromQL語句詳解 222
7.1 Engine引擎 222
7.2 查詢數(shù)據(jù) 226
7.3 執(zhí)行流程 228
7.3.1 VectorSelector節(jié)點 229
7.3.2 AggregateExpr節(jié)點 232
7.3.3 BinaryExpr節(jié)點 239
7.3.4 Call節(jié)點 248
7.3.5 ParenExpr & UnaryExpr節(jié)點 250
7.4 本章小結(jié) 250
第8章 Rule詳解 252
8.1 核心組件 252
8.2 加載Rule 254
8.3 Recording Rule處理流程 257
8.4 Alerting Record處理流程 261
8.5 發(fā)送告警 265
8.6 本章小結(jié) 268
第9章 Discovery分析 269
9.1 基于文件的服務(wù)發(fā)現(xiàn) 270
9.2 discovery.Manager實現(xiàn) 274
9.3 Prometheus Server的啟動流程 277
9.3.1 監(jiān)聽關(guān)閉事件 279
9.3.2 配置變更監(jiān)聽 280
9.3.3 啟動TSDB存儲 281
9.3.4 初始化配置監(jiān)聽 282
9.3.5 啟動核心模塊 282
9.3.6 reloader函數(shù)定義 283
9.4 本章小結(jié) 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協(xié)議簡介 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 本章小結(jié) 328
第 11章 深入Client 330
11.1 數(shù)據(jù)類型 330
11.2 核心實現(xiàn) 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 本章小結(jié) 361