想要用好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端的壓力。