zabbix實現原理及架構詳解html
想要用好zabbix進行監控,那麼咱們首要須要瞭解下zabbix這個軟件的實現原理及它的架構。建議多閱讀官方文檔。前端
1、整體上zabbix的總體架構以下圖所示:mysql
重要組件說明:web
1)zabbix server:負責接收agent發送的報告信息的核心組件,全部配置、統計數據及操做數據都由它組織進行;sql
2)database storage:專用於存儲全部配置信息,以及由zabbix收集的數據;數據庫
3)web interface:zabbix的GUI接口;架構
4)proxy:可選組件,經常使用於監控節點不少的分佈式環境中,代理server收集部分數據轉發到server,能夠減輕server的壓力;併發
5)agent:部署在被監控的主機上,負責收集主機本地數據如cpu、內存、數據庫等數據發往server端或proxy端;tcp
另外,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列表
主動檢測提交數據過程以下:
【被動監測】通訊過程以下:
這裏,有人能夠看出來,被動模式每次都須要打開一個tcp鏈接,這樣當監控項愈來愈多時,就會出現server端性能問題了。
還有人會問,那實際監控中是用主動的仍是被動的呢?這裏主要涉及兩個地方:
一、新建監控項目時,選擇的是zabbix代理仍是zabbix端點代理程式(主動式),前者是被動模式,後者是主動模式。
二、agentd配置文件中StartAgents參數的設置,若是爲0,表示禁止被動模式,不然開啓。通常建議不要設置爲0,由於監控項目不少時,能夠部分使用主動,部分使用被動模式。
2、經常使用的監控架構平臺
一、server-agentd模式:
這個是最簡單的架構了,經常使用於監控主機比較少的狀況下。
二、server-proxy-agentd模式:
這個經常使用於比較多的機器,使用proxy進行分佈式監控,有效的減輕server端的壓力。