1)cacti:存儲數據能力強,報警性能差
2)nagios:報警性能差,存儲數據僅有簡單的一段能夠判斷是否在合理範圍內的數據長度,儲存在內存中。好比,連續採樣數據存儲,有連續三次不在合理範圍內的數據就報警
3)zabbix:結合上面兩種工具的優勢,又能夠存儲數據,又能夠報警。前端
Zabbix是一個企業級的、開源的、分佈式監控解決方案。php
1、Linux下開源監控系統簡單介紹html
1)cacti:存儲數據能力強,報警性能差
2)nagios:報警性能差,存儲數據僅有簡單的一段能夠判斷是否在合理範圍內的數據長度,儲存在內存中。好比,連續採樣數據存儲,有連續三次不在合理範圍內的數據就報警
3)zabbix:結合上面兩種工具的優勢,又能夠存儲數據,又能夠報警。前端
2、zabbix特性
1)數據採樣:經過snmp、ssh、telnet、agent、ipmi、jmx等通道採集被監控主機的數據。能夠自定義檢測機制和自定義時間間隔
2)實時繪圖:展現,讀取數據繪圖,支持graph,map,screen,幻燈片(slide show)
3)告警:(升級告警,規定時間內內解決不了的事情往上傳)
4)數據存儲:數據庫有mysql,pgsql,時間序列數據庫等等java
3、程序構成node
zabbix的組件及進程mysql
重要組件:linux
Zabbix由如下幾個組件部分構成:ios
zabbix server:負責接收agent發送的報告信息的核心組件,全部配置,統計數據及操做數據均由其組織進行nginx
database storage:專用於存儲全部配置信息,以及由zabbix收集的數據web
web interface:zabbix的GUI接口,一般與server運行在同一臺主機上
proxy:可選組件,經常使用於分佈式監控環境中,代理server收集部分被監控端的監控數據並贊成發往server端
agent:部署在被監控主機上,負責收集本地數據併發往server端或proxy端
常見進程
默認狀況下zabbix包含5個進程:zabbix_agentd、zabbix_get、zabbix_proxy、zabbix_sender、zabbix_server,另一個zabbix_java_gataway是可選的,這個須要另外安裝。
Zabbix_agentd:客戶端守護進程,此進程收集客戶端數據,例如cpu負載、內存、磁盤使用狀況等。
Zabbix_get:zabbix工具,單獨使用的命令,一般在server或者proxy端執行獲取遠程客戶端信息的命令。一般用來排錯。例如在server端獲取不到客戶端的內存數據,可使用zabbix_get獲取客戶端內存的方式來作故障排查。
Zabbix_sender:zabbix工具,用於發送數據給server或者proxy,一般用於耗時比較長的檢查。不少檢查很是耗時,致使zabbix超時。因而咱們在腳本執行完畢以後,使用sender主動提交數據。
Zabbix_java_gataway:zabbix2.0以後引入的一個功能,顧名思義:java網關,相似agentd,可是隻用於java方面。須要特別注意的是,它只能主動取獲取數據,而不能被動獲取數據。它的數據最終會給到server或者proxy
Zabbix_database:MySQL或PostgreSQL
Zabbix的監控流程能夠簡單描述爲:
數據採集-->數據存儲-->數據分析-->數據展現-->監控報警
其中:
數據採集:Zabbix經過SNMP、Agent、ICMP、SSH、IPMI等進行數據採集
數據存儲:Zabbix存儲在MySQL上,也能夠存儲在其餘數據庫
數據展現:web界面展現、(移動APP、java_php開發一個web界面也能夠)
數據報警:郵件報警、微信報警、短信報警、報警升級機制
Zabbix的監控配置流程能夠簡單描述爲:
告警是由一系列的流程組成,首先是觸發器達到閥值,產生一個事件,接下來由Action對事件信息進行處理,其中包括兩部分:
第一部分是發送消息,即將告警信息發送給用戶。
第二部分是執行命令,即將事件用命令進行處理,達到對事件故障自動嘗試恢復的效果。
Host groups(主機組)-->Hosts(主機)-->template(模板)-->Applications(監控項組)-->Items(監控項)-->graph(圖形) -->screen (圖形分組)-->Triggers(觸發器)-->Event(事件)-->Actions(處理動做)-->Media types(告警升級|1.執行遠程命令2.發送告警郵件)-->User groups(用戶組)-->Users(用戶)-->Medias(告警郵件)
在實際生產使用的時候,Items、Trigger、Graph採用模板來進行監控,模板特色就是能夠重複的事情一次完成,修改了模板等於修改了全部調用此模板的主機,這樣可解放運維的雙手.
Graph不是必需的,由於沒有配置圖形,數據獲取並不影響,獲取數據是Items的功能。可是對於使用ZabbixWeb界面用戶來講,沒有圖形等於沒有數據,所以重要的Items必須添加必要的圖形以作可視化展現。若是想集中查看圖形,能夠經過screen功能。
4、zabbix主動模式和被動模式
一個監控系統運行的大概流程是這樣的:
Zabbix agent須要安裝到被監控的主機上,它負責按期收集各項數據,併發送到zabbix server端,zabbix server將數據存儲到數據庫中,zabbix web根據數據在前端進行展示和繪圖。
這裏agent收集數據分爲主動和被動兩種模式:
主動:agent請求server獲取主動的監控項列表,並主動將監控項內須要檢測的數據提交給server/proxy
被動:server向agent請求獲取監控項的數據,agent返回數據
zabbix使用proxy代理插件的好處:
一方面能夠監控不可達的遠程區域;
另外一方面當監控項目數以萬計的時候使用代理能夠有效分擔zabbix server壓力,也簡化分佈式監控的維護。
說明:
主動、被動模式都是相對於proxy來講的。
proxy主動發送數據就是主動模式;
proxy等待server的請求,再發送數據就是被動模式。
由於主動模式能夠有效減輕zabbix server壓力,須要監控的東西不少時必定要把監控模式更改成主動監控
被動模式流程,被動模式必定要記得設置Server = ServerIP
被動模式工做流程:
Server 打開一個TCP鏈接
Server發送一個key 爲agent.
ping
Agent接受這個請求,而後響應< HEADER >< DATALEN >
Server對接受到的數據進行處理
TCP鏈接關閉
主動模式流程,主動模式必定要記得設置ServerActive=ServerIP
Agent向Server創建一個TCP鏈接
Agent請求須要檢測的數據列表
Server響應Agent,發送一個Items列表
Agent容許響應
TCP鏈接完成本次會話關閉
Agent開始週期性地收集數據
主機的性能監控、網絡設備性能監控、數據庫性能監控、多種警告方式、詳細的報表圖表繪製
監控主機zabbix有專用的agent,能夠監控Linux、Windows、FreeBSD等
監控網絡設備zabbix經過SNMP、ssh
可監控對象:
設備:服務器、路由器、交換機
軟件:OS、網絡、應用程序
主機性能指標監控
故障監控:down機、服務不可達、主機不可達
zabbix監控環境中基本概念
主機(host):主要監控的網絡設備,可由IP或DNS名稱指定;
主機組(host group):主機的邏輯容器,能夠包含主機和模板,但同一個組織內的主機和模板不能互相連接;主機組一般在給用戶或用戶組指派監控權限時使用
監控項(item):一個特定監控指標的相關的數據;這些數據來自於被監控對象;item是zabbix進程數據收集的核心,相對某個監控對象,每一個item都由「key」標識
觸發器(trigger):一個表達式,用於評估某監控對象的特定item內接收的數據是否在合理範圍內,也就是閾值;接收的數據量大於閾值時,觸發器狀態將從「OK」轉變爲「Problem」,當數據再次恢復到合理範圍,又轉變爲「OK」
事件(event):觸發一個值得關注的事情,好比觸發器狀態轉變,新的agent或從新上線的agent的自動註冊等
動做(action):指對於特定事件事先定義的處理方法,如發送通知,什麼時候執行操做
報警升級(escalation):發送報警或者執行遠程命令的自定義方案,如每隔5分鐘發送一次報警,共發送5次等。
媒介(media):發送通知的手段或者通道,如Email,Jabber或者SMS等
通知(notification):經過選定的媒介向用戶發送有關某事件的信息
遠程命令(remote command):預約義的命令,可在被監控主機處於某特定條件下時自動執行
模板(template):用於快速定義被監控主機的預設條目集合,一般包含了item、trigger、graph、screen、application以及low-level discovery rule;模板能夠直接連接到某個主機
應用(application):一組item的集合
Web場景(web scennario):用於檢測web站點可用性的一個或多個HTTP請求
前端(frontend):zabbix的web接口
zabbix的監控架構
在實際監控架構中,zabbix根據網絡環境、監控規模等分了三種架構:server-client、master-node-client、server-proxy-client三種。
server-client架構
也是zabbix最簡單的架構,監控機和被監控機直接不通過任何代理,直接由zabbix server和zabbix agentd之間進行數據交互。適用於網絡比較簡單,設備比較少的監控環境。
server-proxy-client架構
其中proxy是server、client之間溝通的一個橋樑,proxy自己沒有前端,並且其自己並不存放數據,只是將agentd發來的數據暫時存放,然後再提交給server。該架構常常是和master-node-client架構作比較的架構,通常適用於跨機房、跨網絡的中型網絡架構的監控
master-node-clinet架構
該架構是zabbix最複雜的監控架構,適用於跨網絡、跨機房、設備較多的大型環境。每一個node同時也是一個server端,node下面能夠接proxy,也能夠直接接client。Node有本身的配置文件和數據庫,其要作的是將配置信息和監控數據向master同步
zabbix監控範疇
硬件監控:Zabbix IPMI Interface
系統監控:Zabbix Agent Interface
java監控:ZabbixJMXInterface
網絡設備監控:Zabbix SNMP Interface
應用服務監控:Zabbix Agent UserParameter
MySQL數據庫監控:percona-monitoring-pldlgins
URL監控:Zabbix Web監控
---------------------------------------------------------------------------------------------------
# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited COMMIT
---------------------------------------------------------------------------------------------------
[root@Zabbix-server ~]# /etc/init.d/iptables restart
3)關閉SELINUX
[root@Zabbix-server ~]# vim /etc/selinux/config
#SELINUX=enforcing
#SELINUXTYPE=targeted
SELINUX=disabled
[root@Zabbix-server ~]# reboot //重啓後永久生效,或者使用setenforce 0臨時生效
4)系統約定
軟件源代碼包存放位置:/usr/local/src
源碼包編譯安裝位置:/usr/local/軟件名字
此處參照:nginx1.10.3+php5.6+mysql5.7.0
測試完成後,確保nginx,php,mysql都能正常啓動,可以訪問php頁面