深入理解 Prometheus 監控系統

鮑光亞 張帆

  • 出版商: 人民郵電
  • 出版日期: 2024-07-01
  • 定價: $479
  • 售價: 8.5$407
  • 語言: 簡體中文
  • 頁數: 220
  • 裝訂: 平裝
  • ISBN: 7115642672
  • ISBN-13: 9787115642677
  • 下單後立即進貨 (約2週~3週)

  • 深入理解 Prometheus 監控系統-preview-1
  • 深入理解 Prometheus 監控系統-preview-2
深入理解 Prometheus 監控系統-preview-1

買這商品的人也買了...

商品描述

本書按照監控數據的採集和加工流程的順序,深入剖析 Prometheus 監控系統的主要模塊,旨在幫助讀者理解 Prometheus 監控系統的底層工作機制。本書主要內容包括監控數據來源模塊、監控目標發現模塊、監控數據採集模塊、監控數據存儲與讀寫模塊、監控數據查詢語言、監控數據計算與告警模塊、Web模塊,以及警報管理系統等。通過對主要模塊的學習,讀者可以瞭解 Prometheus 監控系統是如何充分利用並發能力和 Go 語言的關鍵特性來應對動態變化的雲環境的。

本書適合已經對 Prometheus 有初步瞭解的讀者,也適合想要進一步探究其內部工作機制的運維工程師、軟件設計人員及軟件開發工程師閱讀。

作者簡介

鲍光亚,毕业于山东大学,具有10年以上互联网行业工作经验,曾就职于京东,主要负责监控系统的开发工作,在Prometheus和Zabbix监控系统的使用方面有丰富的经验,著有《深入理解Zabbix监控系统》一书。

张帆,毕业于北京航空航天大学。?2007~2011年在中国工商银行软件开发中心负责测试环境的监控和管理,2011年以来在金融行业负责监控系统相关工作,在Prometheus和Zabbix监控系统的使用方面有丰富的经验。

目錄大綱

第 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