Prometheus是一款當(dāng)前迅速崛起的新興監(jiān)控系統(tǒng)。本書(shū)主要以Prometheus 2.5.0版本為基礎(chǔ)進(jìn)行介紹。全書(shū)分為11章,從Prometheus的基礎(chǔ)入手,系統(tǒng)地介紹了Prometheus配置、Prometheus TSDB、scrape模塊、storage模塊、HTTP API接口、PromQL語(yǔ)句、Rule配置、Discovery、AlertManager以及Client等內(nèi)容,讀者閱讀本書(shū)后,將會(huì)全面了解并掌握Prometheus的原理與應(yīng)用,并在實(shí)際場(chǎng)景中進(jìn)行實(shí)踐。 本書(shū)適合監(jiān)控運(yùn)維人員 、Prometheus二次開(kāi)發(fā)人員 、Golang工程師以及時(shí)序數(shù)據(jù)庫(kù)開(kāi)發(fā)人員閱讀。
暢銷圖書(shū)作者再出新作,從原理到應(yīng)用清晰透徹地闡述 Prometheus 技術(shù)難點(diǎn); 層層深入、循序漸進(jìn),配合實(shí)際應(yīng)用場(chǎng)景對(duì) Prometheus 技術(shù)進(jìn)行系統(tǒng)介紹; 入門到實(shí)戰(zhàn),一本書(shū)闡述 Prometheus 生態(tài)中核心組件的工作原理以及核心實(shí)現(xiàn)。
百里燊,碩士研究生畢業(yè),小時(shí)候想成為闖蕩江湖的俠客,結(jié)果著迷于代碼,最終淪為辛勤工作的程序員。目前關(guān)注各種開(kāi)源時(shí)序數(shù)據(jù)庫(kù),期待與大家共同進(jìn)步。聯(lián)系郵箱:shen_baili@163.com
第 1章 Prometheus基礎(chǔ)入門1
1.1 時(shí)序數(shù)據(jù)庫(kù)對(duì)比 1
1.1.1 InfluxDB簡(jiǎn)介 1
1.1.2 Graphite簡(jiǎn)介 3
1.1.3 OpenTSDB簡(jiǎn)介 5
1.1.4 Open-Falcon簡(jiǎn)介 6
1.2 Prometheus架構(gòu)概述 8
1.3 快速安裝Prometheus 10
1.4 Prometheus源碼環(huán)境的搭建 12
1.5 時(shí)序數(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 遠(yuǎn)程存儲(chǔ)相關(guān)配置 23
2.6 本章小結(jié) 24
第3章 深入Prometheus TSDB 25
3.1 Gorilla簡(jiǎn)介 25
3.1.1 timestamp壓縮 26
3.1.2 value值壓縮 27
3.2 時(shí)序數(shù)據(jù)存儲(chǔ) 28
3.2.1 bstream 29
3.2.2 Chunk接口 33
3.2.3 XORChunk實(shí)現(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 壓縮計(jì)劃 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 寫入時(shí)序 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í)序元數(shù)據(jù)查詢 216
6.3 Label Value查詢 218
6.4 Target和Rule查詢 219
6.5 Admin接口 220
6.6 本章小結(jié) 221
第7章 PromQL語(yǔ)句詳解 222
7.1 Engine引擎 222
7.2 查詢數(shù)據(jù) 226
7.3 執(zhí)行流程 228
7.3.1 VectorSelector節(jié)點(diǎn) 229
7.3.2 AggregateExpr節(jié)點(diǎn) 232
7.3.3 BinaryExpr節(jié)點(diǎn) 239
7.3.4 Call節(jié)點(diǎn) 248
7.3.5 ParenExpr & UnaryExpr節(jié)點(diǎn) 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實(shí)現(xiàn) 274
9.3 Prometheus Server的啟動(dòng)流程 277
9.3.1 監(jiān)聽(tīng)關(guān)閉事件 279
9.3.2 配置變更監(jiān)聽(tīng) 280
9.3.3 啟動(dòng)TSDB存儲(chǔ) 281
9.3.4 初始化配置監(jiān)聽(tīng) 282
9.3.5 啟動(dòng)核心模塊 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存儲(chǔ) 290
10.4 Dispatcher 294
10.5 Pipeline 299
10.5.1 Gossip協(xié)議簡(jiǎn)介 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模塊簡(jiǎn)析 323
10.7 本章小結(jié) 328
第 11章 深入Client 330
11.1 數(shù)據(jù)類型 330
11.2 核心實(shí)現(xiàn) 331
11.2.1 Gauge 333
11.2.2 GaugeVec 335
11.3 Registerer 340
11.4 Handler 346
11.5 其他指標(biāo)類型 348
11.5.1 Counter 348
11.5.2 Histogram 350
11.5.3 Summary 353
11.6 Exporter 357
11.7 本章小結(jié) 361