ZABBIX監控原理

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列表

  • 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端性能問題了。

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

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

二、agentd配置文件中StartAgents參數的設置,若是爲0,表示禁止被動模式,不然開啓。通常建議不要設置爲0,由於監控項目不少時,能夠部分使用主動,部分使用被動模式。

2、經常使用的監控架構平臺

一、server-agentd模式:

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

二、server-proxy-agentd模式:

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

相關文章
相關標籤/搜索