注冊 | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當前位置: 首頁出版圖書科學技術計算機/網(wǎng)絡軟件與程序設計深入理解Zabbix監(jiān)控系統(tǒng)

深入理解Zabbix監(jiān)控系統(tǒng)

深入理解Zabbix監(jiān)控系統(tǒng)

定 價:¥99.90

作 者: 鮑光亞 著
出版社: 人民郵電出版社
叢編項:
標 簽: 暫缺

ISBN: 9787115558336 出版時間: 2021-05-01 包裝: 平裝
開本: 16開 頁數(shù): 312 字數(shù):  

內(nèi)容簡介

  Zabbix是一個開源監(jiān)控系統(tǒng),在我國各類信息技術企業(yè)和金融企業(yè)中被廣泛應用。本書主要從源碼和功能兩個角度,分析Zabbix監(jiān)控系統(tǒng)的底層工作機制。本書首先講述跨進程的總體工作機制,然后按照監(jiān)控數(shù)據(jù)的處理流程依次講解Zabbix服務器端和Zabbix客戶端各類進程的內(nèi)部工作機制,最后講述Zabbix Web應用的工作機制。本書能夠幫助讀者深入理解Zabbix系統(tǒng)的核心原理,有助于在運維工作中快速定位和解決問題。本書適合具有一定Zabbix應用經(jīng)驗并想要進一步理解Zabbix工作機制的讀者閱讀,包括相關企業(yè)的運維人員、技術主管、架構師、產(chǎn)品經(jīng)理和決策者等。

作者簡介

  鮑光亞,本科畢業(yè)于山東大學,精通Zabbix和Prometheus監(jiān)控軟件,對IT系統(tǒng)和服務監(jiān)控軟件有深入研究。他在2014年至2019年就職于京東,從事Zabbix監(jiān)控系統(tǒng)的運維和相關開發(fā)工作,對分布式、并行軟件開發(fā)和項目管理具有濃厚興趣。他在工作期間始終踐行終身學習理念,不斷充實、提高自己,在2012年獲得了中國社會科學院研究生院MBA學位。作者個人郵箱:bgy.cn@outlook.com。

圖書目錄

