1. 程式人生 > >zabbix實現原理及架構詳解

zabbix實現原理及架構詳解

收集 信息 核心 狀態 start 原理 整體架構 比較 zabbix

想要用好zabbix進行監控,那麽我們首要需要了解下zabbix這個軟件的實現原理及它的架構。建議多閱讀官方文檔。

一、總體上zabbix的整體架構如下圖所示:

技術分享

重要組件說明:

1)zabbix server:負責接收agent發送的報告信息的核心組件,所有配置、統計數據及操作數據都由它組織進行;

2)database storage:專用於存儲所有配置信息,以及由zabbix收集的數據;

3)web interface:zabbix的GUI接口;

4)proxy:可選組件,常用於監控節點很多的分布式環境中,代理server收集部分數據轉發到server,可以減輕server的壓力;

5)agent:部署在被監控的主機上,負責收集主機本地數據如cpu、內存、數據庫等數據發往server端或proxy端;

另外,zabbix server、proxy、agent都有自己的配置文件以及log文件,重要的參數需要在這裏配置,後面會詳細說明。

一個監控系統運行的大概的流程是這樣的:

agentd需要安裝到被監控的主機上,它負責定期收集各項數據,並發送到zabbix server端,zabbix server將數據存儲到數據庫中,zabbix web根據數據在前端進行展現和繪圖。這裏agentd收集數據分為主動和被動兩種模式:

主動:agent請求server獲取主動的監控項列表,並主動將監控項內需要檢測的數據提交給server/proxy

被動:server向agent請求獲取監控項的數據,agent返回數據。

【主動監測】通信過程如下:

zabbix首先向ServerActive配置的IP請求獲取active items,獲取並提交active tiems數據值server或者proxy。很多人會提出疑問:zabbix多久獲取一次active items?它會根據配置文件中的RefreshActiveChecks的頻率進行,如果獲取失敗,那麽將會在60秒之後重試。分兩個部分:

獲取ACTIVE ITEMS列表

  • Agent打開TCP連接(主動檢測變成Agent打開)
  • Agent請求items檢測列表
  • Server返回items列表
  • Agent 處理響應
  • 關閉TCP連接
  • Agent開始收集數據

主動檢測提交數據過程如下:

  • Agent建立TCP連接
  • Agent提交items列表收集的數據
  • Server處理數據,並返回響應狀態
  • 關閉TCP連接

【被動監測】通信過程如下:

  • Server打開一個TCP連接
  • Server發送請求agent.ping\n
  • Agent接收到請求並且響應<HEADER><DATALEN>1
  • Server處理接收到的數據1
  • 關閉TCP連接

這裏,有人可以看出來,被動模式每次都需要打開一個tcp連接,這樣當監控項越來越多時,就會出現server端性能問題了。

還有人會問,那實際監控中是用主動的還是被動的呢?這裏主要涉及兩個地方:

1、新建監控項目時,選擇的是zabbix代理還是zabbix端點代理程式(主動式),前者是被動模式,後者是主動模式。

2、agentd配置文件中StartAgents參數的設置,如果為0,表示禁止被動模式,否則開啟。一般建議不要設置為0,因為監控項目很多時,可以部分使用主動,部分使用被動模式。

二、常用的監控架構平臺

1、server-agentd模式:

這個是最簡單的架構了,常用於監控主機比較少的情況下。

2、server-proxy-agentd模式:

這個常用於比較多的機器,使用proxy進行分布式監控,有效的減輕server端的壓力。

zabbix實現原理及架構詳解