zabbix實現原理及架構詳解


zabbix是完全開源的工具,整合了cacti和nagios等特性。

zabbix功能很強大,如何理解zabbix的功能,我們可以和cacti、nagios的功能對比一下:

  • cacti是一款數據采集,數據存儲,外加web界面展示的工具,它負責閾值范圍內的實時變化,但是對超過閾值的告警功能很薄弱

    • 優點:實時監控數據變化,以web頁面的方式呈現,更直觀。

    • 缺點:告警不及時

  • nagios是一款告警功能很強大的工具,它不關心閾值范圍內的變化,只關心狀態變化(超過閾值),然后報警。報警方式通過郵件,短信等。

    • 優點:告警反映迅速。

    • 缺點:監控主機數量有限,承載低

  • zabbix    =   cacti   +  nagios

    • 優點:基於兩款工具優點於一身並更強大,實現企業級分布式監控。

    • 缺點:2.2版本帶寬占用大但是升級到2.4版本后更節省了帶寬資源,其它再無發現。

 

zabbix監控功能的實現

監控主機zabbix有專用的agent,可以監控Linux,Windows等 
監控網絡設備zabbix通過SNMP,ssh(不多用) 
 可監控對象

    • 設備:服務器,路由器,交換機

    • 軟件:OS,網絡,應用程序

    • 主機性能指標監控

    • 故障監控: down機,服務不可用,主機不可達

 

支持數據庫存儲類型

abbix-database: MySQL, PGSQL(postgreSQL)、Oracle、DB2、SQLite

 

Zabbix架構中的組件

zabbix-server: C語言 
zabbix-agent: C語言 
zabbix-web:GUI,用於實現zabbix設定和展示,PHP開發 
zabbix-proxy: 分布式監控環境中的專用組件

 

監控流程

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

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邏輯架構

  • 定義一個template模板,里面包括多個items,trigger,graphs套用給host或者hostgroups。

  • server監控項目items通過zabbix poller進程(可以有多個進程實現並發處理)包括snmp,agent協議收集被監控主機信息。

  • 如果閾值超過triggers觸發器規定,就是形成一個events事件,然后actions處理動作(包括運行預先定制的腳本,不成功發送email或SMS)。

  • 在服務器升級的時候提前設定maintenance維護模式不對服務器產生告警通知。 
    通過邏輯拓撲圖展示工作流程

Zabbix Server啟動后都有那些進程?

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM