第2章 Zabbix基礎架構
第2章 Zabbix基礎架構
前面已經(jīng)解釋了Zabbix是什么,包括Zabbix的組件、Zabbix可以實現(xiàn)的功能,以及一些Zabbix常識性的東西。接下來剖析一下Zabbix系統(tǒng)最核心的內容,即Zabbix的基礎架構,如圖2-1所示。
圖2-1
經(jīng)過這么多年的發(fā)展,Zabbix已經(jīng)有了一套非常成熟的架構體系。
在Zabbix的使用過程當中,我們通常會根據(jù)實際環(huán)境的網(wǎng)絡、監(jiān)控規(guī)模、監(jiān)控項數(shù)量等構建不同的架構,從架構圖(見圖2-1)當中可以看到,Zabbix主要提供的架構分為兩種模式。
(1)直連(Server-Client)模式。
(2)分布式(Server-Proxy-Client)模式。
從整個架構圖中不難看出,Zabbix整套架構采用模塊化機制,符合Linux系統(tǒng)的設計原則,是整個Zabbix架構運行的基礎。中間為Zabbix的主體部分,包括Zabbix frontend(前端)、Zabbix server(主服務程序)、Backend Databaes(后端數(shù)據(jù)庫);外圍4部分圍繞著整個主體進行工作,包括Zabbix agent(Zabbix采集客戶端)、Zabbix proxy(代理采集)、Agent Less(無客戶端采集),Visualization(可視化),Notification(告警通知),Zabbix API(Zabbix接口)。
2.1 可拆分的主體架構
如圖2-2所示,整個Zabbix主體部分是一個可拆分的模式,Zabbix frontend、Zabbix server、后端數(shù)據(jù)庫可以部署在同一臺物理服務器上,也可以分別部署在3臺物理服務器上。一般最常見的拆分部署模式是Zabbix frontend和Zabbix server部署在同一臺物理服務器上,后端數(shù)據(jù)庫單獨部署在一臺物理服務器上,這樣可以根據(jù)監(jiān)控規(guī)模和各模塊使用的性能負載情況規(guī)劃部署主體部分。
圖2-2
2.2 直連模式架構
直連模式架構是Zabbix最簡單的架構模式,如圖2-3所示,被監(jiān)控的主機與Zabbix不經(jīng)過任何Zabbix proxy,直接在Zabbix server與Zabbix agent之間進行數(shù)據(jù)交互,適用于網(wǎng)絡環(huán)境比較簡單、設備量比較少的監(jiān)控場景。
圖2-3
2.3 分布式架構
Zabbix原生提供了一種分布式解決方案:Zabbix server ←→Zabbix proxy(多個)←→Zabbix agent(或其他被監(jiān)控設備)。
Zabbix proxy可替代Zabbix server收集性能和可用性數(shù)據(jù),然后把數(shù)據(jù)傳送給Zabbix server,并在一定程度上分擔了Zabbix server的壓力。
分布式架構是目前最簡單、最有效的提升Zabbix整體性能的架構。
Zabbix proxy的用途如下。
(1)監(jiān)控遠程區(qū)域(不同機房)的設備。
Zabbix proxy適用的場景:公司有多個機房,其中的設備都處于不同的IP地址段,此時,在其中一個機房部署了一套Zabbix系統(tǒng)來監(jiān)控所有機房的設備,這將涉及網(wǎng)絡策略配置問題,如果A機房的Zabbix要監(jiān)控B機房的設備,則需要逐個開通網(wǎng)絡策略以保證雙方通信正常,這將相當煩瑣。
此時,Zabbix proxy就起到了非常大的作用,只需在各個機房都部署一個Zabbix proxy并與Zabbix server相連,由Zabbix proxy替代Zabbix server收集監(jiān)控數(shù)據(jù),同時只需開通Zabbix proxy與Zabbix server之間的網(wǎng)絡策略即可實現(xiàn)需求。
(2)監(jiān)控本地網(wǎng)絡不穩(wěn)定的區(qū)域。
場景同上,若B機房的網(wǎng)絡不穩(wěn)定,但因Zabbix server與Zabbix proxy不在同一機房,所以哪怕是B機房的網(wǎng)絡癱瘓,也不會影響整個Zabbix系統(tǒng)的監(jiān)控功能,Zabbix依然可以正常監(jiān)控其他區(qū)域的設備。
(3)當Zabbix壓力較大時,使用Zabbix proxy來減輕Zabbix server的壓力。
前面提到,Zabbix proxy可替代Zabbix server收集性能和可用性數(shù)據(jù),Zabbix proxy中含有大部分與Zabbix server相同的組件。
Pollers:用于被動模式監(jiān)控項抓取數(shù)據(jù)。
Trappers:用于捕獲主動模式監(jiān)控項上報的數(shù)據(jù)。
PollersUnreachable:用于處理不支持的監(jiān)控項。
Pingers:用于為主機提供ping監(jiān)控。
Discoverers:用于自動發(fā)現(xiàn)的組件。
另外,還有很多組件,這里就不一一列舉了。
對于Zabbix server和Zabbix proxy的配置文件,大部分組件的配置都是相同的,Zabbix server中用于主動(對于設備)收集數(shù)據(jù)、被動(對于設備)監(jiān)控的組件,Zabbix proxy中都會有,因此,Zabbix proxy可以替代Zabbix server完成監(jiān)控并收集數(shù)據(jù)的工作。
正因為Zabbix proxy可替代Zabbix server完成大部分的監(jiān)控工作,所以可以極大地減輕Zabbix server的壓力。
(4)降低分布式架構的運維成本。
相較于Zabbix server,Zabbix proxy的安裝相對簡單,無須配置Web組件,也不用配置告警等,因此降低了很多看不見的運維成本。
2.3.1 分布式組件
若要搭建分布式的Zabbix監(jiān)控系統(tǒng),需要以下組件。
(1)Apache/Nginx及PHP(用于前端顯示)。
(2)Zabbix server.
(3)Zabbix proxy.
(4)MySQL/MariaDB(推薦使用)。
搭建完成后,選擇“Administration”→“Proxies”→“Create proxy”選項,為Zabbix server連接Zabbix proxy,如圖2-4和圖2-5所示。
圖2-4
圖2-5
此處需要注意的是,“Proxy name”必須和Zabbix proxy配置文件中的“Hostname”保持一致。
在創(chuàng)建好Zabbix proxy后,等待幾分鐘就可以驗證Zabbix server與Zabbix proxy是否成功建立了連接,方法如下。
選擇“Administration”→“Proxies”選項,如果如圖2-6所示。
圖2-6
這里有一個較為敏感的數(shù)據(jù),就是“Last seen(age)”,即Zabbix proxy與Zabbix server最后通信的時間,一般數(shù)值為0~10s,將自動刷新。若一直顯示“Never”,則說明此Zabbix proxy未連接到Zabbix server。
以上就是Zabbix分布式架構中最重要的Zabbix proxy組件與Zabbix server的連接。
2.3.2 分布式架構圖
Zabbix分布式監(jiān)控系統(tǒng)的簡要架構如圖2-7所示。
圖2-7