Prometheus 雲原生監控:運維與開發實戰

朱政科著

  • 出版商: 機械工業
  • 出版日期: 2020-11-01
  • 售價: $534
  • 貴賓價: 9.5$507
  • 語言: 簡體中文
  • 頁數: 382
  • 裝訂: 平裝
  • ISBN: 7111667832
  • ISBN-13: 9787111667834
  • 相關分類: 雲端運算
  • 立即出貨 (庫存 < 4)

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

相關主題

商品描述

內容簡介


本書共分為11章,緊密圍繞Prometheus的相關概念和技術展開介紹。

第1章主要介紹了監控系統的相關概念。
本章首先介紹了監控的概念、監控的分類、MDD(指標驅動開發)的理念、
Google四大黃金指標、USE方法、RED方法等知識;
接著介紹了監控中的探針和內省、拉取和推送等常見手法;
最後介紹了常見的監控系統Nagios、Zabbix、Ganglia、Open-Falcon、ZMon,
以及進行監控系統選型時應該考慮的維度及誤區。

第2章介紹了Prometheus的相關概念。從歷史、特點、架構、局限性、
快速開始這5個方面介紹了Prometheus是什麼,
它在監控領域有哪些使用場景,以及如何快速安裝和啟動Prometheus。

第3章介紹了在Spring Boot中如何集成Prometheus。
本章通過介紹Micrometer的理論,輔以Spring Boot 2.x應用的案例,
一步步教讀者將Spring Boot 2.x應用數據傳輸到Prometheus監控系統中,
再以可視化監控大盤的形式展現在Grafana儀錶盤中。
本章還介紹了當系統出現故障時,
讀者如何將Spring Boot 2.x應用的故障信息以告警的形式發送到郵箱或者釘釘中。
本章內容對於廣大開發者來說具有一定的實戰指導作用。

第4章介紹了與PromQL相關的知識。
PromQL是Prometheus實戰的核心,是Prometheus場景的基礎,也是Prometheus的重中之重。
本章用很大的篇幅,從時間序列、PromQL數據類型、指標類型、選擇器、
聚合操作、二元操作符、內置函數、最佳實踐、性能優化等方面,
通過理論聯繫實際的方式,全方位介紹了與PromQL相關的概念及其具體用法。

第5章介紹了PromQL的高級用法。首先介紹了39個PromQL內置函數,
然後圍繞HTTP API、記錄規則、告警規則、metric_relabel_configs、
relabel_configs等多個知識點,以理論聯繫實際、知識點結合案例的形式,
全方位介紹了PromQL的高級用法和最佳實踐。

第6章介紹了Prometheus的告警模塊—Alertmanager。
本章圍繞Alertmanager告警的架構、工作原理、集群、觸發的流程等展開介紹,
接著拓展了告警分組、抑制、靜默、延遲等眾多知識點。
讀完本章,讀者可以輕鬆理解告警是如何觸發的,
還可以分析、定位、解決告警轟炸、告警不准確等常見問題。

第7章介紹了Prometheus中與Exporter相關的概念。
Exporter的來源主要有兩個,一個是社區,另一個是用戶自定義。
本章從數據規範、數據採集方式、案例代碼編寫等方面一步步指導讀者自定義Exporter。
為了幫助讀者提高編碼水平和真正寫好Exporter,本章還給出了寫好Exporter的建議,
並結合Node Exporter、Redis Exporter、MySQL Exporter、RocketMQ Exporter等的原理進行分析講解。
通過對本章的學習,讀者可以掌握使用和定制Exporter的方法。

第8章介紹了與Spring Boot相關的高級話題,幫助讀者了解Prometheus集成Spring Boot的原理、源碼和解決方案。本章針對Prometheus監控RESTful、監控業務、通過註解進行監控、監控Dubbo這4個真實需求給出了源碼級的技術指導方案。對Prometheus集成Spring Boot過程中可能產生的問題,如空指針、極大值、內存溢出等,本章也做了補充分析與解答。

第9章介紹了與Prometheus集群相關的實戰內容。
本章圍繞Prometheus集群實戰的架構問題,討論了多種集群解決方案
(簡單HA、簡單HA+遠程存儲、簡單HA+遠程存儲+聯邦集群)的理念、方法及優化手段,
探究如何構建具有更高擴展性和可靠性的集群。本章是實戰章節,
在採集指標、推廣Prometheus在企業中的部署等細節問題上都給出了指導。
本章還通過搭建一個基於M3DB的簡單HA+遠程存儲Prometheus K8S集群的真實案例,
用步驟引導以及配置文件樣例的形式,帶領讀者實際部署Prometheus集群。

第10章介紹了Prometheus的存儲原理。Prometheus不僅是一個監控系統,還是一款優秀的時序數據庫。
本章主要圍繞Prometheus 3.0版本的TSDB本地存儲,
對存儲文件的格式、存儲的原理、chunk、索引、block、WAL日誌、
tombstones、Checkpoint等相關知識點進行介紹,讓讀者清晰地了解Prometheus存儲的運行機制。

