第1章 開篇——監控係統簡介 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 Simple check監控方式 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 SNMP MIB簡介 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 HTTP agent監控方式 369
8.9.1 HTTP agent監控概述 369
8.9.2 HTTP agent監控實例 369
8.9.3 HTTP agent監控配置 370
8.9.4 轉換HTTP agent獲取的數據結果 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 Dependent item監控方式 381
8.12 ODBC監控方式 381
8.12.1 安裝ODBC軟件包 381
8.12.2 查看ODBC配置 381
8.12.3 安裝MySQL ODBC驅動 382
8.12.4 使用ODBC驅動連接MySQL 382
8.12.5 配置Item 383
8.12.6 ODBC錯誤處理 385
8.12.7 安裝Oracle OBDC驅動 385
8.12.8 安裝PostgresSQL OBDC驅動 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
第10章 監控功能案例 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 監控SQL Server 475
10.15.1 SQL Server監控原理 475
10.15.2 SQL Server監控指標 475
10.15.3 SQL Server監控觸發器 476
10.15.4 SQL Server監控效果展示 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
第11章 監控數據可視化 482
11.1 Grafana 482
11.1.1 Grafana簡介 482
11.1.2 安裝Grafana 484
11.1.3 安裝並啓用Grafana Zabbix插件 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 Mac App的使用 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
第12章 監控性能優化 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
第13章 Zabbix API的使用 530
13.1 Zabbix API簡介 530
13.2 JSON-RPC 530
13.3 Zabbix API的使用流程 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 第三方Zabbix API模塊 544
13.5 編寫命令行管理工具zbx-tool 547
第14章 安裝與部署的擴展 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
第15章 分布式監控項目實踐 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
第16章 後記—探究監控係統 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
· · · · · · (
收起)