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