第11章介紹了Prometheus的相關技術。
本章首先介紹了Prometheus的伴侶—Thanos和M3DB,
並對使用這些技術的過程中可能出現的一些問題給出了指導和建議;
然後介紹了繼承Prometheus理念的Loki,詳細介紹了Loki、ELK等相關日誌技術的原理和架構方案;
最後,介紹了Operator模式和Prometheus Operator模式,
以及在實戰中針對壓測、查找中間件(如Redis問題)等場景應該如何靈活運用Prometheus。

作者簡介

朱政科

資深架構師,中間件技術專家,對數據庫連接池和Prometheus等監控技術有深入研究。
有10餘年IT行業從業經驗,現就職於國內某大型世界百強企業。
曾在阿里等一線互聯網公司長期從事中間件的研發及團隊管理工作。
先後主導和參與了多個重要的與物聯網、人工智能等相關的大型項目。
著有《HikariCP數據庫連接池實戰》。

目錄大綱

讚譽
前言
第1章 監控之美 1
1.1 監控:把握應用的脈搏 2
1.2 監控架構分類 6
1.3 MDD思想:從指標到洞察力 10
1.3.1 MDD理念綜述 10
1.3.2 指導實踐的3大監控方法論 12
1.4 監控系統選型分析及誤區探討 13
1.4.1 黑盒監控和白盒監控 14
1.4.2 監控檢查的兩種模式—拉取和推送 14
1.4.3 5種常見的監控系統 15
1.4.4 監控系統的選型分析及誤區探討 24
1.5 本章小結 32

第2章 Prometheus入門 33
2.1 Prometheus發展簡史 34
2.2 Prometheus的主要特點 35
2.3 Prometheus架構剖析 37
2.4 Prometheus的3大局限性 43
2.5 快速安裝並啟動Prometheus 43
2.6 本章小結 49

第3章 Spring Boot可視化監控實戰 50
3.1 用Micrometer儀表化JVM應用 50
3.2 在Spring Boot 2.x中集成Prometheus的方法 53
3.2.1 引入Maven依賴 54
3.2.2 application.properties配置 56
3.2.3 通過MeterBinder接口採集和註冊指標 57
3.2.4 以埋點的方式更新指標數據 58
3.2.5 效果展示 59
3.3 針對Spring Boot 2.x採集並可視化相關數據 61
3.4 第三方專業可視化工具—Grafana 62
3.5 Grafana高級模板 67
3.6 郵件告警的生成與擴展 77
3.6.1 通過Alertmanager生成郵件告警 77
3.6.2 郵件告警擴展:cc和bcc 79
3.7 構建釘釘告警系統 80
3.7.1 安裝MacOS Docker 80
3.7.2 安裝Docker鏡像 81
3.7.3 釘釘接入設置 83
3.7.4 釘釘告警功能驗證 84
3.8 本章小結 86

第4章 PromQL讓數據會說話 87
4.1 初識PromQL 87
4.1.1 PromQL的4種數據類型 89
4.1.2 時間序列 90
4.1.3 指標 91
4.2 PromQL中的4大選擇器 94
4.2.1 匹配器 95
4.2.2 瞬時向量選擇器 98
4.2.3 區間向量選擇器 99
4.2.4 偏移量修改器 100
4.3 Prometheus的4大指標類型 101
4.3.1 計數器 101
4.3.2 儀錶盤 103
4.3.3 直方圖 104
4.3.4 摘要 107
4.4 13種聚合操作 109
4.5 Prometheus的3種二元操作符 117
4.5.1 算術運算符 118
4.5.2 集合/邏輯運算符 119
4.5.3 比較運算符 120
4.5.4 優先級 122
4.6 向量匹配 122
4.6.1 一對一匹配 122
4.6.2 一對多和多對一匹配 123
4.6.3 多對多匹配 124
4.7 本章小結 124

第5章 PromQL高級實戰 125
5.1 Prometheus內置函數 125
5.1.1 動態標籤函數 126
5.1.2 數學運算函數 128
5.1.3 類型轉換函數 133
5.1.4 時間和日期函數 133
5.1.5 多對多邏輯運算符函數 137
5.1.6 排序函數 138
5.1.7 Counter函數 139
5.1.8 Gauge函數 141
5.1.9 Histogram函數 144
5.1.10 時間聚合函數 145
5.2 HTTP API 146
5.2.1 API響應格式 148
5.2.2 表達式查詢 149
5.2.3 元數據管理 150
5.2.4 其他拓展 151
5.3 兩種可定期執行的規則 155
5.3.1 記錄規則 155
5.3.2 告警規則 159
5.4 指標的抓取與存儲 160
5.4.1 用relabel_conf?igs抓取指標 160
5.4.2 用metric_relabel_conf?igs存儲指標 163
5.5 通過調優解決PromQL耗盡資源問題 166
5.6 本章小結 166

