《深入淺出Prometheus:原理、套用、源碼與拓展詳解》是一本努力做到全面,努力幫助讀者從了解、入門到實戰,再到源碼及最佳化的很用心的書!
基本介紹
- 書名:深入淺出Prometheus:原理、套用、源碼與拓展詳解
- 作者:陳曉宇 楊川胡 陳嘯
- ISBN:978-7-121-36095-4
- 頁數:384
- 定價:89
- 出版社:電子工業出版社
- 出版時間:2019-04
- 裝幀:平裝
- 開本:16
內容提要,目錄,作者簡介,
內容提要
Prometheus是由SoundCloud開源的監控系統,是Google BorgMon監控系統的開源版本。伴隨著容器及Kubernetes技術的興起,Prometheus越來越受到大家的關注。《深入淺出Prometheus:原理、套用、源碼與拓展詳解》系統講解了Prometheus的原理、套用、源碼和拓展,圖文並茂、講解全面。原理篇主要介紹了Prometheus的整體架構及與其他監控系統的對比和優勢,讓讀者從整體上把握Prometheus的相關概念。套用篇從傳統套用監控和Kubernetes監控兩方面講解Prometheus的安裝、配置及優秀實踐,著重介紹Redis、MySQL server等常用中間件監控,並結合Kubernetes,詳細講解如何通過Prometheus監控容器集群,還對每個操作都進行了非常詳盡的記錄。源碼與拓展篇從整體到局部詳細剖析Prometheus的源碼架構,並且結合實際生產環境二次定製Prometheus的部分功能,可加深讀者對Prometheus的理解,也能很好地幫助讀者提升Prometheus開發技能。
《深入淺出Prometheus:原理、套用、源碼與拓展詳解》適合運維工程師、軟體架構師、研發工程師及其他資深IT人士參考和閱讀
目錄
第1篇 Prometheus原理
第1章 監控 2
1.1 監控系統概覽 2
1.2 基礎資源監控 4
1.2.1 網路監控 4
1.2.2 存儲監控 6
1.2.3 伺服器監控 7
1.3 中間件監控 9
1.4 應用程式監控(APM) 10
1.5 日誌監控 13
1.6 監控系統實現 14
1.6.1 總體架構 14
1.6.2 指標採集 15
1.6.3 數據處理 18
1.7 監控系統的發展趨勢 21
1.8 本書主角——Prometheus 22
1.9 其他開源監控工具 26
1.9.1 Zabbix 26
1.9.2 Nagios 30
1.9.3 Open-Falcon 31
1.10 監控系統的對比 33
第2章 深入Prometheus設計 35
2.1 指標 35
2.1.1 Prometheus的指標定義 35
2.1.2 Prometheus的指標分類 36
2.1.3 Prometheus數據樣本 40
2.2 數據採集 40
2.2.1 服務發現 42
2.2.2 數據採集 44
2.3 數據處理 45
2.3.1 重新定義標籤 45
2.3.2 標籤篩選 46
2.4 數據存儲 46
2.4.1 本地存儲 47
2.4.2 遠程存儲 50
2.5 數據查詢 50
2.6 告警 52
2.7 集群 54
2.7.1 聯邦 54
2.7.2 Thanos 55
2.8 Prometheus並非監控銀彈 59
第3章 數據存儲 60
3.1 存儲接口 60
3.2 本地存儲 62
3.2.1 歷史 63
3.2.2 核心概念 63
3.2.3 相關參數 69
3.2.4 本地存儲接口 70
3.3 遠端存儲 71
3.3.1 總體架構 71
3.3.2 遠端接口規範 71
3.3.3 相關參數 74
3.4 存儲匯聚 77
第2篇 Prometheus在傳統套用監控中的套用
第4章 Prometheus exporter詳解 80
4.1 服務分類 80
4.2 數據規範 81
4.3 exporter簡介 82
4.4 基於Go客戶端編寫一個exporter 84
4.5 Node exporter解析 87
4.6 Redis exporter解析 90
4.6.1 Redis exporter的套用 90
4.6.2 Redis exporter的工作原理 91
4.7 MySQL server exporter解析 93
4.7.1 MySQL server exporter的套用 93
4.7.2 MySQL server exporter的工作原理 94
4.8 深入探索Go客戶端 96
第3篇 Prometheus在Kubernetes監控中的套用
第5章 Kubernetes監控方案 100
5.1 Heapster 101
5.2 kube-state-metrics 104
5.3 metrics-server 105
5.4 Prometheus 105
第6章 Prometheus的安裝配置 107
6.1 手動安裝Prometheus 107
6.2 安裝Prometheus Operator 114
6.3 在Prometheus Operator中添加自定義的監控項 125
6.4 在Prometheus Operator中添加自定義告警 132
6.4.1 配置PrometheusRule 133
6.4.2 配置告警 138
6.5 Prometheus Operator的高級配置 144
6.5.1 自動發現配置 145
6.5.2 數據持久化配置 152
第7章 Prometheus監控Kubernetes之服務配置 159
7.1 靜態配置 159
7.2 服務發現配置 164
第8章 Prometheus監控Kubernetes之監控對象 171
8.1 容器監控 172
8.1.1 Prometheus的配置方式 172
8.1.2 容器指標 174
8.2 apiserver監控 177
8.2.1 配置方式 177
8.2.2 apiserver指標 181
8.3 Service監控 182
8.4 kube-state-metrics監控 185
8.5 主機監控 186
第9章 Prometheus監控Kubernetes之數據展現 191
9.1 在Kubernetes集群中安裝Grafana 191
9.2 配置Grafana 200
9.2.1 數據源 200
9.2.2 Dashboard 201
9.3 外掛程式 207
9.4 Grafana告警 212
9.4.1 郵件告警 212
9.4.2 釘釘告警 214
9.4.3 Grafana告警配置 215
第10章 Prometheus監控Kubernetes之告警 219
10.1 AlertManager簡介 219
10.2 安裝AlertManager 220
10.3 告警規則 225
10.4 webhook接收器 231
第4篇 Prometheus源碼與拓展
第11章 Prometheus服務組件 240
11.1 Prometheus源碼的目錄結構 240
11.2 原生Prometheus的不足 242
11.3 源碼改造——更改時區 243
11.3.1 源碼修改 243
11.3.2 編譯 244
11.3.3 功能驗證 244
11.4 源碼改造——用blog4go記錄系統日誌 245
11.4.1 引入blog4go庫 245
11.4.2 設定日誌回調函式 246
11.4.3 啟動日誌記錄服務 246
11.4.4 配置config.xml 247
11.4.5 編譯 248
11.4.6 驗證服務 248
11.5 Prometheus的初始化 248
11.5.1 Prometheus性能調試 249
11.5.2 Context介紹 249
11.5.3 初始化服務組件 251
11.5.4 組件配置管理 257
11.5.5 啟動服務組件 258
11.6 源碼改造——MySQL規則存儲 262
11.6.1 規則載入流程 262
11.6.2 表結構設計 262
11.6.3 規則載入模組 264
11.6.4 loadGroups改造 267
11.6.5 初始化 269
11.6.6 功能驗證 269
11.7 數據採集 270
11.7.1 服務發現 270
11.7.2 指標採集 277
11.7.3 存儲指標 289
11.8 通知管理 297
11.8.1 啟動notifier服務 298
11.8.2 註冊notifier 308
11.9 規則管理 311
11.9.1 規則調度 312
11.9.2 查詢引擎 321
11.10 源碼改造——不重複scrape及自帶時間戳規則運算 327
11.10.1 實現思路 328
11.10.2 不重複scrape 328
11.10.3 自帶時間戳規則運算 331
11.10.4 功能驗證 343
第12章 AlertManager服務組件 348
12.1 接收告警 348
12.2 告警調度 351
12.3 告警匹配 356
12.4 告警處理 357
12.5 告警通知 362
作者簡介
陳曉宇
宜信容器雲架構師,負責宜信PaaS平台的設計和推廣,幫助企業從傳統套用遷移至雲原生套用。在雲計算相關行業具有豐富的研發與架構經驗,並積極參與OpenStack、Kubernetes、Harbor等社區的開源項目。