Zabbix監控系統深度實踐(第2版)

Zabbix監控系統深度實踐(第2版)

《Zabbix監控系統深度實踐(第2版)》,作者姚仁捷,由電子工業出版社出版。

內容提要

《Zabbix監控系統深度實踐(第2版)》由淺入深,全面講解Zabbix套用與原理,是作者多年實戰經驗的總結和濃縮。在概念篇,從一個簡單但完整的入門案例講起,案例中有最基本的概念介紹,通過案例幫助那些只需將伺服器加入監控,就能看到監控數據的讀者;然後逐步深入,在進階篇介紹Zabbix的各方面的配置;在設計篇中對Zabbix的內部原理進行深入剖析,包括Zabbix與資料庫的互動、Zabbix資料庫表的設計等,並分享作者在Zabbix上踩過的坑以及解決問題的思路;最後會在開源部分介紹58同城開源的Zatree和Chrome的外掛程式、手機客戶端等工具。

《Zabbix監控系統深度實踐(第2版)》從工作中的實際需求出發,以實際案例作為指引,希望對於讀者而言,不僅僅是學會某些具體的操作,而是深入了解Zabbix 的設計思路,掌握解決問題的方法。

《Zabbix監控系統深度實踐(第2版)》適合想使用Zabbix構建監控系統的技術人員閱讀,也適合有一定基礎、對於Zabbix有更高的要求的讀者。

目錄

第 1 章 自動化運維和監控系統 2

1.1 網際網路公司的運維工作 2

1.2 何謂自動化運維 3

1.3 監控系統在運維自動化中的角色5

1.4 監控系統的理想化模樣5

第 2 章 Zabbix簡介 7

2.1 Zabbix發展現狀 7

2.2 選擇Zabbix的理由 8

2.3 Zabbix部分名詞約定 9

第 3 章 Zabbix安裝 11

3.1 獲取Zabbix 11

3.2 Zabbix Server安裝 12

3.2.1 Zabbix資料庫配置 12

3.2.2 安裝Zabbix Server 13

3.2.3 安裝Zabbix Web前端 16

3.3 Zabbix Agent安裝18

3.3.1 UNIX/Linux上安裝Zabbix Agent 18

3.3.2 Windows上安裝Zabbix Agent 18

3.4 測試Zabbix Agent和Zabbix Server運行 20

3.5 配置檔案詳解20

3.5.1 zabbix_server.conf 20

3.5.2 zabbix_agentd.conf 24

第 4 章 監控第一台Host 26

4.1 Host在監控系統中的活動 26

4.2 添加一個用戶27

4.3 把伺服器加入Zabbix監控 27

4.4 添加Item28

4.5 添加Trigger29

4.6 設定Action31

4.7 收到第一封報警郵件33

4.8 Zabbix 報警流程33

4.9 看,Zabbix在工作呢34

4.9.1 全局搜尋框35

4.9.2 查看監控數據35

4.9.3 查看報警信息36

4.10 添加自定義監控點 37

第二部分 配置篇

第 5 章 增加監控 40

5.1 Host配置 41

5.2 Item屬性 45

5.3 Item類型 48

5.3.1 Zabbix Agent類型 48

5.3.2 SNMP類型 51

5.3.3 IPMI類型 52

5.3.4 日誌檔案監控 53

5.3.5 計算型Item 54

5.3.6 Zabbix內部監控 55

5.3.7 ssh類型Item 58

5.3.8 Telnet類型Item 60

5.3.9 External Check類型Item 60

5.3.10 Aggregate類型Item 60

5.3.11 Trapper類型Item 62

5.3.12 JMX類型Item 62

5.3.13 ODBC類型Item 64

5.4 Item歷史數據History和Trends66

5.5 使用Application對Item分組67

5.6 Item Key詳解68

5.7 Template模板69

5.7.1 新建和配置一個Template 69

5.7.2 建立/取消Host和Template的關聯 71

5.7.3 修改Template 73

5.7.4 Template和Host 73

5.7.5 Template之間的父子關係 74

5.8 Clone、Full Clone和Mass Update 75

5.9 Windows監控 76

5.10 VMware監控 82

5.11 Zabbix監控性能84

第 6 章 報警配置 86

6.1 Triggers86

6.1.1 配置Triggers 86

6.1.2 Trigger expression 87

6.1.3 Function詳解 89

6.1.4 Trigger依賴 92

6.1.5 Trigger等級 94

6.1.6 單位 95

6.2 Events 95

6.3 Actions 96

6.3.1 Action 97

6.3.2 Operation 99

6.3.3 Condition 104

6.3.4 Escalations 107

6.3.5 Unsupported狀態的Items的報警 110

6.4 Media類型 111

6.5 Maintenance狀態 116

第 7 章 數據可視化 118

7.1 Graph 118

7.2 Network Maps 123

7.2.1 新建Maps 123

7.2.2 創建元素 124

7.2.3 選擇元素 126

7.2.4 關聯元素 126

