|
-- 會員 / 註冊 --
|
|
|
|
深入淺出Prometheus:原理、應用、源碼與拓展詳解 ( 簡體 字) |
作者:陳曉宇,楊川胡,陳嘯 | 類別:1. -> 程式設計 -> 綜合 |
譯者: |
出版社:電子工業出版社 | 3dWoo書號: 50939 詢問書籍請說出此書號!【缺書】 NT售價: 445 元 |
出版日:4/1/2019 |
頁數:384 |
光碟數:0 |
|
站長推薦: |
印刷:黑白印刷 | 語系: ( 簡體 版 ) |
|
加入購物車 │加到我的最愛 (請先登入會員) |
ISBN:9787121360954 |
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 序 |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證) |
作者序: |
譯者序: |
前言:無論是傳統數據中心還是云數據中心,無論是物理機、虛擬機還是容器,整個數據中心的建設都繞不開監控這個話題。優秀的監控系統不僅需要兼容各種設備和環境,還需要具備高性能、高可靠及易運維等特性,Prometheus正是其中之一。伴隨著容器相關技術的興起,Prometheus正逐步成為容器監控的標準,并且對于傳統應用和設備也有很好的兼容性。 Prometheus由Go語言編寫而成,采用Pull方式獲取監控信息,并提供了多維度的數據模型和靈活的查詢接口。Prometheus不僅可以通過靜態文件配置監控對象,還支持自動發現機制,能夠通過Kubernetes、Consul、DNS等多種方式動態獲取監控對象。在數據采集方面,借助Go語言的高并發特性,單機Prometheus可以采集數百個節點的監控數據;在數據存儲方面,隨著本地時序數據庫的不斷優化,單機Prometheus每秒可以采集一千萬個指標,如果需要存儲大量的歷史監控數據,則還支持遠端存儲。 本書共分為4篇12章,分別講解Prometheus原理、在傳統應用監控和Kubernetes監控中的應用,以及源碼和拓展,具體內容如下所述。 第1章主要介紹監控系統的概念和架構設計,并剖析監控系統的內部結構,從程序運行的角度講解基礎資源監控、中間件監控、應用程序監控和日志監控,并將多種監控系統的優缺點進行對比,指出Prometheus獨特的優勢。 第2章首先介紹Prometheus的相關概念,包括數據指標的定義和分類;然后介紹Prometheus的總體架構和工作原理,包括數據采集、數據處理、數據存儲、數據查詢及告警;最后講解Prometheus聯邦及Thanos的原理。 第3章主要介紹Prometheus數據存儲。首先從歷史演進、設計理念、實現原理等多個方面詳細介紹Prometheus的本地時序數據庫(Prometheus TSDB);然后介紹Prometheus遠端存儲的使用方式和實現原理,并以InfluxDB為例,詳解Adapter的工作原理。 第4章主要介紹Prometheus exporter的背景、使用方式和工作原理。首先介紹幾個常用的exporter,包括Node exporter、Redis exporter、MySQL server exporter的內部構造;然后從源碼角度解析exporter,并編寫一個簡單的exporter。 第5章主要介紹Kubernetes集群的常用監控方案,包括?Heapster、kube-state-metrics、metrics-server,并介紹將Prometheus應用于Kubernetes集群的優勢。 第6章主要介紹Prometheus在Kubernetes集群中的安裝和配置。首先介紹如何用常規的手動方式在Kubernetes集群中安裝Prometheus;然后介紹Kubernetes中的另一種更高級的監控方案Prometheus Operator的安裝和使用,包括添加自定義監控項、添加自定義告警、自動發現配置、數據持久化配置等。 第7章主要介紹Prometheus監控Kubernetes集群服務的一些配置方法。首先介紹手動的靜態配置方法,然后介紹如何使用Prometheus中的服務發現機制來自動發現Kubernetes中的Service。 第8章主要介紹Prometheus在Kubernetes集群中的一些常用監控對象,包括cAdvisor監控、apiserver監控、Service監控、kube-state-metrics監控,并介紹如何使用node-exporter監控Kubernetes集群中的節點。 第9章主要介紹Prometheus監控Kubernetes集群的數據展示。首先介紹在Kubernetes集群中安裝Grafana的方法;然后介紹如何將Grafana配置Prometheus數據源,以及一些常用的Dashboard配置方法;并介紹Grafana針對Kubernetes集群監控的一個常用插件grafana-kuberentes-app的安裝和使用;最后介紹如何使用Grafana告警,包括郵件告警、釘釘告警等。 第10章主要介紹Prometheus監控Kubernetes集群的告警功能。首先介紹如何在Kubernetes集群中安裝Prometheus的告警模塊AlertManager;然后介紹如何通過ConfigMap?資源對象配置告警規則;最后編寫一個?webhook?接收器來處理AlertManager告警數據。 第11章主要對Prometheus源碼進行分析,涉及Prometheus數據采集、規則管理、通知管理、存儲管理和查詢引擎方面的內容,并以二次開發實戰的方式加深讀者對Prometheus程序結構的理解。 第12章主要對AlertManager源碼進行分析,涉及接收告警、告警調度、告警匹配、告警處理和告警通知方面的內容,并結合配置文件中的配置項,帶領讀者從源碼角度理解告警分組、告警頻次控制、告警路由、告警抑制和告警靜默功能的實現。 致謝 本書作者分別來自宜信容器云團隊(陳曉宇)、“k8s技術圈”社區(楊川胡)及深信服安全感知團隊(陳嘯),感謝這些團隊及社區對本書作者的支持和鼓勵。 感謝張國霞編輯在成書過程中對作者的協助和鞭策。 感謝作者家人對作者的支持和鼓勵,來自家人的愛,讓我們時刻擁有信心 ────本書作者 |
內容簡介:Prometheus是由SoundCloud開源的監控系統,是Google BorgMon監控系統的開源版本。伴隨著容器及Kubernetes技術的興起,Prometheus越來越受到大家的關注。本書系統講解了Prometheus的原理、應用、源碼和拓展,圖文并茂、講解全面。原理篇主要介紹了Prometheus的整體架構及與其他監控系統的對比和優勢,讓讀者從整體上把握Prometheus的相關概念。應用篇從傳統應用監控和Kubernetes監控兩方面講解Prometheus的安裝、配置及優秀實踐,著重介紹Redis、MySQL server等常用中間件監控,并結合Kubernetes,詳細講解如何通過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 |
序: |
|