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