7.2.5 關聯指示器 126

7.3 Screens 127

7.4 Slide shows 131

第 8 章 Users和Macros 133

8.1 User和User group 133

8.1.1 配置User 133

8.1.2 User group 135

8.2 Macros 136

8.2.1 自帶宏 136

8.2.2 用戶自定義宏 137

8.2.3 自定義宏的適用範圍 139

第 9 章 IT services服務監控與Web monitoring網路監控 140

9.1 Services服務監控 140

9.2 服務配置 141

9.3 Web monitoring網路監控配置 145

9.4 監控百度示例 148

第 10 章 Zabbix前端界面 151

10.1 Monitoring板塊 151

10.1.1 Dashboard欄目 151

10.1.2 Overview欄目 157

10.1.3 Web欄目 158

10.1.4 Latest data欄目 159

10.1.5 Triggers欄目 159

10.1.6 Events欄目 160

10.1.7 Graphs⪼reens⤅s欄目 161

10.2 Inventory板塊 161

10.3 Reports板塊 161

10.4 Configuration板塊 166

10.4.1 Host groups欄目 166

10.4.2 Template欄目 167

10.4.3 Hosts欄目 168

10.4.4 Maintenance欄目 170

10.4.5 其他 170

10.5 Administration板塊 171

10.5.1 General欄目 171

10.5.2 DM欄目 177

10.5.3 Authentication欄目 178

10.5.4 Users欄目 179

10.5.5 Media types欄目 181

10.5.6 Scripts欄目 181

10.5.7 Audit欄目 185

10.5.8 Queue欄目 186

10.5.9 Notification欄目 186

10.5.10 Installation欄目 187

10.6 前端配置 187

10.6.1 全局配置參數 187

10.6.2 前端維護狀態顯示 189

10.6.3 Profile設定 190

10.7 全局搜尋框 192

第 11 章 Discovery 193

11.1 基於網路的Discovery 193

11.2 Discovery的一個例子 195

11.3 Discovery Rule和Discovery Action的配置 196

11.4 存活Agent自動加入監控 199

11.5 low-level discovery 200

第三部分 進階篇

第 12 章 Zabbix API 206

12.1 Zabbix API POST參數 206

12.2 Item支持的Zabbix API方法 207

12.2.1 Item object 208

12.2.2 item.create 209

12.2.3 item.delete 210

12.2.4 item.exists 210

12.2.5 item.get 211

12.2.6 item.getobjects 214

12.2.7 item.isreadable/item.iswritable 215

12.2.8 item.update 215

12.3 如何閱讀Zabbix API文檔 216

第 13 章 Zabbix分散式監控 217

13.1 兩種分散式架構對比 217

13.2 Proxy單級分散式架構 218

13.3 Proxy配置 219

13.4 Node多級分散式架構 220

第 14 章 Zabbix系統最佳化 227

14.1 Zabbix內部運行機制 227

14.2 Items過多造成性能下降 228

14.3 資料庫及其他調優 232

第 15 章 輕量級日誌監控套用 233

15.1 準備工作 233

15.2 添加 Item 234

15.3 測試 234

15.4 配置報警 236

15.5 輪轉的日誌檔案 237

15.6 獲取關鍵字 238

第四部分 設計篇

第 16 章 Zabbix資料庫表結構解析 240

16.1 表結構概述 240

16.2 Hosts表 241

16.3 Items表 244

16.4 Trigger在資料庫中的結構 248

16.5 Events表 253

16.6 Triggers和Events生成的規則 255

第 17 章 History和Trends 256

17.1 sync欄位的含義 257

17.2 history和trends的區別 261

17.3 housekeeper和trends表 262

17.4 Graph對於history和trends的選擇 263

第 18 章 Zabbix和資料庫互動詳解 268

18.1 include/zbxdb.h 268

18.2 zbxdb/db.c 270

18.3 zbxdbhigh 271

第 19 章 Zabbix 2.2新功能介紹 274

19.1 資料庫自動升級 274

19.1.1 檢查資料庫版本 274

19.1.2 mandatory和optional欄位 275

19.1.3 資料庫升級過程 277

19.1.4 前端提示 278

19.2 Web監控 279

19.2.1 Web監控Template化 279

19.2.2 Web監控重試機制 279

19.2.3 使用HTTP代理 280

19.2.4 URL監控中使用頁面內容作為變數 281

19.3 數據映射 282

19.4 history和trends存儲的代碼分析 282

19.4.1 DCsync_history 283

19.4.2 DCsync_trends 285

19.4.3 整個流程 285

19.5 網頁字元串匹配 286

19.6 日誌檔案監控 287

19.7 Latest Data局部刷新 288

19.8 動態載入模組 288

19.9 SNMP監控改進 292

19.9.1 SNMPv3相關的增強 292

19.8.2 SNMP重試和逾時機制改進 293

19.9.3 lld的複雜OIDs 293

第 20 章 Zabbix內置監控項實現 294

20.1 system.hostname 294

