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啟動后都有那些進程?