Zabbix 企業級分佈式監控系統, 2/e
內容描述
本書基於穩定版本Zabbix 4.0,對Zabbix的各項功能進行了詳細而深入的講解,包括監控系統規劃、安裝包定製、架構高可用、性能調優、指標數據採集、自動化處理功能、觸發器使用與原理、告警配置、Zabbix API、數據可視化、網絡拓撲自動發現、內部實現原理以及部分源碼分析等內容,讓讀者真正通過一本書就能夠完全掌握Zabbix監控系統的核心技術。本書第1版內容收獲了大量讀者好評,是一本實戰性很強的工具書,讀者將其稱為監控領域的“紅寶書”,書中所寫內容均可以在生產環境中直接應用。而在第2版中,採納了以往讀者的寶貴意見,增加了作者的最新研究成果,擴充了大量內容,但繼續保持由淺入深、由易到難的寫作風格。通過合理的章節編排,本書內容分為初級、中級和高級3個部分,從入門的安裝與配置,到復雜的高級使用,都進行了講解,並配有大量的真實監控案例。書中包含作者參與過的真實企業級監控系統構建項目的相關經驗,通過閱讀掌握本書的內容,可以讓Zabbix監控系統的學習和使用從此不再困難。本書適合想瞭解、學習和規劃構建監控系統的人員閱讀,可作為學習入門Zabbix的工具書,也適合想更深入理解Zabbix監控系統的讀者閱讀。
目錄大綱
●章開篇――監控系統簡介1
1.1監控系統的功能概述1
1.2監控系統的實現原理2
1.2.1模塊組成2
1.2.2採集協議2
1.2.3採集模式3
1.2.4監控指標3
1.2.5代理架構3
1.2.6數據存儲4
1.2.7告警功能5
1.2.8可擴展性5
1.2.9總結歸納6
1.3監控系統的開源產品7
1.3.1 Cacti 7
1.3.2 Nagios 8
1.3.3 InfluxDB套件9
1.3.4 Prometheus 10
1.3.5 OpenFalcon 11
1.3.6 Netdata 12
1.3.7 ELK家族13
1.3.8 Zabbix 14
第2章Zabbix簡介16
2.1 Zabbix的用戶群體都有誰16
2.2使用Zabbix需要具備什麼基礎17
2.3 Zabbix是一個什麼樣的產品18
2.4為何選擇Zabbix作為監控系統19
2.5該選用Zabbix的哪個版本20
2.6 Zabbix的架構是什麼樣的21
2.7 Zabbix的功能特性都有哪些22
第3章安裝與部署25
3.1安裝環境概述25
3.1.1硬件環境需求25
3.1.2軟件環境需求28
3.1.3網絡環境需求30
3.2 Zabbix-Server服務器端的安裝30
3.2.1安裝Zabbix-Server 33
3.2 .2安裝MySQL 33
3.2.3配置zabbix_server.conf 36
3.2.4防火牆、SELinux和權限的設置38
3.2.5配置Zabbix-Web 40
3.2.6相關故障的處理46
3.2.7 zabbix_server程序的參數49
3.3 Zabbix -Agent客戶端的安裝51
3.3.1安裝Zabbix-Agent 51
3.3.2防火牆的設置51
3.3.3配置zabbix_agentd.conf 52
3.4 SNMP監控配置52
3.5在Windows中安裝Zabbix-Agent 53
3.5.1安裝與配置53
3.5.2註冊服務53
3.5.3啟動服務54
3.6在其他平台安裝Zabbix-Agent 56
3.7 Zabbix-Get的使用56
3.8 Zabbix相關術語(命令) 57
3.9 Zabbix-Server對數據的存儲58
3.9.1監控數據的存儲58
3.9.2 MySQL表分區實例62
3.10高可用和安全70
3.10.1高可用70
3.10.2通信安全70
3.10.3禁用Zabbix的guest用戶70
3.11 Zabbix數據庫備份70
3.12升級Zabbix 73
3.12.1同版本升級的方法73
3.12.2跨版本升級的方法74
3.12.3數據庫自動升級的原理74
3.12.4升級失敗的處理案例75
第4章快速配置和使用77
4.1配置流程77
4.2添加主機組78
4.2.1如何劃分主機組78
4.2.2如何添加主機組78
4.2.3層級主機分組80
4.3添加模板81
4.4添加主機82
4.5配置圖形86
4.6配置大屏92
4.7配置幻燈片94
4.8配置地圖96
4.8.1添加背景圖96
4.8.2添加地圖96
4.9使用IT服務102
4.10使用報表105
4.11資產管理108
4.12圖形共享109
4.13全局搜索110
4.14最新數據111
4.15故障112
4.16數據的導入/導出112
4.17用戶權限113
4.17.1用戶組113
4.17.2用戶組權限114
4.17.3用戶116
4.17.4匿名用戶117
4.18調試模式117
4.19與LDAP對接118
4.20維護模式119
4.21故障確認121
4.22批量更新123
第5章處理監控指標數據124
5.1添加新的監控項124
5.1.1監控項的含義124
5.1.2如何添加監控項124
5.2監控指標的自定義130
5.2.1 key的格式130
5.2.2 key名稱的定義範圍130
5.2.3 key的參數數組應用實例131
5.2.4用戶自定義參數131
5.3 Zabbix內置的監控方式133
5.3.1 Zabbix-Agent監控方式134
5.3.2 Simplecheck監控方式140
5.3.3日誌監控方式144
5.3.4計算型監控方式152
5.3.5聚合型監控方式156
5.3.6內部檢測監控方式163
5.3.7 SSH監控方式163
5.3.8 Telnet監控方式167
5.3.9擴展檢測監控方式169
5.4監控項指標數據的預處理171
5.4.1預處理概述171
5.4.2預處理的運行流程172
5.4.3預處理的數據類型173
5.5配置宏177
5.5.1全局宏177
5.5.2模板宏178
5.5.3主機宏178
5.5.4監控項宏179
5.5.5宏的函數運算180
5.5.6宏使用總結181
5.5.7宏的上下文182
5.6配置值映射183
第6章精通告警配置185
6.1告警流程185
6.2告警觸發器的配置186
6.2.1 Trigger的作用186
6.2.2 Trigger的故障等級定義187
6.2.3 Trigger的配置步驟187
6.2.4 Trigger告警依賴191
6.2.5 Trigger中的數值單位192
6.2.6 Trigger表達式192
6.3告警處理的配置200
6.3.1如何發送告警200
6.3.2 Action功能概述200
6.3.3 Action配置步驟201
6.3.4告警處理措施203
6.3.5在告警消息中使用宏207
6.3.6告警恢復措施208
6.3.7告警更新措施209
6.3.8發送告警消息的步驟總結210
6.3.9查看告警消息的發送記錄211
6.3.10執行遠程命令211
6.3.11不支持的Item發送告警215
6.4郵件告警配置215
6.4.1創建Media類型215
6.4.2創建用戶216
6.4.3創建Action 217
6.5自定義腳本告警218
6.5.1自定義腳本告警的原理218
6.5.2電話告警220
6.5.3短信接口告警221
6.5.4微信告警221
6.6郵件告警腳本的配置222
6.6.1 Zabbix-Server自定義告警腳本222
6.6.2 Zabbix-Server重啟服務224
6.6.3 Zabbix-Web配置自定義腳本225
6.6.4告警接收郵件的配置226
6.6.5查看郵件發送227
6.7告警升級機制227
6.7.1告警升級的作用227
6.7.2告警升級的配置228
6.8觸發器標籤配置230
6.8.1標籤設置230
6.8.2標籤的複雜匹配231
6.9手動關閉告警233
6.10如何取消告警發送235
6.11如何刪除故障信息235
6.12告警聚合236
6.12.1告警聚合的原理236
6.12.2基於觸發器的告警聚合236
6.12.3基於全局的告警聚合239
6.13告警配置故障排查242
6.13.1告警消息未發送示例242
6.13 .2郵件服務器連接失敗示例243
第7章探究告警觸發器244
7.1 Trigger函數的意義244
7.2 Trigger函數的分類244
7.3 Trigger函數――比較與查找245
7.3.1求最近兩值差的絕對值―― abschange 245
7.3.2求優選值與最小值的差――delta 248
7.3.3判斷最近兩值是否相同――diff 251
7.3.4求最近兩值的變化量――change 254
7.3.5數值的位與運算――band 256
7.3.6數據失聯――nodata 261
7.3.7獲取最新數據――last 264
7.3.8求前一個值――prev 266
7.4 Trigger函數――計算268
7.4.1求優選值――max 268
7.4.2求最小值――min 271
7.4.3求平均值――avg 273
7.4. 4值求和――sum 276
7.4.5統計個數――count 278
7.5 Trigger函數――時間286
7.5.1返回當前時間(年月日時分秒)――now 286
7.5.2返回當前日期(年月日)――date 288
7.5.3返回當前時間(時分秒)――time 289
7.5.4本月第幾天――dayofmonth 291
7.5.5本週第幾天――dayofweek 292
7.5.6時間對比――fuzzytime 293
7.6 Trigger函數――日誌295
7.6.1日誌ID――logeventid 295
7.6.2獲取日誌等級――logseverity 296
7.6.3獲取日誌來源――logsource 297
7.7 Trigger函數――字符串匹配299
7.7 .1正則表達式不區分大小寫――iregexp 299
7.7.2正則表達式區分大小寫――regexp 301
7.7.3字符串匹配――str 302
7.7.4字符串長度――strlen 304
7.8 Trigger函數――趨勢預測305
7.8.1百分線――percentile 305
7.8.2趨勢預測――forecast 307
7.8.3剩餘時間――timeleft 311
7.8.4趨勢預測計算型監控方式314
7.9參考資料318
第8章剖析監控方式319
8.1 Zabbix支持的監控方式319
8.2 Zabbix監控方式的邏輯320
8.3 Zabbix-Agent的工作模式321
8.3.1工作模式概述321
8.3.2被動模式的配置323
8.3.3主動模式的配置324
8.4 Zabbix-Trapper(zabbix_sender)監控方式326
8.4.1 Zabbix-Trapper的配置步驟326
8.4.2 Zabbix-Trapper的配置示例326
8.4.3使用zabbix_sender程序發送數據328
8.4.4使用zabbix_sender程序批量讀取文件329
8.5 SNMP監控方式330
8.5.1 SNMP協議概述330
8.5.2 SNMP協議的工作方式331
8.5.3 SNMP協議的工作原理331
8.5.4 SNMPMIB簡介334
8.5.5 SNMP相關術語336
8.5.6配置Zabbix-Server的SNMP監控337
8.5.7 SNMP監控中的LLD原理340
8.6 SNMPTraps監控方式343
8.6.1 SNMPTraps的概念343
8.6.2 SNMPTraps的工作原理343
8.6.3 SNMPTraps的安裝與配置343
8.6.4 SNMPTraps的測試346
8.7 IPMI監控方式348
8.7.1 IPMI的概念348
8.7.2 IPMI的特性349
8.7.3配置Zabbix-Server監控IPMI 349
8.7.4 Zabbix自帶的IPMI模板350
8.7.5在Linux系統中使用OpenIPMI 350
8.7.6創建IPMI模板352
8.7.7 IPMI監控主機353
8.8 JMX監控方式354
8.8.1 JMX在Zabbix中的運行流程354
8.8.2 JMX監控的安裝和配置355
8.8.3安裝Zabbix-Java-Gateway 355
8.8.4配置Zabbix-Java-Gateway 356
8.8.5查看Zabbix-Java-Gateway日誌357
8.8.6監控Java應用程序的方法357
8.8.7開啟Tomcat的JMX 358
8.8.8獲取JMX數據359
8.8.9 JMX數據的LLD 363
8.8.10 JMX監控的核心技術實現367
8.9 HTTPagent監控方式369
8.9.1 HTTPagent監控概述369
8.9.2 HTTPagent監控實例369
8.9.3 HTTPagent監控配置370
8.9.4轉換HTTPagent獲取的數據結果371
8.10 Web監控方式372
8.10.1 Web監控的原理372
8.10.2 Web監控指標372
8.10.3 Web監控的配置步驟373
8.10.4 Web監控用戶認證支持376
8.10 .5 Web監控觸發器的配置379
8.10.6 Web監控排錯381
8.11 Dependentitem監控方式381
8.12 ODBC監控方式381
8.12.1安裝ODBC軟件包381
8.12.2查看ODBC配置381
8.12.3安裝MySQLODBC驅動382
8.12 .4使用ODBC驅動連接MySQL 382
8.12.5配置Item 383
8.12.6 ODBC錯誤處理385
8.12.7安裝OracleOBDC驅動385
8.12.8安裝PostgresSQLOBDC驅動387
8.12.9 OBDC的監控項自動發現388
8.13其他監控方式391
8.14命令執行的監控方式391
8.14.1 system.run 391
8.14.2遠程命令391
第9章分佈式監控與自動化392
9.1 Zabbix-Proxy分佈式監控392
9.1.1安裝Zabbix-Proxy 395
9.1.2導入Zabbix-Proxy的數據庫396
9.1.3配置zabbix_proxy.conf 397
9.1.4啟動Zabbix-Proxy服務397
9.1.5查看Zabbix- Proxy日誌397
9.1.6添加Proxy 398
9.1.7添加Proxy的主機監控398
9.2監控的自動化功能399
9.3網絡自動發現400
9.4主動方式的自動註冊功能403
9.4.1功能概述403
9.4.2配置過程404
9.5監控項自動發現功能406
9.5.1功能概述406
9.5.2 LLD的原理406
9.5.3 LLD的數據格式407
9.5.4 LLD應用案例411
9.5.5配置Zabbix客戶端411
9.5.6編寫自動發現腳本412
9.5.7自定義key配置文件415
9.5.8在Web頁面添加LLD 416
9.5.9主機信息數據LLD 425
9.5.10定期刪除不存在的監控元素426
9.5.11自動創建監控項分組427
9.6使用自動化工具SaltStack批量部署Zabbix 428
9.6.1使用SaltStack配置管理Zabbix 428
9.6.2安裝salt-master 428
9.6.3安裝salt-minion 429
9.6.4接受客戶端密鑰申請429
9.6. 5同步文件429
9.6.6執行同步431
0章監控功能案例433
10.1監控TCP連接433
10.1.1 TCP連接監控原理433
10.1.2 TCP連接監控腳本的實現434
10.1.3 TCP監控模板指標434
10.2監控Nginx 435
10.2.1 Nginx監控原理435
10.2.2 Nginx數據配置的開啟435
10.2.3 Nginx監控腳本的實現436
10.2.4 Nginx監控key的配置437
10.3監控PHP-FPM 438
10.3.1 PHP-FPM監控原理438
10.3.2 PHP-FPM數據配置的開啟438
10.3.3 PHP-FPM監控腳本的實現439
10.3.4 PHP-FPM監控key的配置441
10.4監控MySQL 442
10.4.1 MySQL監控原理442
10.4.2創建MySQL監控專用賬戶443
10.4.3 MySQL監控模板443
10.4.4 MySQL監控指標444
10.4.5 MySQL模板觸發器445
10.4.6 MySQL監控效果展示446
10.5監控物理服務器447
10.5.1 DELL服務器監控原理447
10.5.2 DELL服務器IPMI的配置447
10.5.3通過IPMI獲取數據449
10.5.4 DELL服務IPMI監控指標450
10.5.5添加IPMI監控主機450
10.6監控物理機磁盤451
10.6.1物理機磁盤監控原理451
10.6.2物理機磁盤監控的配置453
10.6.3物理機磁盤監控指標453
10.6.4物理機磁盤監控觸發器454
10.6.5物理機磁盤監控數據展示454
10.7監控Cisco路由器455
10.7.1 Cisco路由器監控原理455
10.7.2 Cisco路由器SNMP的配置455
10.7.3通過snmpwalk獲取SNMP數據455
10.7.4添加Cisco模板455
10.8監控VMware 458
10.8.1 VMware監控原理458
10.8.2 Zabbix-Server的配置458
10.8.3 vCenter監控賬戶的配置459
10.8.4添加監控主機459
10.8.5監控賬戶宏的配置460
10.8.6查看監控數據461
10.9監控RabbitMQ 462
10.9.1 RabbitMQ監控原理462
10.9.2 RabbitMQ監控賬戶的配置462
10.9.3 RabbitMQ監控指標463
10.9.4 RabbitMQ監控觸發器463
10.9.5 RabbitMQ監控效果展示464
10.10監控Elasticsearch 465
10.10.1 Elasticsearch監控原理465
10.10.2 Elasticsearch監控指標465
10.10.3 Elasticsearch監控觸發器465
10.11監控Kafka 466
10.11.1 Kafka監控原理466
10.11.2 Kafka監控的配置466
10.11.3 Kafka監控指標466
10.11.4 Kafka監控觸發器467
10.11.5 Kafka監控效果展示467
10.12監控Redis 468
10.12.1 Redis監控原理468
10.12.2 Redis監控的配置468
10.12.3 Redis監控指標469
10.12 .4 Redis監控觸發器469
10.12.5 Redis監控效果展示469
10.13監控Oracle數據庫470
10.13.1 Oracle監控原理470
10.13.2 Oracle監控賬戶的配置470
10.13.3 Oracle監控指標472
10.13.4 Oracle監控觸發器473
10.13.5 Oracle監控效果展示473
10.14監控WebLogic 474
10.14.1 WebLogic監控原理474
10.14.2 WebLogic監控的配置474
10.14.3 WebLogic監控指標474
10.14.4 WebLogic監控觸發器475
10.15監控SQLServer 475
10.15.1 SQLServer監控原理475
10.15.2 SQLServer監控指標475
10.15.3 SQLServer監控觸發器476
10.15.4 SQLServer監控效果展示476
10.16監控HTTPS證書過期477
10.16.1 HTTPS證書過期監控原理477
10.16.2 HTTPS證書過期監控指標478
10.16.3 HTTPS證書過期監控觸發器480
10.16.4 HTTPS證書過期監控效果展示480
1章監控數據可視化482
11.1 Grafana 482
11.1.1 Grafana簡介482
11.1.2安裝Grafana 484
11.1.3安裝並啟用GrafanaZabbix插件485
11.1.4添加並配置Zabbix數據源488
11.1.5添加Grafana圖形489
11.2 Graphtrees 492
11.2.1安裝Graphtrees 492
11.2.2展示效果493
11.3谷歌瀏覽器告警插件493
11.4 MacApp的使用495
11.5手機App的使用495
11.6導出實時監控數據496
11.6.1需求來源496
11.6.2參數配置496
11.6.3數據格式497
11.6.4修改源碼500
11.6.5數據對接501
11.7網絡拓撲自動發現502
11.7.1需求概述502
11.7.2實現原理503
11.7.3網絡拓撲自動發現實例503
11.7.4通過SNMP獲取LLDP數據505
11.7.5通過Zabbix-Server獲取LLDP數據507
11.7.6網絡拓撲可視化的實現508
11.8監控數據可視化的意義509
11.9總結509
2章監控性能優化510
12.1 Zabbix性能優化概述510
12.2 Zabbix性能優化依據511
12.3 Zabbix配置文件參數的優化515
12.4 Zabbix架構的優化517
12.5 Item的工作模式及Trigger的優化517
12.6 Zabbix數據庫的優化517
12.7 Zabbix運行硬件的優化518
12.8 Zabbix壓力測試518
12.8.1壓力測試原理518
12.8.2壓力測試準備518
12.8.3壓力測試過程520
12.8.4壓力測試總結522
12.9 Zabbix -Server內部實現原理522
12.9.1 Zabbix-Server的整體流程522
12.9.2 Zabbix-Server採集器的工作流程523
12.9.3 Zabbix-Proxy工作流程524
12.9.4 Zabbix-Server告警的工作流程525
12.10 Zabbix-Server配置參數526
12.11 Zabbix-Server性能優化總結528
3章ZabbixAPI的使用530
13.1 ZabbixAPI簡介530
13.2 JSON-RPC 530
13.3 ZabbixAPI的使用流程532
13.3.1使用API的基本步驟532
13.3.2如何使用官方文檔獲取幫助533
13.3.3使用CURL調用API 534
13.3.4 HTTP頭部Content-Type設置536
13.3.5用戶認證結果的返回值536
13.3.6獲取主機信息(用Python實現的示例) 537
13.3.7添加主機(host.create) 540
13.3.8刪除主機(host.delete) 543
13.4第三方ZabbixAPI模塊544
13.5編寫命令行管理工具zbx-tool 547
4章安裝與部署的擴展549
14.1源碼安裝Zabbix-Server 549
14.1.1安裝依賴軟件包549
14.1.2安裝Zabbix-Server 549
14.1.3導入Zabbix數據庫550
14.1.4複製Zabbix啟動腳本551
14.1.5配置zabbix_server.conf 551
14.1.6複製前端代碼文件到apache目錄551
14.1.7配置PHP參數551
14.1.8配置Zabbix-Web 552
14.2源碼安裝Zabbix-Agent 552
14.3定制安裝包552
14.4使用RPMbuild定制RPM包553
14.5使用Elasticsearch作為數據庫557
14.5.1安裝Elasticsearch 557
14.5.2配置Elasticsearch 557
14.5.3啟動Elasticsearch 557
14.5.4初始化Elasticsearch數據558
14.5.5配置Zabbix-Server 565
14.5.6配置Zabbix-Web 566
14.5.7驗證數據配置566
5章分佈式監控項目實踐567
15.1監控系統項目概述567
15.2監控系統項目的背景568
15.3監控系統項目的步驟570
15.4監控系統項目的規劃――工作計劃570
15.5監控系統項目的啟動――需求調研572
15.6監控系統架構的設計――架構設計圖572
15.7監控系統項目的推進――軟硬件環境配置573
15.7.1安裝環境的硬件要求573
15.7.2安裝環境的軟件要求573
15.8監控系統項目的實施――安裝與部署574
15.8.1 MySQL數據庫主從庫的部署574
15.8.2 MySQL數據庫主庫的配置575
15.8.3 MySQL數據庫從庫的配置576
15.8.4 MySQL數據庫表分區與備份577
15.8.5 Zabbix-Server的高可用配置577
15.8.6 Zabbix前端管理界面的安裝580
15.8.7 Zabbix-Proxy的安裝與部署580
15.9監控功能的實現――配置與定制開發580
15.9.1業務組的劃分580
15.9.2創建用戶組581
15.9.3添加用戶581
15.9.4定制監控模板581
15.9.5自動發現的配置582
15.9.6配置告警與告警聚合582
15.10監控系統與其他系統的集成582
15.11監控系統項目的總結583
6章後記―探究監控系統584
16.1監控系統的使用場景584
16.2如何設置監控指標585
16.3如何度量設置告警指標586
16.4如何發送告警與處理告警風暴587
16.5告警輪班機制588
16.6 DevOps與監控588
16.6.1 DevOps概述588
16.6.2 DevOps實施的方式588
16.6.3 DevOps與監控的關係589
16.7 ITIL與監控589
16.7.1 ITIL概述589
16.7.2 ITIL服務設計――可用性管理591
16.7.3 ITIL服務設計――IT服務連續性管理591
16.7.4 ITIL服務設計――服務目錄管理592
16.7.5 ITIL服務設計――服務級別管理593
16.7.6 ITIL服務運營――事件管理594
16.7 .7 ITIL服務運營――事故管理596
16.7.8 ITIL服務運營――問題管理597
16.8參考資料598