《監控的藝術:雲原生時代的監控框架》是2020年人民郵電出版社出版的圖書。
基本介紹
- 中文名:監控的藝術:雲原生時代的監控框架
- 作者:[澳]James Turnbull
- 類別:程式設計
- 出版社:人民郵電出版社
- 出版時間:2020年6月
- 開本:16 開
- 裝幀:平裝-膠訂
- ISBN:9787115539656
內容簡介,圖書目錄,作者簡介,
內容簡介
本書由前Docker員工、運維專家詹姆斯·特恩布爾執筆,系統介紹現代應用程式、架構的監控和度量。全書共分為13章,主要內容包括監控和度量過程中涉及的一些基本概念,描述基於主機的監控。書中運用了大量的代碼進行分析例證,有助於實時監控系統。另外,作者對系統日誌、應用程式以及通知等方面進行了系統介紹,並且在*後3章中,對Tornado的組成部分展開了詳細介紹,力求構建可監控的系統。本書適合軟體開發工程師、系統管理員以及其他所有對系統監控和DevOps感興趣的人閱讀。
圖書目錄
第 1章 引言 1
1.1 內容概覽 2
1.2 監控的定義 2
1.2.1 業務客戶 2
1.2.2 IT 客戶 2
1.3 監控的實際存在形式 2
1.3.1 手動、用戶發起或無監控階段 3
1.3.2 被動式監控階段 3
1.3.3 主動式監控階段 4
1.4 模型分布 4
1.5 實施主動式監控 5
1.6 本書內容 7
1.7 工具的選擇 8
第 2章 監控框架 9
2.1 黑盒與白盒 10
2.2 以事件、日誌、指標為中心 11
2.2.1 更多關於指標的知識 11
2.2.2 指標的定義 12
2.2.3 指標的類型 13
2.2.4 指標小結 14
2.2.5 指標聚合 15
2.3 上下文和有價值的通知 16
2.4 可視化 17
2.5 傳統監控有何問題 18
2.5.1 靜態配置 18
2.5.2 不靈活的邏輯和閾值 18
2.5.3 以目標對象為中心 19
2.5.4 寵物和肉牛的插曲 19
2.5.5 新方法的不同之處 20
2.5.6 更智慧型的閾值輸入 20
2.6 為監控框架採集數據 27
2.7 小結 28
第3章 使用Riemann管理事件和指標 29
3.1 Riemann簡介 30
3.1.1 Riemann的架構和實現 30
3.1.2 安裝Riemann 31
3.2 配置Riemann 35
3.2.1 學習Clojure 35
3.2.2 Riemann的基礎配置 35
3.2.3 事件、流、索引 38
3.2.4 配置事件、流、索引 40
3.2.5 向Riemann傳送事件 43
3.2.6 創建Riemann監控檢測 44
3.2.7 Riemann過濾的一個小插曲 45
3.3 連線Riemann伺服器 47
3.3.1 配置上游Riemann伺服器 48
3.3.2 配置下游Riemann伺服器 50
3.3.3 向下游傳送Riemann事件 51
3.4 在上游Riemann伺服器發出告警 52
3.4.1 Riemann事件限流 57
3.4.2 匯總Riemann事件 57
3.4.3 電子郵件通知的替代工具 58
3.5 測試Riemann配置 58
3.6 驗證Riemann配置 60
3.7 性能、可伸縮性、高可用性 61
3.8 Riemann的替代工具 63
3.9 小結 63
第4章 Graphite和Grafana 64
4.1 Graphite簡介 64
4.1.1 Carbon 65
4.1.2 Whisper 65
4.1.3 Graphite Web、Graphite-API、Grafana 66
4.2 Graphite的架構 66
4.3 安裝Graphite 66
4.3.1 在Ubuntu上安裝Graphite 68
4.3.2 在Red Hat上安裝Graphite 68
4.3.3 安裝Graphite-API 70
4.3.4 安裝Grafana 71
4.3.5 通過配置管理工具安裝Graphite和Grafana 73
4.4 配置Graphite和Carbon 73
4.4.1 配置Carbon指標的留存模式 78
4.4.2 估算Graphite存儲空間 80
4.4.3 Carbon和Graphite服務管理 81
4.5 配置Graphite-API 84
4.5.1 Graphite-API的服務管理 86
4.5.2 測試Graphite-API 87
4.6 配置Grafana 87
4.7 為Graphite配置Riemann 91
4.8 Grafana簡介 95
4.9 Graphite和Carbon冗餘 100
4.10 時間和時區 103
4.10.1 手動管理時間 103
4.10.2 通過配置管理工具管理時間 106
4.10.3 檢查時間狀態 107
4.11 Graphite和Grafana的替代工具 107
4.11.1 商業工具 107
4.11.2 開源工具 108
4.12 Whisper的替代工具 108
4.12.1 InfluxDB 108
4.12.2 Cyanite 109
4.13 小結 109
第5章 監控主機 110
5.1 collectd簡介 111
5.2 應該監控哪些主機組件 112
5.3 安裝collectd 113
5.3.1 在Ubuntu上安裝collectd 113
5.3.2 在Red Hat上安裝collectd 114
5.3.3 通過配置管理工具安裝collectd 115
5.4 配置collectd 115
5.4.1 載入和配置collectd外掛程式來進行監控 118
5.4.2 後的準備 130
5.4.3 啟用和運行collectd 130
5.5 collectd事件 130
5.6 將collectd事件傳送到Graphite 132
5.7 重構collectd指標名稱 133
5.8 小結 136
第6章 在Riemann中使用collectd事件 137
6.1 檢測正在運行的進程 137
6.2 其他行動和改進 141
6.3 重複一些傳統監控 142
6.4 通過更智慧型的數據進行更好的監控 143
6.4.1 構建基於中位數的檢測 143
6.4.2 使用百分位數進行基於主機的檢測 144
6.4.3 對檢測進行抽象 145
6.4.4 對檢測進行組織 149
6.5 使用Grafana繪製collectd指標 149
6.5.1 創建主機看板 150
6.5.2 創建第 一個主機圖表 151
6.5.3 創建記憶體圖表 154
6.5.4 單個主機圖表 155
6.5.5 其他圖表 156
6.6 網路、設備和Microsoft Windows監控 156
6.7 collectd的替代工具 157
6.7.1 商業工具 157
6.7.2 開源工具 157
6.8 小結 158
第7章 容器——另一種類型的主機 159
7.1 容器監控面臨的挑戰 159
7.2 監控Docker容器 162
7.2.1 Docker collectd外掛程式 163
7.2.2 安裝Docker collectd外掛程式 164
7.2.3 配置Docker collectd外掛程式 165
7.3 使用Riemann處理Docker collectd的統計信息 166
7.4 為Docker指標指定不同的解析度 176
7.5 清理舊的Graphite Docker指標 177
7.6 使用Docker 指標進行監控 177
7.7 其他容器監控工具 178
7.8 小結 179
第8章 日誌 180
8.1 ELK技術棧入門 180
8.2 Logstash架構 181
8.3 安裝Logstash 183
8.3.1 在Debian和Ubuntu上安裝Java 183
8.3.2 在Red Hat上安裝Java 183
8.3.3 測試Java是否安裝成功 183
8.3.4 在Ubuntu和Debian上安裝Logstash包 183
8.3.5 在Red Hat上安裝Logstash包 184
8.3.6 通過配置管理工具安裝Logstash 184
8.3.7 測試Logstash是否已安裝成功 185
8.4 配置Logstash 185
8.5 安裝Elasticsearch 187
8.5.1 在Debian和Ubuntu上安裝Java 187
8.5.2 在Red Hat上安裝Java 188
8.5.3 通過配置管理工具安裝Elasticsearch 189
8.5.4 測試Elasticsearch是否安裝成功 189
8.5.5 確定Elasticsearch正在運行 189
8.6 配置Elasticsearch集群和節點 190
8.7 時間和時區 193
8.8 集成Logstash和Elasticsearch 193
8.8.1 Logstash內部會發生什麼 195
8.8.2 Elasticsearch內部會發生什麼 200
8.9 安裝Kibana 201
8.10 配置Kibana 202
8.11 運行Kibana 203
8.12 通過Syslog將主機連線到Logstash 205
8.12.1 配置Logstash 205
8.12.2 Syslog概覽 206
8.12.3 配置Syslog 207
8.13 記錄Docker日誌 209
8.14 將數據從Logstash傳送到Riemann 214
8.15 將數據從Riemann傳送到Logstash 216
8.16 伸縮擴展Logstash和Elasticsearch 219
8.16.1 伸縮擴展Logstash 219
8.16.2 伸縮擴展Elasticsearch 220
8.17 監控組件 221
8.17.1 監控RSyslog 221
8.17.2 監控Logstash 221
8.17.3 監控Elasticsearch 226
8.18 Logstash的替代方案 229
8.18.1 Splunk 229
8.18.2 Heka 229
8.18.3 Graylog 229
8.18.4 mtail 229
8.19 小結 229
第9章 構建可監控的應用程式 230
9.1 應用程式監控入門 231
9.1.1 應該在哪裡測量 231
9.1.2 測量模式 232
9.1.3 時間和觀察者效應 232
9.2 指標 233
9.2.1 應用程式指標 233
9.2.2 業務指標 233
9.2.3 監控模式或放置指標的位置 233
9.2.4 工具模式 233
9.2.5 外部模式 234
9.2.6 在示例應用程式中構建指標 235
9.3 日誌 248
9.3.1 添加自己的結構化日誌條目 249
9.3.2 將結構化日誌添加到示例應用程式 250
9.3.3 使用現有日誌 255
9.4 健康檢查、端點和外部監控 258
9.5 部署 262
9.5.1 向示例應用程式添加部署通知 262
9.5.2 使用部署事件 264
9.6 跟蹤 267
9.7 小結 267
第 10章 通知 268
10.1 目前的通知 269
10.2 更新expired事件配置 269
10.3 升級電子郵件通知 269
10.3.1 格式化電子郵件主題 271
10.3.2 格式化電子郵件正文 271
10.4 為通知添加圖表 275
10.4.1 定義數據源 276
10.4.2 定義查詢參數 277
10.4.3 定義圖表面板和行 279
10.4.4 繪製看板 280
10.4.5 將看板添加到Riemann通知中 281
10.4.6 一些腳本化看板示例 282
10.4.7 其他上下文 283
10.5 添加Slack作為目的地 283
10.6 添加PagerDuty作為目的地 286
10.7 維護和停機 289
10.8 從通知中學習 292
10.9 其他告警工具 295
10.10 小結 295
第 11章 監控之巔:監控Tornado 296
11.1 Tornado應用程式 297
11.2 監控策略 299
11.3 標記Tornado事件 299
11.4 監控Tornado:Web層 300
11.4.1 監控HAProxy 301
11.4.2 監控Nginx 309
11.4.3 解決Web層的監控問題 316
11.4.4 在Riemann中設定Tornado檢測 318
11.4.5 webtier函式 320
11.5 向Riemann添加Tornado檢測 325
11.6 小結 326
第 12章 監控Tornado:應用程式層 327
12.1 監控應用程式層的JVM 327
12.2 採集應用程式層的JVM日誌 331
12.3 監控Tornado API應用程式 334
12.4 解決Tornado應用程式層監控的關注點 339
12.5 小結 342
第 13章 監控Tornado:數據層 343
13.1 監控數據層的MySQL伺服器 343
13.1.1 使用MySQL數據作為指標 346
13.1.2 查詢的執行時間 349
13.2 監控數據層的Redis伺服器 351
13.3 解決Tornado數據層的監控 353
13.4 Tornado看板 355
13.5 擴展Tornado之外的監控 360
13.6 小結 361
附錄 淺談Clojure和函式式編程 362
作者簡介
詹姆斯·特恩布爾(James Turnbull),曾任Kickstarter CTO、Docker公司服務和支持副總裁、Venmo公司工程副總裁、Puppet Labs技術運維副總裁。熱衷於開源領域,著有近10本技術書,包括《Linux系統管理大全》《精通Puppet配置管理工具》。 譯者介紹 浙江中金黃金集團CTO,曾就職於美國道富銀行,歷任全棧工程師、架構師、技術經理。技術涉獵廣泛,在產品設計開發、架構設計、技術團隊管理等方面有豐富經驗。另譯有《擴展jQuery》和《HTML5 JavaScript動畫基礎》。