第 一部分 Zabbix的基礎工作機制
第 1章 Zabbix總體架構及演變 2
1.1 監(jiān)控系統(tǒng)概述 2
1.2 Zabbix的總體架構 3
1.2.1 Zabbix服務器 4
1.2.2 Zabbix代理 6
1.2.3 Zabbix java gateway 7
1.2.4 Zabbix客戶端 7
1.3 Zabbix服務器的技術演進 7
1.3.1 Zabbix 2.2版本的Zabbix服務器 7
1.3.2 Zabbix 3.0版本的Zabbix服務器 8
1.3.3 Zabbix 4.0版本的Zabbix服務器 8
1.3.4 Zabbix 5.0版本的Zabbix服務器 9
1.4 小結(jié) 9
第 2章 Zabbix進程間通信與協(xié)調(diào) 10
2.1 主進程和子進程的創(chuàng)建 10
2.1.1 主進程的啟動和值守化 11
2.1.2 子進程的分類和創(chuàng)建 13
2.1.3 子進程從主進程繼承的內(nèi)容 17
2.1.4 進程的回收 20
2.2 信號捕捉與處理 21
2.2.1 Zabbix進程處理的信號類型 21
2.2.2 信號處理函數(shù) 22
2.2.3 信號的觸發(fā)與接收 24
2.2.4 用日志跟蹤信號 24
2.3 Zabbix的共享內(nèi)存 25
2.3.1 共享內(nèi)存結(jié)構——內(nèi)存池 25
2.3.2 共享內(nèi)存的分配與釋放 28
2.3.3 共享內(nèi)存狀態(tài)的獲取 30
2.3.4 Zabbix共享內(nèi)存舉例 31
2.4 TCP/IP套接字 32
2.4.1 zbx_socket_t結(jié)構體 32
2.4.2 作為服務器端的套接字 33
2.4.3 作為客戶端的套接字 33
2.5 基于Unix域套接字的進程間通信服務 34
2.5.1 Libevent庫在進程間通信服務中的應用 34
2.5.2 進程間通信服務的數(shù)據(jù)結(jié)構及其工作過程 35
2.5.3 進程間通信服務的初始化 37
2.5.4 進程間通信服務的通信協(xié)議 37
2.5.5 從日志查看進程間通信服務消息 37
2.6 鎖與信號量 38
2.6.1 互斥鎖的應用 38
2.6.2 讀寫鎖的應用 40
2.6.3 信號量的應用 40
2.7 小結(jié) 41
第3章 數(shù)據(jù)結(jié)構設計 42
3.1 向量 42
3.1.1 向量的數(shù)據(jù)結(jié)構定義 42
3.1.2 向量支持的操作 43
3.1.3 向量的應用場景 45
3.2 哈希集 45
3.2.1 哈希集的數(shù)據(jù)結(jié)構定義 45
3.2.2 哈希集支持的操作 47
3.2.3 哈希函數(shù)及關鍵字 48
3.2.4 哈希集的應用場景 49
3.3 哈希映射 50
3.3.1 哈希映射的數(shù)據(jù)結(jié)構定義 50
3.3.2 哈希映射支持的操作 51
3.4 二叉堆 51
3.4.1 二叉堆的數(shù)據(jù)結(jié)構定義 51
3.4.2 二叉堆支持的操作 52
3.4.3 二叉堆的應用場景 54
3.5 隊列 54
3.5.1 隊列的數(shù)據(jù)結(jié)構定義 55
3.5.2 隊列支持的操作 55
3.5.3 隊列的應用場景 56
3.6 鏈表 56
3.6.1 鏈表的數(shù)據(jù)結(jié)構定義 56
3.6.2 鏈表支持的操作 57
3.6.3 鏈表的應用場景 57
3.7 zbx_ json和zbx_ json_ parse結(jié)構 57
3.7.1 zbx_ json和zbx_ json_ parse結(jié)構的數(shù)據(jù)結(jié)構定義 58
3.7.2 zbx_ json和zbx_ json_ parse結(jié)構支持的操作 58
3.7.3 zbx_ json和zbx_ parse結(jié)構的應用場景 61
3.8 小結(jié) 62
第4章 數(shù)據(jù)緩存 63
4.1 ConfigCache和configuration syncer進程 63
4.1.1 ConfigCache的數(shù)據(jù)結(jié)構定義 64
4.1.2 ConfigCache的初始化和首次加載 70
4.1.3 configuration syncer進程 71
4.1.4 實時導出ConfigCache數(shù)據(jù) 74
4.2 HistoryCache和HistoryIndexCache 74
4.2.1 數(shù)據(jù)結(jié)構與共享內(nèi)存的區(qū)別 75
4.2.2 HistoryCache和HistoryIndexCache的數(shù)據(jù)結(jié)構定義 75
4.2.3 將監(jiān)控值寫入緩存 77
4.2.4 HistoryCache數(shù)據(jù)的讀取 78
4.2.5 ids變量 79
4.3 TrendCache 79
4.3.1 TrendCache的數(shù)據(jù)結(jié)構定義 79
4.3.2 TrendCache數(shù)據(jù)的寫入和讀取 80
4.4 ValueCache 81
4.4.1 ValueCache的數(shù)據(jù)結(jié)構定義 81
4.4.2 ValueCache數(shù)據(jù)的寫入 84
4.4.3 ValueCache數(shù)據(jù)的淘汰 87
4.4.4 ValueCache數(shù)據(jù)的讀取 89
4.5 小結(jié) 89
第5章 套接字通信與加密 90
5.1 TCP/IP套接字通信的過程 90
5.1.1 多路復用與接受連接過程 91
5.1.2 接收緩存與發(fā)送緩存 92
5.1.3 超時機制 92
5.1.4 關閉連接 93
5.2 ZBXP 93
5.2.1 ZBXP通信測試工具 94
5.2.2 服務器-代理的ZBXP 94
5.2.3 客戶端-服務器的通信協(xié)議 98
5.2.4 Web應用-服務器的通信協(xié)議 100
5.3 TCP/IP套接字通信的加密 104
5.4 小結(jié) 105
第6章 Zabbix日志及其應用 106
6.1 日志輸出 106
6.1.1 日志輸出函數(shù) 106
6.1.2 日志記錄格式 107
6.1.3 日志鎖 108
6.2 日志級別 109
6.2.1 日志級別的劃分 109
6.2.2 在日志記錄中添加日志級別 110
6.2.3 日志相關代碼的統(tǒng)計 111
6.3 小結(jié) 112
第二部分 Zabbix服務器端的各個進程
第7章 trapper類和poller類進程——監(jiān)控數(shù)據(jù)的收集 114
7.1 trapper類進程 114
7.1.1 trapper進程 115
7.1.2 snmp trapper進程 120
7.2 poller類進程 120
7.2.1 poller類進程的工作過程 121
7.2.2 poller進程 123
7.2.3 unreachable poller進程 130
7.2.4 ipmi manager進程和ipmi poller進程 130
7.2.5 icmp pinger進程 133
7.2.6 java poller進程 133
7.2.7 proxy poller進程 134
7.2.8 http poller進程 134
7.3 小結(jié) 135
第8章 預處理進程和LLD進程 136
8.1 進程間通信服務消息格式 137
8.2 預處理進程 138
8.2.1 預處理工作總體框架 138
8.2.2 preprocessing manager進程 140
8.2.3 preprocessing worker進程 143
8.3 LLD進程 145
8.3.1 進程間通信服務中的LLD消息 145
8.3.2 LLD原始數(shù)據(jù)的采集和預處理 146
8.3.3 lld manager進程 146
8.3.4 lld worker進程 149
8.4 小結(jié) 150
第9章 history syncer進程——監(jiān)控數(shù)據(jù)的計算與入庫 151
9.1 history syncer進程的工作機制 151
9.1.1 監(jiān)控值的同步過程 152
9.1.2 趨勢數(shù)據(jù)的同步過程 154
9.1.3 事件的生成與處理 155
9.1.4 動作的處理 160
9.1.5 history syncer進程之間的協(xié)作 161
9.2 觸發(fā)器的計算過程 162
9.2.1 觸發(fā)器表達式的表示法 162
9.2.2 表達式函數(shù)的計算 163
9.2.3 外層的計算 165
9.3 自定義history write模塊 165
9.3.1 接口函數(shù) 165
9.3.2 自定義模塊的注冊 167
9.4 小結(jié) 168
第 10章 escalator進程、alert進程族和task manager進程——事件激發(fā)的動作 169
10.1 escalator進程 169
10.1.1 理解升級序列 169
10.1.2 工作過程 171
10.1.3 escalator進程與alert進程族以及task表的關系 173
10.2 alert進程族 173
10.2.1 核心數(shù)據(jù)結(jié)構與工作機制 173
10.2.2 進程間通信服務消息與進程間交互 178
10.2.3 alert syncer進程 180
10.2.4 alert manager進程 180
10.2.5 alerter進程 181
10.2.6 看門狗邏輯 181
10.3 task manager進程 182
10.3.1 遠程命令任務和任務執(zhí)行結(jié)果 182
10.3.2 數(shù)據(jù)任務和數(shù)據(jù)結(jié)果任務 183
10.3.3 立即檢查任務 184
10.3.4 問題確認任務和問題關閉任務 185
10.4 小結(jié) 186
第 11章 Zabbix內(nèi)部監(jiān)控 187
11.1 self-monitoring進程與collector變量 187
11.1.1 測量指標和單位 188
11.1.2 數(shù)據(jù)結(jié)構 189
11.1.3 數(shù)據(jù)處理過程 190
11.1.4 數(shù)據(jù)溢出問題 191
11.1.5 共享內(nèi)存中的collector變量 191
11.2 從數(shù)據(jù)庫獲取狀態(tài)信息 192
11.3 從緩存獲取狀態(tài)信息 193
11.3.1 獲取ConfigCache的狀態(tài)信息 193
11.3.2 獲取ValueCache的狀態(tài)信息 194
11.3.3 獲取HistoryCache和HistoryIndexCache的狀態(tài)信息 195
11.3.4 獲取VMwareCache的狀態(tài)信息 195
11.4 從其他渠道獲取信息 195
11.4.1 從poller進程獲取信息 195
11.4.2 從進程間通信服務獲取信息 196
11.4.3 遠程獲取數(shù)據(jù) 196
11.5 小結(jié) 197
第 12章 Zabbix代理專述 198
12.1 Zabbix代理端分擔的功能 198
12.1.1 功能劃分的現(xiàn)狀與評估 198
12.1.2 未來功能劃分的可能性 200
12.2 Zabbix代理端的工作機制 200
12.2.1 Zabbix代理端的configuration syncer進程 200
12.2.2 Zabbix代理端的data sender進程 201
12.2.3 被動模式下的Zabbix代理 203
12.2.4 Zabbix代理端的housekeeper進程 204
12.2.5 Zabbix代理端的heartbeat sender進程 205
12.3 小結(jié) 206
第 13章 數(shù)據(jù)庫表和housekeeper進程 207
13.1 Zabbix服務器訪問數(shù)據(jù)庫 207
13.1.1 連接的建立與關閉 208
13.1.2 SQL語句的構造與運行 209
13.1.3 事務與數(shù)據(jù)的一致性 211
13.1.4 訪問量的計算 211
13.2 進程使用的數(shù)據(jù)庫表 212
13.2.1 history syncer進程使用的表 212
13.2.2 lld worker進程使用的表 212
13.2.3 alert syncer進程使用的表 213
13.2.4 escalator進程使用的表 213
13.2.5 proxy poller進程使用的表 214
13.2.6 configuration syncer進程使用的表 215
13.3 housekeeper進程 216
13.3.1 相關結(jié)構體定義 216
13.3.2 清理數(shù)據(jù)的過程 217
13.3.3 housekeeping_cleanup()函數(shù) 219
13.4 小結(jié) 220
第 14章 Zabbix java gateway 221
14.1 JMX監(jiān)控 221
14.2 ZJG的內(nèi)部結(jié)構 222
14.2.1 功能結(jié)構 222
14.2.2 ThreadPoolExecutor線程池 225
14.2.3 日志輸出 226
14.3 java poller進程與ZJG的交互 227
14.4 ZJG的安裝部署 229
14.4.1 編譯和部署ZJG 229
14.4.2 啟動和停止ZJG 229
14.5 小結(jié) 230
第三部分 Zabbix客戶端及源碼構建
第 15章 Zabbix客戶端的工作機制 232
15.1 Zabbix客戶端主進程 232
15.1.1 Zabbix客戶端主進程的工作過程 232
15.1.2 collector變量與共享內(nèi)存 234
15.2 collector進程 236
15.2.1 collector進程的工作過程 236
15.2.2 system.cpu.util監(jiān)控值的收集 237
15.2.3 proc.cpu.util監(jiān)控值的收集 239
15.2.4 vfs.dev.read與vfs.dev.write數(shù)據(jù) 242
15.3 listener進程 244
15.4 active checks進程 246
15.5 可加載模塊 247
15.5.1 模塊加載過程 247
15.5.2 制作模塊文件(.so文件)及測試 248
15.6 小結(jié) 249
第 16章 Zabbix客戶端的原生監(jiān)控項 250
16.1 agent類監(jiān)控項 250
16.2 simple類監(jiān)控項 251
16.3 common類監(jiān)控項 252
16.3.1 系統(tǒng)通用監(jiān)控項 253
16.3.2 web.page組監(jiān)控項 254
16.3.3 vfs.file組監(jiān)控項 255
16.3.4 vfs.dir組監(jiān)控項 256
16.3.5 dns組監(jiān)控項 257
16.3.6 log組監(jiān)控項 257
16.3.7 zabbix.stats監(jiān)控項 258
16.4 specific類監(jiān)控項 259
16.4.1 kernel組監(jiān)控項 259
16.4.2 net組監(jiān)控項 260
16.4.3 proc組監(jiān)控項 260
16.4.4 文件系統(tǒng)監(jiān)控項 261
16.4.5 塊設備監(jiān)控項 262
16.4.6 內(nèi)存監(jiān)控項 263
16.4.7 系統(tǒng)專用監(jiān)控項 263
16.4.8 傳感器監(jiān)控項 266
16.5 hostname監(jiān)控項 266
16.6 小結(jié) 267
第 17章 Zabbix的構建過程 268
17.1 總體構建過程 268
17.1.1 源碼文件的目錄結(jié)構 268
17.1.2 gcc的構建過程 269
17.2 configure過程 270
17.2.1 理解configure.a(chǎn)c文件 271
17.2.2 理解aclocal.m4文件 272
17.2.3 理解configure腳本 273
17.3 make過程 276
17.3.1 Makefile文件的內(nèi)容結(jié)構 277
17.3.2 理解Makefile.a(chǎn)m文件 280
17.3.3 src目錄的構建過程 283
17.4 make install過程 284
17.5 Zabbix客戶端的構建過程 284
17.6 Zabbix的構建過程示例 285
17.7 小結(jié) 286
第四部分 Zabbix Web
第 18章 Zabbix Web API 288
18.1 類的關系與類的職責 288
18.2 設計模式 291
18.2.1 單例模式 291
18.2.2 類工廠模式 291
18.3 jsonrpc消息的處理過程 292
18.3.1 準備階段 293
18.3.2 消息處理階段 294
18.4 擴展Zabbix Web API 297
18.4.1 相關源碼文件的組織 297
18.4.2 擴展方法示例 298
18.5 小結(jié) 299
第 19章 Zabbix Web應用 300
19.1 Zabbix的MVC模式 300
19.1.1 MVC中的類圖與類的職責 300
19.1.2 請求處理過程 302
19.2 前端頁面的結(jié)構與構建 304
19.2.1 布局與視圖 305
19.2.2 HTML的構建過程 307
19.3 CController類 309
19.4 Zabbix Web應用的擴展 309
19.4.1 源碼文件的目錄結(jié)構 309
19.4.2 在頁面增加篩選條件 310
19.5 小結(jié) 312

本目錄推薦

掃描二維碼
Copyright ? 讀書網(wǎng) www.dappsexplained.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網(wǎng)安備 42010302001612號