百人牛牛棋牌
深入淺出Prometheus:原理、應用、源碼與拓展詳解
  • 推薦0
  • 收藏4
  • 瀏覽2.4K

深入淺出Prometheus:原理、應用、源碼與拓展詳解

陳曉宇 , 楊川胡 , 陳嘯 (作者)  張國霞 (責任編輯)

  • 叢  書:博文視點云原生精品叢書
  • 書  號:978-7-121-36095-4
  • 出版日期:2019-04-01
  • 頁  數:384
  • 開  本:
  • 出版狀態:上市銷售
  • 維護人:張國霞
本書主要圍繞prometheus設計、架構、使用以及源碼分析等多個角度全面闡述prometheus的內部原理和設計思想,本書第一部分主要圍繞監控系統設計以及prometheus的核心架構,第二部分詳細介紹prometheus的使用方式以及和kubernetes集成容器監控,第三部分從源代碼角度深入剖析內部實現,開發示例。
Prometheus目前在開源監控系統中最為流行并加入CNCF,并且在生產環境部署案例較多,本書詳細闡述prometheus的技術原理和實戰,在當然市面還沒有相關的圖書
陳曉宇
宜信容器云架構師,負責宜信PaaS平臺的設計和推廣,幫助企業從傳統應用遷移至云原生應用。在云計算相關行業具有豐富的研發與架構經驗,并積極參與OpenStack、Kubernetes、Harbor等社區的開源項目。
楊川胡
“k8s技術圈”社區維護者,全棧工程師,具備豐富的云計算、上億活躍用戶應用后端實踐經驗,擅長Python、Golang、Docker、Kubernetes等技術,曾在小米擔任資深研發工程師。個人GitHub頁面:https://github.com/cnych。
陳嘯
Prometheus二次開發深度使用者,專注于分布式搜索、流式計算、集群監控、大數據安全領域。現就職于深信服科技股份有限公司安全感知團隊,負責數據平臺基礎架構研發工作。

目錄

第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

本書勘誤

印次
  • 頁碼:36  •  行數:3  •  印次: 1

    “指標名稱必須由字母”,寫成了“字面”

    brook 提交于 2019/8/25 18:40:18
    張國霞 確認于 2019/11/26 11:31:50
  • 頁碼:51  •  行數:4  •  印次: 1

    圖 2-13中的 TSDB 寫成了 stdb

    brook 提交于 2019/8/25 18:37:26
    張國霞 確認于 2019/11/26 11:32:17
  • 頁碼:166  •  行數:8  •  印次: 1

    如果需要獲取主機的監控信息,就需要借助node-exporter,它的暴露端口是9090,而上面Prometheus請求的端口是10250.

    上面的9090是錯誤的,應該是9100端口。請糾正。

    kaweit 提交于 2019/10/17 10:30:53
    張國霞 確認于 2019/11/26 11:31:08

讀者評論

  • 說好的“示例代碼文件”呢。。。囧

    wahaha2324發表于 2019/9/15 18:08:46
    • 和kubernetes結合的部分相關的資源可以在這里獲取:https://github.com/cnych/kubernetes-learning

      請叫我雷鋒。。。囧

      wahaha2324發表于 2019/9/15 18:14:11
  • 老師好: 我是<深入淺出Prometheus原理、應用、源碼與拓展詳解>的讀者, 書中有很多的示例代碼文件, 在”下載資源”處并沒有, 這肯定會讓很多讀者覺得不方便(包括我), 不知道, 老師您, 能否與原書3位作者溝通一下, 開放示例代碼文件或者github, 感謝!另外, 是否可以和原書3位作者溝通一下, 建立一個微信群(QQ群), 方便讀者相互交流和討論, 盼回復!

    Chris發表于 2019/7/26 12:48:07
  • 所以書籍那么多yaml配置文件。。我是要手打???

    零落白夜發表于 2019/6/12 16:58:52
  • 下載資源 處想下載實例配置。結果只有一個書籍的目錄doc???

    nandy發表于 2019/4/26 10:57:14
    • 如有源碼下載,才會放在這里

      張國霞發表于 2019/5/13 10:16:53
  • 書中代碼和資源文件說是在 下載資源 處下載。結果只有一個書籍的目錄doc,糊弄人嗎?太不負責了吧。

    allenonline發表于 2019/4/24 15:05:57
    • 如有源碼下載,會放在這里。

      張國霞發表于 2019/5/13 10:16:39
    • @張國霞 感覺這個不地道啊

      meng0819發表于 2019/7/23 14:51:46

同系列書

相關圖書

看漫畫學Python:有趣、有料、好玩、好用(全彩版)

關東升、趙大羽 (作者)

Python是一門既簡單又強大的編程語言,被廣泛應用于數據分析、大數據、網絡爬蟲、自動化運維、科學計算和人工智能等領域。Python也越來越重要,成為國家計算機...

 

利用Python輕松學數學

蹇 彤 (作者)

本書將Python編程的基本知識和中小學數學知識緊密結合起來,在介紹Python知識的同時穿插數學趣題和難題的講解,以引導讀者從一個全新的角度來看待編程、體驗編...

¥69.00

Julia高性能科學計算 : 第2版

Changhyun Kwon ( 權昌賢) (作者) 徐國棟 李琦 (譯者)

Julia 像C一樣快,像MATLAB 一樣方便,并且像Python 一樣通用。在Julia 開發者,特別是JuMP 包開發者的大力支持下,Julia 為運籌學...

 

Boost程序庫完全開發指南――深入C++”準”標準庫(第5版)

羅劍鋒 (作者)

Boost是一個功能強大、構造精巧、跨平臺、開源并且完全免費的C++程序庫,有著“C++‘準’標準庫”的美譽。<br>Boost由C++標準委員會的部分成員所設...

¥118.00

程序員修煉之道:通向務實的最高境界(第2版)

THOMAS, DAVID; HUNT, ANDREW (作者)

《程序員修煉之道》之所以在全球范圍內廣泛傳播,被一代代開發者奉為圭臬,蓋因它可以創造出真正的價值:或編寫出更好的軟件,或探究出編程的本質,而所有收獲均不依賴于特...

¥89.00

ASP.NET Core 3框架揭秘

蔣金楠 (作者)

本書主要闡述 ASP.NET Core 最核心的部分——請求處理管道。通過閱讀本書,讀者可以深刻系統地了解 ASP.NET Core 應用在啟動過程中管道的構建...

¥199.00
百人牛牛棋牌 7225437351125959735508628603581456423458761121539773782744470596797950688695160641409620871201610992 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();