-- 會員 / 註冊 --  
 帳號:
 密碼:
  | 註冊 | 忘記密碼
3/26 新書到! 3/19 新書到! 3/14 新書到! 12/12 新書到!
購書流程Q & A站務留言版客服信箱
3ds MaxMayaRhinoAfter EffectsSketchUpZBrushPainterUnity
PhotoShopAutoCadMasterCamSolidWorksCreoUGRevitNuke
C#CC++Java遊戲程式Linux嵌入式PLCFPGAMatlab
駭客資料庫搜索引擎影像處理FluentVR+ARANSYS深度學習
單晶片AVROpenGLArduinoRaspberry Pi電路設計CadenceProtel
HadoopPythonStm32CortexLabview手機程式AndroidiPhone
可查書名,作者,ISBN,3dwoo書號
詳細書籍分類

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

( 簡體 字)
作者:朱政科 著類別:1. -> 程式設計 -> 綜合
譯者:
出版社:機械工業出版社Prometheus云原生監控:運維與開發實戰 3dWoo書號: 53639
詢問書籍請說出此書號!

缺書
NT售價: 445

出版日:10/1/2020
頁數:368
光碟數:0
站長推薦:
印刷:黑白印刷語系: ( 簡體 版 )
加入購物車 加到我的最愛
(請先登入會員)
ISBN:9787111667834
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證)
作者序:

譯者序:

前言:

為什么要寫這本書

熟悉我的讀者應該都知道,在這本書之前我寫過一本書《HikariCP數據庫連接池實戰》。那本書解答了“HikariCP該如何監控”的問題,提出了HikariCP的主要監控指標,但是沒有對Prometheus這項技術做專項分析。本書則彌補了那本書的遺憾,全面且系統地介紹了Prometheus這款監控產品,并將介紹對象由數據庫連接池轉移到監控產品本身。從HikariCP(光)到Prometheus(火),也展示了我對于技術的理解層層深入、漸入佳境的過程。

Prometheus是由SoundCloud開源的監控系統,是Google BorgMon監控系統的開源版本。Prometheus開源項目是繼Kubernetes后第二個正式加入CNCF(Cloud Native Computing Foundation,云原生計算基金會)的項目,也是繼Kubernetes之后第二個正式“畢業”的CNCF項目,是容器和云原生領域事實上的監控標準解決方案。

如今,Prometheus已經被全球眾多企業廣泛使用,它已經成為企業構建現代云原生架構的首選開源監控工具。近幾年來,國內技術社區關于監控的討論有很多,尤其是關于監控選型的討論比較頻繁,目前IT類公司有一個統一的趨勢—使用Prometheus作為通用的監控系統解決方案。百度、京東、阿里、宜信、51信用卡等互聯網公司都有專門的Prometheus研發及運維團隊。

Prometheus既是一個監控系統,又是一個存儲系統,可以說它提供了一個完備的監控生態。我和Prometheus有著不解之緣:早在2014年,我在阿里就職期間就接觸過與TSDB時序數據庫相關的技術;我后來研發的底層數據庫中間件采用了HikariCP數據庫連接池,數據庫連接池的監控就依托于公司的Prometheus監控系統;2019年,我主導的項目Kubernetes+Prometheus一舉拿下了公司年度最佳產研類項目,有10余人參與到這個項目中,通過項目室閉關的形式,用了半年多的時間將全公司的應用全部遷移到了Kubernetes集群上并接入了Prometheus監控。由于長期接觸Prometheus,我也經常和一些使用者進行相關問題的討論,這些經歷幫我積累了寶貴的實戰經驗。

雖然Prometheus相關的書市面上有很多,但是大多都存在一些問題。首先,其中大多數書籍面向的群體僅是運維工程師,卻忽略了開發者;其次,部分書籍專注于源碼解析或者對Kubernetes技術進行介紹,卻忽略了Prometheus本身的內容,比如PromQL是實戰中非常重要的知識,但卻少有書籍會通過理論聯系實際的方式具體介紹;最后,一些書籍大量堆砌代碼和概念,導致重點內容介紹不足和實戰案例缺乏,這對實際工作不會有太多幫助。

本書在內容上深入淺出,注重實戰性、實用性,兼顧開發者的訴求,可以讓讀者迅速對Prometheus形成閉環認知。書中還提煉了最佳實踐以提升讀者認知高度和實踐能力。

讀者對象

本書適合運維工程師和所有Java程序員閱讀,尤其適合以下讀者:

Java初中級開發者;

系統架構師;

中間件開發者;

運維工程師;

工作中使用Prometheus的公司與團隊;

開設Prometheus相關課程的大專院校師生;

其他對Prometheus技術感興趣的人員。

如何閱讀本書

本書共分為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。

勘誤和支持

由于作者的水平有限,書中難免會出現一些錯誤或者不準確的地方,懇請讀者批評指正。為此,我在GitHub網站上專門建了一個Issue項目,你可以將書中的錯誤,以及你的疑問、改進建議以GitHub Issue的形式發布在Bug勘誤表頁面中,我將盡量在線上為你提供最滿意的解答。當然,更希望大家通過Issue對Prometheus展開討論,互相切磋和共同成長。

致謝

首先要感謝偉大的Prometheus,它是一款影響我整個人生的軟件。

感謝曾經和我一起致力于研究Prometheus這項技術的領導、同事、朋友,你們投入的時間、精力和智慧為我提供了莫大的幫助。

感謝機械工業出版社華章公司的編輯楊福川老師和孫海亮老師,你們始終支持我的寫作,你們的鼓勵和幫助引導我順利完成全部書稿。

最后感謝我的爸爸、媽媽、小姨、姨夫、爺爺、奶奶、外公、外婆,感謝你們將我培養成人,并時時刻刻給予我信心和力量!

謹以此書獻給我最親愛的家人,以及眾多熱愛Prometheus的朋友們!
內容簡介:

這是一部從運維和開發雙重視角全面講解Prometheus的著作,來自華為、阿里、騰訊、京東、網易等一線IT企業,以及Apache、云原生社區等的多位資深專家給予高度評價。

本書不僅能指導讀者快速搭建一個Prometheus監控系統并將其應用到實踐中,還通過私有云、公有云、混合云環境下的大量案例證明了一個事實——Prometheus可監控一切,它是一種通用的監控系統解決方案。

首先,本書從系統架構和工作原理兩個維度對Prometheus進行了深度剖析,讓讀者能深入了解Prometheus的核心功能及其使用方法;其次,針對運維人員給出了Prometheus對接各種云原生應用并實現事前預警、事中報警、事后提供翔實數據的方法;最后,針對開發人員給出了Prometheus主要組件的源碼分析以及部分功能的二次開發實現。此外,結合大量云原生應用場景,給出了大量實戰案例和常見問題的解決方案。

本書共分為11章,緊密圍繞Prometheus的運維和開發展開。

第1~3章重點介紹了監控系統的技術選型、Prometheus基本使用方法,以及在Spring Boot中如何集成Prometheus,用以傳輸和可視化監控數據。

第4~5章系統、詳盡地講解了Prometheus實戰的核心——PromQL,從入門必備的基礎知識到高級實戰技巧,應有盡有。

第6~8章深度剖析了Prometheus中與告警、數據采集、Exporter、監控相關的主要組件,并通過大量案例給出實踐指導。

第9~10章針對集群和存儲這兩個高級話題展開,幫助讀者提升Prometheus實踐水平。

第11章幫助讀者拓展知識面,介紹了與Prometheus相關的其他技術,主要內容圍繞Thanos、M3DB、Loki、Operator模式等展開。
目錄:

贊譽
前言
第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
序: