描述
◎ 第一本Zabbix完整說明手冊
◎ 完全掌握Zabbix監控系統的核心技術
本書重點
► 系統當機不用怕被老闆罵,造成損失前就修復好,只有Zabbix做得到
► 全面監控硬體、作業系統、網路、軟體、應用程式,一條龍式掌握整個平台的運作情況,全面提升網站健康度
本書特色
► 以Zabbix 4為基礎,對Zabbix的各項功能進行詳細而深入的講解
► 從Zabbix的架構、安裝、監控設定、自訂監控項、警告設定、警告指令稿等開始了解,進而學習Zabbix的觸發器使用以及內部原始程式實現進行,如IPMI、SNMP、JMX、ODBC等。
► 對自動化功能也有深入說明,如分散式監控系統,大量自訂指令稿的監控案例,還有自動發現(LLD)。
► 最後說明Zabbix效能最佳化,底層實現機制,效能瓶頸解析,以及如何解決,講解Zabbix API擴充Zabbix。
► 訂製RPM套件,原始程式建置安裝,使用Elasticsearch作為後端資料儲存,使用SaltStack自動化部署和設定,還有完整的實例建置企業級分散式監控系統。
適合讀者群 想了解、學習和規劃建置監控系統人員、想更深入了解Zabbix監控系統的讀者。
作者簡介
吳兆松
資深系統工程師,熟悉IT運維領域,對伺服器運行及DevOps平台的構思、設計、開發等都具有豐富的經驗,尤其是IT監控系統領域,是早期使用和研究Zabbix的先驅。
曾為多個大型企業建構Zabbix監控平台體系,從業經歷豐富,對系統營運、程式開發及產品都有深入的實務經驗,在業界有「監控專家」的美譽。
目錄
前言
01 開篇—監控系統簡介
1.1 監控系統的功能概述
1.2 監控系統的實現原理
1.3 監控系統的開放原始碼產品
02 Zabbix 簡介
2.1 Zabbix 的使用者群眾都有誰
2.2 使用Zabbix 需要具備什麼基礎
2.3 Zabbix 是一個什麼樣的產品
2.4 為何選擇Zabbix 作為監控系統
2.5 該選用Zabbix 的哪個版本
2.6 Zabbix 的架構是什麼樣的
2.7 Zabbix 的功能特性都有哪些
03 安裝與部署
3.1 安裝環境概述
3.2 Zabbix-Server 伺服器端的安裝
3.3 Zabbix-Agent 用戶端的安裝
3.4 SNMP 監控設定
3.5 在Windows 中安裝Zabbix-Agent
3.6 在其他平台安裝Zabbix-Agent
3.7 Zabbix-Get 的使用
3.8 Zabbix 相關術語(指令)
3.9 Zabbix-Server 對資料的儲存
3.10 高可用性和安全
3.11 Zabbix 資料庫備份
3.12 升級Zabbix
04 快速設定和使用
4.1 設定流程
4.2 增加主機組
4.3 增加範本
4.4 增加主機
4.5 設定圖形
4.6 設定大螢幕
4.7 設定幻燈片
4.8 設定地圖
4.9 使用IT 服務
4.10 使用報表
4.11 資產管理
4.12 圖形共用
4.13 全域搜索
4.14 最新資料
4.15 故障
4.16 資料的匯入/ 匯出
4.17 使用者許可權
4.18 偵錯模式
4.19 與LDAP 對接
4.20 維護模式
4.21 故障確認
4.22 批次更新
05 處理監控指標資料
5.1 增加新的監控項
5.2 監控指標的自訂
5.3 Zabbix 內建的監控方式
5.4 監控項指標資料的前置處理
5.5 設定巨集
5.6 設定值對映
06 精通警告設定
6.1 警告流程
6.2 警告觸發器的設定
6.3 警告處理的設定
6.4 郵件警告設定
6.5 自訂指令稿警告
6.6 郵件警告指令稿的設定
6.7 警告升級機制
6.8 觸發器標籤設定
6.9 手動關閉警告
6.10 如何取消警告發送
6.11 如何刪除故障資訊
6.12 警告聚合
6.13 警告設定故障排除
07 深入警告觸發器
7.1 Trigger 函數的意義
7.2 Trigger 函數的分類
7.3 Trigger 函數—比較與尋找
7.4 Trigger 函數—計算
7.5 Trigger 函數—時間
7.6 Trigger 函數—記錄檔
7.7 Trigger 函數—字串比對
7.8 Trigger 函數—趨勢預測
7.9 參考資料
08 剖析監控方式
8.1 Zabbix 支援的監控方式
8.2 Zabbix 監控方式的邏輯
8.3 Zabbix-Agent 的工作模式
8.4 Zabbix-Trapper(zabbix_sender)監控方式
8.5 SNMP 監控方式
8.6 SNMPTraps 監控方式
8.7 IPMI 監控方式本章歸納
8.8 JMX 監控方式
8.8.1 JMX 在Zabbix 中的執行流程
8.8.2 JMX 監控的安裝和設定
8.8.3 安裝Zabbix-Java-Gateway
8.8.4 設定Zabbix-Java-Gateway
8.8.5 檢視Zabbix-Java-Gateway記錄檔
8.8.6 監控Java 應用程式的方法
8.8.7 開啟Tomcat 的JMX
8.8.8 取得JMX 資料
8.8.9 JMX 資料的LLD
8.8.10 JMX 監控的核心技術實現
8.9 HTTP agent 監控方式
8.10 Web 監控方式
8.11 Dependent item 監控方式
8.12 ODBC 監控方式
8.13 其他監控方式
8.14 指令執行的監控方式
09 分散式監控與自動化
9.1 Zabbix-Proxy 分散式監控
9.2 監控的自動化功能
9.3 網路自動發現
9.4 主動方式的自動註冊功能
9.5 監控項自動發現功能
9.6 使用自動化工具SaltStack 批次部署Zabbix
10 監控功能案例
10.1 監控TCP 連接狀態
10.2 監控Nginx
10.3 監控PHP-FPM
10.4 監控MySQL
10.5 監控實體伺服器
10.6 監控實體機磁碟
10.7 監控Cisco 路由器
10.8 監控VMware
10.9 監控RabbitMQ
10.10 監控Elasticsearch
10.11 監控Kafka
10.12 監控Redis
10.13 監控Oracle 資料庫
10.14 監控WebLogic
10.15 監控SQL Server
10.16 監控HTTPS 憑證過期
11 監控資料視覺化
11.1 Grafana
11.2 Graphtrees
11.3 Google 瀏覽器警告外掛程式
11.4 Mac App 的使用
11.5 手機App 的使用
11.6 匯出即時監控資料
11.7 網路拓撲自動發現
11.8 監控資料視覺化的意義
11.9 歸納
12 監控效能最佳化
12.1 Zabbix 效能最佳化概述
12.2 Zabbix 效能最佳化依據
12.3 Zabbix 設定檔參數的最佳化
12.4 Zabbix 架構的最佳化
12.5 Item 的工作模式及Trigger 的最佳化
12.6 Zabbix 資料庫的最佳化
12.7 Zabbix 執行硬體的最佳化
12.8 Zabbix 壓力測試
12.9 Zabbix-Server 內部實現原理
12.10 Zabbix-Server 設定參數
12.11 Zabbix-Server 效能最佳化歸納
13 Zabbix API 的使用
13.1 Zabbix API 簡介
13.2 JSON-RPC
13.3 Zabbix API 的使用流程
13.4 協力廠商Zabbix API 模組
13.5 撰寫命令列管理工具zbx-tool
14 安裝與部署的擴充
14.1 原始程式安裝Zabbix-Server
14.2 原始程式安裝Zabbix-Agent
14.3 訂製安裝套件
14.4 使用RPMbuild 訂製RPM 套件
14.5 使用Elasticsearch 作為資料庫
15 分散式監控專案實作
15.1 監控系統專案概述
15.2 監控系統專案的背景
15.3 監控系統專案的步驟
15.4 監控系統專案的規劃—工作計畫
15.5 監控系統專案的啟動—需求研究
15.6 監控系統架構的設計—架構設計圖
15.7 監控系統專案的推進—軟硬體環境設定
15.8 監控系統專案的實施—安裝與部署
15.9 監控功能的實現—設定與訂製開發
15.10 監控系統與其他系統的整合
15.11 監控系統專案的歸納
16 後記—深入監控系統
16.1 監控系統的使用場景
16.2 如何設定監控指標
16.3 如何度量設定警告指標
16.4 如何發送警告與處理警告風暴
16.5 警告輪班機制
16.6 DevOps 與監控
16.7 ITIL 與監控
序
前言
✤ 本書由來
「運籌帷幄之中,決勝千里之外。」在IT 運行維護中,監控佔據注重要的地位,按比例來算,說佔30% 一點也不為過。對IT 運行維護工程師來說,建置一個真正可用的監控警告系統是一項艱鉅的工作。在監控系統的開放原始碼軟體中,可供選擇的工具很多,然而真正符合需求,能夠真正解決業務問題的監控系統軟體卻鳳毛麟角。
筆者在自己運行維護從業生涯中用過的監控系統有Cacti、Nagios 等,以及筆者公司開發的監控警告系統,直到接觸Zabbix,才發現這個靈活而強大的自動化監控工具正是筆者所尋找的。隨著近年來雲端運算、容器技術的大規模普及,軟體架構已經從單體架構走向微服務架構,對監控的靈活性和可用性的要求越來越高,出現更多有趣的監控軟體,如Prometheus、Influx 家族,這些監控軟體解決了在目前環境中面臨的一些問題,提供非常優秀的監控解決方案,但這並不妨礙Zabbix 的繼續流行。從2012 年開始, Zabbix 的使用者群眾在逐步擴大,目前Zabbix 已經成為運行維護人員必須掌握的技能之一。究其原因,得益於Zabbix 靈活的架構設計、極強的擴充能力、豐富的監控能力、易於與外部整合的能力,從硬體監控,到作業系統,再到服務處理程序,以及網路裝置,其無所不能的監控功能令人歎為觀止,相信這也是大多數Zabbix 同好選擇它的主要原因。
當然,在Zabbix 的使用過程中,會面臨上手容易、精通較難的問題,原因在於Zabbix 過於靈活,其設定的粒度度非常細緻,這也會讓大多數使用者剛接觸學習它的時候一頭霧水,所以檢視官方文件和閱讀一本相關書籍的學習方式都是明智的選擇。
筆者從2012 年開始使用Zabbix,曾公開自己的使用文件,很高興文件對不少初學Zabbix 的朋友有所幫助,但隨著向筆者諮詢問題的人數增多,其中多數問題是重複的,且筆者解答問題的精力有限,於是萌生出書的想法, 2018 年,Zabbix 4.0 版本正式發佈,筆者對書籍內容進行了大幅度的重構,並對書籍的內容和深度進行了擴充,讓本書可以真正成為Zabbix 使用者的案頭首選參考書。本書得以出版,付睿編輯功不可沒,在2016—2017 年的時候,她一直催促筆者撰寫內容。由於筆者當時是被動撰寫的,並沒有想好撰寫什麼內容,並且筆者基於原有版本做了一些更動,但內容無法令自己滿意,於是就沒有繼續下去,當時Zabbix 是3.0 版本。直到2018 年,筆者覺得是時候發表新的內容了。
✤ 如何閱讀本書
本書共分3 部分內容,筆者按照從零基礎開始學習的路線進行章節編排,從易到難逐步深入,直到讀者深入掌握,並且本書對相關的內容和思維進行了擴充,讓讀者學習到的不僅是Zabbix,而且是一個監控系統。
第1 部分為基礎部分,包含第1~6 章。首先介紹監控系統的原理,讓初次接觸監控的讀者了解監控系統的組成部分,從巨觀上認識監控系統。接下來說明Zabbix 的架構、Zabbix 的安裝、監控設定、自訂監控項、警告設定、警告指令稿等功能。這部分內容適合從零基礎開始系統地學習Zabbix 監控系統,對稍有經驗的使用者來說,重點掌握Zabbix 對資料儲存的處理(第3 章),以及第5章和第6 章的內容。
第2 部分為中級部分,包含第7~11 章。首先對Zabbix 的觸發器使用以及內部原始程式實現進行了深入說明,對Zabbix 的多種監控方式進行了詳述(如IPMI、SNMP、JMX、ODBC 等)。接著,對自動化功能進行了深入說明,介紹了分散式監控系統,配有大量自訂指令稿的監控案例,並對監控項自動發現(LLD)功能進行了深入說明,其後對Zabbix 的資料視覺化方案和擴充實現進行了研究,適合對Zabbix 有一定基礎的讀者深入學習。透過對這部分內容的學習,讀者將深入了解Zabbix 的整體功能。
第3 部分為進階部分,包含第12~16 章。首先介紹Zabbix 的效能最佳化,從底層實現機制說明,進一步了解Zabbix 在使用過程中遇到效能瓶頸的問題,以及如何解決這些問題,並讓讀者學會使用Zabbix API 來擴充Zabbix,進一步為建置運行維護平台提供了更多的擴充性。同時,這部分也說明如何自訂RPM套件,原始程式建置安裝,使用Elasticsearch 作為後端資料儲存,以及如何使用SaltStack 來自動化部署和設定,透過一個實例來說明如何建置企業級分散式監控系統。最後一章,探討監控系統的整體實現與使用場景,與DevOps、ITIL 的整合使用,以及警告輪班等深度場景,讓讀者在更豐富的場景中使用Zabbix,並了解IT 運行維護中的關鍵思想,將監控用於更廣泛的場景,適合對Zabbix 非常熟悉的讀者進行深入應用。透過對這部分內容的學習,讀者能夠深入了解Zabbix,並從更多的角度考慮監控問題。
✤ 書附程式
書中的相關程式,可至本公司官網https://deepmind.com.tw/ 下載。本書作者為中國大陸人士,其在github 上會不時更新程式碼,可以到GitHub 上,網址為https://github.com/zabbix-book/zabbix_v2.git,讀者可以取得最新的程式碼並在生產環境中直接使用相關程式。
✤ 適合讀者群
■ Linux 系統管理員 ■ 運行維護監控系統工程師
■ 系統運行維護工程師 ■ 監控系統軟體開發(設計)人員
■ 運行維護開發工程師 ■ IT 管理人員
■系統整合商 ■ 架構設計人員
✤ 勘誤支援
儘管筆者和編輯都努力地對書稿進行再三校對,但因筆者個人功力和時間所限,書中可能存在少許的錯誤或不妥之處,如讀者遇到,還懇請批評、指正。讀者若有任何寶貴的意見或建議,可以發送郵件至zabbix_v2@itnihao.com,筆者將儘快給予回覆解答。v
✤ 內容宣告
本書採用的Zabbix 為4.0 版本,隨著Zabbix 版本的更新,本書說明的大部分使用功能與新版本相比會稍有不同。本書採用的作業系統以Linux(CentOS 7)、Windows 為主,對其他版本的作業系統並未做過多說明。本書能保障對Zabbix幾乎96% 以上的功能都有詳細說明,但少許筆者認為不重要的內容並未說明(也許對部分讀者來說卻非常重要),如有關加密憑證傳輸資料的內容,讀者可參考官方文件。本書在撰寫過程中,參考大量官方文件和社群的內容,書中都列出了相關連結。
本書並不能完全代替Zabbix 的官方文件,讀者在讀完本書後,建議也閱讀Zabbix 的官方文件,因為在官方文件中還有更多的細節值得去研究,如將兩者結合,效果會更好。