目錄
一.Zabbix介紹
- zabbix是由Alexei Vladishev開發的一種網絡監視、管理系統,基於Server-Client架構。可以用於監視各種網絡服務、服務器和網絡機器等狀態。
- zabbix是一個基於web頁面的提供分佈式系統監視以及網絡監視功能的企業的開源解決方案。
- zabbix能夠監視各種網絡參數,保證服務器系統的安全運營;並且提供柔軟的通知機制讓系統管理員快速定位/解決存在的各種問題.
- zabbix的官網:https://www.zabbix.com/
二.Zabbix、Cacti、nagios比較
- cacti官網:https://www.cacti.net/
- cacti是一款數據採集,數據存儲,外加web界面展示的工具,它負責閾值範圍內的實時變化,但是對超過閾值的告警功能很薄弱。
優點:實時監控數據變化,以web頁面的方式呈現,更直接
缺點:告警不及時
-
nagios官網:https://www.nagios.org/
-
nagios是一款功能很強大的工具,他不關心閾值範圍內的變化,只關心狀態變化(超過閾值),然後報警。報警方式通過郵件、短信等。
優點:告警反映迅速
缺點:監控主機數量有限,承載低
-
zabbix=cacti + nagios
優點:基於兩款優點於一身並且更加強大,實現了企業分佈式監控。
缺點:2.2版本帶寬佔用大但是升級到2.4版本後節省了帶寬資源,其它再無發現,目前zabbix以更新到4.4
zabbix的主要功能:
監控cpu負荷、內存使用、磁盤使用、網絡狀況、端口監視、日誌監視
三.Zabbix架構中的組件
- zabbix由zabbix server(c語言開發)、可選組件zabbix agent(c語言開發)、zabbix-web(用於實現zabbix設定和展示,PHP開發)、zabbix-proxy(分佈式監控環境中的專用組件)、zabbix Database(提供數據存儲供,專用於存儲配置信息,以及採集到的數據)
- zabbix server可以通過SNMP、zabbix agent、ping、端口監視等方法提供對遠程服務器/網絡狀態的監視,數據收集等功能,它可以運行在Linux、Solaris、Free BSD、Open BSD。
- zabbix server可以單獨監視遠程服務器的服務狀態;同時也可以與zabbix agent配合使用,可以輪詢
- zabbix agent需要安裝在被監視的目標服務器上,它主要完成對硬件信息或者與操作系統有管的內存、cpu等信息收集。zabbix agent可以運行在Linux、windows、OS X等系統上。
- zabbix agent主動接受監視數據(trapping方式,同時還可被動接受zabbix agent發送的數據)
zabbix的主要特點:安裝配置簡單、支持多語言(包括中文)、免費開源、自動發現服務器與網絡設備、分佈式監視以及web集中管理功能、可以無agent監視、用戶安全認證和柔軟的授權方式、通過web界面設置或者查看監視結果、email等通知功能
-
zabbix-web中主要有5個主菜單欄:Monting、Lnventory、reports、configuration、adminstration每個主菜單欄下面又有多個二級菜單。
monitong:主要是對監控對象的一些相關展示,比如說對應用的展示。
Inventory:類似於公司裏的資產管理,比如一個硬件設備,這裏可能會標識設備的名稱,操作系統,mac地址,資產編號等
Reports:這裏主要展示了zabbix服務的狀態,比如主機數,報警數。還有就是展示了一些設備的可用性報表等相關信息。
Configuration:這裏主要用來對系統的配置,比如創建主機,創建報警,創建流量圖片等相關應用基本應用的配置主要通過這裏來實現。
Adminstration:這裏也是用了對系統進行配置,可configuration相比,這裏的配置主要實現對zabbix本身的一些相關配置工具,比如登錄zabbix的用戶的創建等工作主要通過這裏配置。
四.Zabbix的監控流程
zabbix監控系統的運行流程
- agentd需要安裝到被監控的主機上,它負責定期收集各項數據,並且發送到zabbix server端,zabbix server將數據存儲到數據庫中,zabbix根據數據在前端進行展示和繪圖。
- 這裏agentd收集數據分爲主動和被動兩種模式
主動:agent請求server獲取主動的監控項列表,並且主動將監控內需要檢測的數據提交給server/proxy
被動:server向agent請求獲取監控項的數據庫,agent返回數據。
主動監測通信過程如下
- zabbix首先向ServerActive配置的IP請求獲取Active items,獲取並且提交active tiems數據值server或者proxy。
- zabbix多久獲取一次active items呢?它會根據配置文件中refreshActivechecks的頻率,如果獲取失敗,那麼將在60秒之後重試。
- 獲取ACTIVE ITEMS列表
1.agent打開TCP連接(主動檢測變成agent打開)
2.agent請求ittems檢測列表
3.server返回ittems列表
4.agent處理響應
5.關閉TCP連接
6.agent開始收集數據
-
主動檢測提交數據過程如下
1.agent建立TCP連接
2.agent提交items列表收集的數據
3.Server處理數據,並且返回相應狀態
4.關閉TCP連接
被動監測通信過程如下
- Server打開一個tcp連接
- server發送請求agent.ping\n
- Agent接受到請求並且響應<HEADER><DATALEN>1
- Server 處理接受到的數據1
- 關閉TCP連接
這裏,被動模式每次都需要打開一個TCP連接,這樣當監控項越來越多時,就會出現server端口性能問題了。
那麼實際監控中使用主動還是被動的呢?這裏主要涉及兩個地方:
1.新建監控項目時,選擇的是zabbix代理還是zabbix端點代理程式(主動式),前者是被動模式,後者是主動模式。
2.agnetd配置文件中StartAgents參數的設置,如果爲0,表示禁止模式,否則開啓。一般建議不要設置爲0,因爲監控項目很多時,可以部分使用主動,部分使用被動模式。
五.Zabbix常用的監控架構平臺
server-agentd模式
- 這個屬於最簡單的架構,監控機和被監控機直接不經過任何代理,直接由zabbix server和zabbix agentd之間數據交互。適用於網絡比較簡單,設備比較少的監控環境
server-proxy-agentd模式
- proxy是server、client之間溝通的一個橋樑,proxy本身沒有前端,而且其本身並不存儲數據,只是將agentd發來的數據暫時存儲,而後再提交給server。該架構經常是和master-node-client架構做比較的架構,一般適用於跨機房、跨網絡的中型網絡架構監控
master-node-client模式
- 該架構是zabbix最複雜的監控架構,適用於跨網絡、跨機房、設備較多的大型環境。每個node同時也是一個server端,node下面可以接proxy,也可以直接接client。node有自己的配置文件和數據庫,其要做的是將配置信息和監控數據向master同步
六.Zabbix的邏輯架構
- 定義一個template模板,裏面包含items、trigger、graphs套用給host或者hostgroups。
- server監控項目items通過zabbix poller進程(可以有多個進程實現併發處理)包括snmp、agent協議收集被監控主機信息。
- 如果閾值超過triggers觸發器規定,就是形成一個events事件,然後actions處理動作(包括運行預先定製的腳本,不成功發送email或者SMS)。
- 在服務器升級的時候,提前設置maintence維護模式不對服務器產生告警通知
zabbix的監控範圍
硬件監控:zabbix IPMI interface
系統監控:zabbix Agent interface
java監控:zabbix JMX interface
網絡設備監控:zabbix SNMP interface
應用服務監控:zabbix agent UserParameter
MySQL數據庫監控:percona-monitoring-pldlgins
URL監控:zabbix web監控