20.2 system.cpu.load 295

第五部分 社區和開源

第 21 章 典型案例分析 300

21.1 前端顯示Zabbix server停止工作問題 300

21.2 Item設定了但沒有數據 306

21.2.1 看頁面是否有報錯 306

21.2.2 Zabbix Server和Zabbix Agent的網路是否互通 307

21.2.3 zabbix_get是否能夠獲取到數據 308

21.2.4 總結 308

21.3 一個掃描history全表的SQL問題 309

21.4 解決問題的思路 319

第 22 章 Zabbix代碼問題和解決 320

22.1 Duplicated Host問題 320

22.2 拼接大SQL問題 322

22.3 nextid問題 323

22.4 在Zabbix中列印日誌 325

第 23 章 PPTV的Zabbix監控體系 326

23.1 Python Zabbix API 326

23.2 Spider——伺服器添加Zabbix監控 328

23.3 Event Console 330

23.4 Rule Engine 330

23.5 報警系統架構 331

第 24 章 Zatree 332

24.1 使用Zatree 332

24.2 Zabbix二次開發和重新開發監控系統的選擇 334

第 25 章 Zabbix第三方外掛程式 337

25.1 Chromix 337

25.2 Zabbix Notifier 338

25.3 手機端Zabbix App 339

25.3.1 ZBX Mobile 339

25.3.2 Zabbkit 341

第 26 章 微信公眾平台報警 344

26.1 申請微信公眾平台賬號 344

26.2 配置微信公眾平台賬號 345

26.2.1 使用SAE進行測試開發 347

26.2.2 申請測試賬號 348

26.2.3 獲取access_token 348

26.2.4 獲取用戶的openid 349

26.2.5 傳送第一條文字訊息 349

26.3 微信接口請求次數限制 350

第 27 章 社區論壇 351

附錄 Zabbix自帶宏 353

後記 355

程式設計師職業生涯的一些感悟 356

前言

本書的由來

我從職業生涯開始至今,就一直在和監控系統打交道。

我最早在eBay 容量規劃小組工作,使用監控系統查看伺服器狀態及網站運營指標;後來到PPTV 運維部,通過監控系統的數據了解上線發布的結果和網站的健康程度等情況;現在到了唯品會,我們的監控系統能夠從業務、技術兩個維度考察當前公司網站的運作情況。

在有監控系統之前,工程師需要到伺服器上去敲命令來獲取系統數據;為了分析問題,可能還需要將數據複製到本地計算機的Excel 里進行畫圖;最要命的是,在出現問題的時候無法知道,只有在用戶報障後才能察覺。這是多么駭人聽聞的場景!

而當我們有了一個好的監控系統後,這些問題就迎刃而解了。我們可以在一個界面中瀏覽整個機房的伺服器狀態、可以在Web 前端方便地查看監控數據、可以回溯尋找事故發生時系統的問題和報警情況。現在,我們的工程師們已經可以一邊悠閒地喝著咖啡一邊分析問題了。

監控系統是整個運維自動化體系中非常重要的環節。從伺服器上架到最後被回收重用,都有監控系統的身影。伺服器上架時,它需要添加監控;在伺服器工作過程中,監控系統要時刻注意伺服器的健康,並且在伺服器出現異常時,要發出報警通知對應的人員;在伺服器被回收時,監控系統要取消伺服器的監控。這些都需要監控系統擁有API,能夠方便地跟外部其他系統一起工作,把自己的工作自動化起來。

國內的網際網路巨頭們,可以自行開發一套監控系統。而對於絕大多數企業來說,開源的Zabbix 是非常棒的選擇。它能夠非常好地實現以上這些需求。可以說,目前Zabbix 是最熱門的開源監控系統。

本書的內容結構

從周圍的QQ 群、論壇等地方,我發現大家對於Zabbix 的學習都是非常零散的,缺少一個系統的學習過程和解決問題的正確思路。在這本書的前面,我會先向大家介紹一個最簡單的入門案例,案例中有最基本的概念介紹,通過案例幫助那些只需將伺服器加入監控,並且看到監控數據的讀者。後面深入一些,會介紹Zabbix 的方方面面的配置,適合打算使用Zabbix 高級功能的讀者。在接下來的部分,會深入剖析Zabbix 的內部原理,包括Zabbix 與資料庫的互動、Zabbix 資料庫表的設計等我在Zabbix 上踩過的坑以及解決問題的思路。希望能授之以漁。在本書的最後部分,主要介紹Zabbix 在開源方面的進展,最主要的就是58 同城開源的Zatree,以及Chrome 的外掛程式和手機客戶端。

本書會從我們工作中的實際需求出發,介紹Zabbix 的使用方法和其配置管理。在這些內容之後,會有深入一些的對於Zabbix 實現的講解,希望對於讀者而言,不僅僅是學會某些具體的操作,而是深入了解Zabbix 的設計思路,掌握解決問題的方法。

相關詞條

熱門詞條

聯絡我們