第6章 Prometheus告警機制深度解析 167
6.1 Alertmanager架構解析 167
6.2 AMTool的安裝與用法 169
6.3 配置文件的編寫與解讀 171
6.4 告警規則的定義 177
6.5 關於告警的高級應用與問題處理 180
6.5.1 Prometheus告警失靈 180
6.5.2 出現告警轟炸的問題 182
6.6 構建高可用告警集群 184
6.7 本章小結 186

第7章 Prometheus獨孤九劍:通過定制Exporter監控一切 187
7.1 Exporter概述 187
7.2 Exporter的數據規範 189
7.3 Exporter數據採集方式 191
7.4 一個最簡單的Exporter示例 192
7.5 自己動手編寫一個Exporter 195
7.6 高質量Exporter的編寫原則與方法 198
7.6.1 分配合理的端口號 198
7.6.2 設計落地頁 201
7.6.3 將軟件版本信息提供給Prometheus的正確方法 201
7.6.4 必備指標的梳理 202
7.6.5 編寫高質量Exporter的其他注意事項 209
7.7 Node Exporter源碼解析 210
7.8 Exporter高級應用:開啟TSL連接和Basic Auth認證 214
7.8.1 準備證書 214
7.8.2 支持TLS的配置方法 214
7.8.3 支持Basic Auth的配置方法 215
7.9 本章小結 216

第8章 Spring Boot高級監控實戰 217
8.1 Controller監控實戰 217
8.2 業務代碼監控實戰 218
8.3 通過註解進行監控的設置與實戰 221
8.4 Dubbo監控實戰 223
8.5 SPI機制原理解析 225
8.6 SPI高級實戰:基於Dubbo的分佈式日誌鏈路TraceID追踪 228
8.7 集成Spring Boot時的常見問題及其解決方案 231
8.8 關於Micrometer的兩個常見問題及其解決方案 234
8.8.1 極大值BUG問題 235
8.8.2 Actuator內存溢出問題 237
8.9 micrometer-spring-legacy源碼解析 242
8.9.1 spring.factories 244
8.9.2 CompositeMeterRegistryAuto-Conf?iguration 246
8.9.3 XX-MeterRegistry的註冊 248
8.9.4 WebMvcMetricsFilter過濾器 249
8.9.5 其他 250
8.10 本章小結 251

第9章 Prometheus集群實戰 252
9.1 校時 252
9.2 Prometheus的3種常見HA架構方案 255
9.2.1 簡單HA 256
9.2.2 簡單HA+遠程存儲 256
9.2.3 簡單HA+遠程存儲+聯邦集群 257
9.2.4 聯邦集群配置方式 261
9.2.5 功能分區配置方式 262
9.2.6 K8S單點故障引發的POD漂移問題 263
9.3 Prometheus集群架構採集優化方案 263
9.4 在企業中從零推廣Prometheus架構 266
9.4.1 研發團隊 266
9.4.2 運維團隊 267
9.4.3 借助K8S一起推進上線 268
9.5 搭建基於M3DB的簡單HA+遠程存儲Prometheus K8S集群 268
9.5.1 架構說明 268
9.5.2 K8S內部Prometheus 270
9.5.3 K8S外部Prometheus 270
9.5.4 M3DB 276
9.6 多租戶、可橫向擴展的Prometheus即服務—?Cortex 277
9.7 本章小結 280

第10章 Prometheus存儲原理與問題分析 281
10.1 本地存儲文件結構解析 282
10.2 存儲原理解析 286
10.3 存儲配置方法 287
10.4 本地存儲容量規劃原則與方法 290
10.5 RAM容量規劃原則與方法 291
10.6 本地存儲及時性和時序性問題分析 293
10.7 本章小結 294

第11章 Prometheus其他相關技術分析與實戰 296
11.1 Thanos架構與監控實戰 296
11.1.1 Thanos架構解析 297
11.1.2 Thanos在Prometheus監控中的作用與實戰 299
11.1.3 Thanos存在的問題 302
11.2 M3DB技術詳解 303
11.3 Loki的特性、架構與應用 306
11.3.1 Loki特性 307
11.3.2 Loki架構簡介 308
11.3.3 Loki使用方法 310
11.4 ELK的5種主流架構及其優劣分析 311
11.4.1 為什麼要用ELK 312
11.4.2 基礎架構 313
11.4.3 改良架構 314
11.4.4 二次改良架構 315
11.4.5 基於Tribe Node概念的架構 316
11.4.6 帶有冷熱分離功能的架構 316
11.5 Fluentd和Fluent Bit項目簡介 317
11.6 Operator模式現狀與未來展望 319
11.7 關於靈活運用Prometheus的幾點建議 321
11.8 本章小結 323
附錄A Prometheus相關端口列表 324
附錄B PromQL速查手冊 350
附錄C Prometheus 2.x(從2.0.0到2.20.0)的重大版本變遷 354
附錄D Prometheus自監控指標 363
附錄E SLA服務可用性基礎參考指標 366