在一個IT環境中會存在各類各樣的設備,例如:硬件設備、軟件設備、其系統的構成也是很是複雜的。html
多種應用構成負載的IT業務系統,保證這些資源的正常運轉,是一個公司IT部門的職責。而要讓這些應用可以穩定地運行,則須要專業IT人員進行設計、架構、維護和調優。在這個過程當中,爲了及時掌握基礎環境和業務應用系統的可用性,須要獲取各個組件的運行狀態,如CPU的利用率、系統的複製、服務的運行、端口的連通、帶寬流量、網站訪問狀態碼等信息。而這一切都離不開監控系統。java
一個監控系統的組成大致能夠分爲兩部分:數據採集部分(客戶端)和數據存儲分析告警展現部分(服務器端),這兩部分構成了監控系統的基本模型。node
數據採集的工做模式能夠分爲被動模式(服務端到客戶端採集數據)和主動模式(客戶端主動上報數據到服務器端)。一般,大多數監控系統應該能同時支持這兩種模式。被動模式對服務器的開銷較大,適合小規模的監控環境:主動模式對服務器的開銷較小,適合大規模的監控環境。mysql
採集數據的協議方式能夠分爲兩種:專用客戶端採集和共用協議採集(SNMP、SSH、Telnet等)linux
對於採集到的監控數據,能夠將其存儲到數據庫或者文本或者其餘方式,具體採用哪種,應根據實際需求來決定。ios
q MRTG算法
MRTG(Multi Route
Trffic Grapher)是一套可用來繪製網絡流量圖的軟件,由瑞士奧爾滕的Tobias Oetiker與Dave Rand所開發,以GPL受權。sql
MRTG最好的版本是1995年推出的,用perl語言攜程,可跨平臺使用,數據採集用SNMP協議,MRTG將手機到的數據經過Web頁面以GIF或者PNG格式繪製出圖像。數據庫
q Cacti瀏覽器
Cacti(英文含義爲仙人掌)是一套基於PHP、MySQL、SNMP和RRDtool開發的網絡流量監測圖形分析工具,它經過snmpget來獲取數據使用RRDtool繪圖,但使用者無須瞭解RRDtool複雜的參數。2提供了很是強大的數據和用戶管理功能,能夠指定每個用戶能查看樹狀結構、主機設備以及任何一張圖,還能夠與LDAP結合進行用戶認證,同時也能自定義模板。在歷史數據展現監控方面,其功能至關不錯。
Cacti經過添加模板,使不一樣設備的監控添加具備可複用性,而且具有可自定義繪圖的功能,具備強大的運算能力(數據的疊加功能)
q SmokePing
Smokeping主要用於監視網絡性能,包括常規的ping、www服務器性能、DNS查詢性能、SSH性能等。底層也是用RRDtool作支持,特色是繪製圖很是漂亮,玩過丟包和延遲用顏色和陰影來標示,支持將多張圖疊放在一塊兒,其作着還開發了MRTG和RRDtll等工具。
Smokeping的站點爲:http://tobi.oetiker.cn/hp
q Graphite
Craphite是一個用於採集網站實時信息並進行統計的開源項目。Graphite服務支持平均每分鐘4800次更新操做,採用簡單文本協議,具備繪圖功能,其即插即用的功能可方便地用於任何須要監控的系統上。
和其餘監控工具不一樣額是,Graphite自己並部手機具體的數據,這些數據收集的工做一般由第三方工具或插件完成,能夠說,Graphite是一個繪圖工具。
q Nagios
Nagios是一個企業級的個系統,可監控服務的運行狀態和網絡信息等,並能監視所指定的本地或遠程主機參數以及服務,同時提供異常告警通知功能等。
Nagios可運行在Linux和UNIX平臺上。同時提供一個可選的基於劉安琪的Web界面,以方便系統管理人員查看網絡狀態、各類系統問題、以及日誌等
Nagios的功能側重於監控服務的可用性,能急事根據觸發條件告警。
目前Nagios也佔領了必定的市場份額,不過Nagios並無與時俱進,已經不能知足於多變的監控需求,架構的擴展性和使用的便捷性有待加強,其高級功能集成在上夜班Nagios XI中。
q Zenoss
Core
Zenoss Core(簡稱Zenoss)是開源企業級IT管理軟件,它容許IT管理員依靠歹意的WEB控制檯來監控網絡架構的狀態和健康度。
Zenoss Core的強大功能來自深刻的列表與配置管理數據庫,用於發現和管理公司IT環境的各種資產(包括服務器、網絡和其餘結構設備)。Zenoss能夠建立關鍵資產清單和對應的組件級別(接口、服務、進程、已安裝的軟件等)創建好模型後,Zenoss就能夠監控和報告IT架構中各類資源的狀態和性能情況了。同時還提供與CMDB關聯的事件和錯誤管理系統,以協助提升各種事件和提醒的管理效率,以此提升IT管理人員的效率。
q Ganglia
Grnglia是一個跨平臺的、可擴展的、高性能的分佈式監控系統,如集羣和網格。它基於分層設計,使用普遍的技術,用RRDtool存儲數據。具備可視化界面,適合對集羣系統的自動化監控。其精心設計的數據結構和算法使得監控端到被監控端的鏈接開銷很是低。目前已經有成千上萬的集羣正在使用這個監控系統,能夠輕鬆的處理2000個節點的集羣環境。
q OpenTSDB
開源監控系統OpenTSDB用Hbase存儲全部時序(無須採樣)的數據,來構建一個分佈式、可伸縮的時間序列數據庫。它支持秒級數據採集,支持永久存儲,能夠作容量規劃,並很容易地接入到現有的告警系統裏。
OpenTSDB能夠從大規模的集羣(包括集羣中的網絡設備、操做系統、應用程序)中獲取相應的採集指標,並進行存儲、索引和服務,從而使這些數據更容易讓人理解,如Web化、圖形化等。
q Zabbix
Zabbix是一個分佈式監控系統,支持多種採集方式和採集客戶端,有專用的Agent代理,也支持SNMP、IPMI、JMX、Telnet、SSH等多種協議,它將採集到的數據存放到數據庫,而後對其進行分析整理,達到條件觸發告警。其靈活的擴展性和豐富的功能是其餘監控系統所不能比的。相對來講,它的整體功能作的很是優秀。
從以上各類監控系統的對比來看,Zabbix都是具備優點的,其豐富的功能、可擴展的能力、二次開發的能力和簡單易用的特色,讀者只要稍加學習,便可構建本身的監控系統。
隨着雲計算、虛擬化的大規模應用,以及將來移動互聯網、物聯網等的興起,Zabbix的使用將愈來愈普遍,應用場合也愈來愈多。目前,很多互聯網公司、雲計算公司、系統集成軟件公司、外包服務公司等,都有對Zabbix進行二次開發和大規模使用。因此,能夠斷言,Zabbix在將來將會引領監控軟件的潮流。
Zabbix適合中小型企業、大中型企業的用戶使用。單個Server節點能夠支持上萬臺設備,每秒能夠處理1.5萬次請求,理論上能夠支持5萬臺設備。
Zabbix自身的定位是中型企業和大型企業,若是在特大型環境中使用,須要解決大併發、大壓力的問題,這對使用者提出了更高的要求。
Zabbix是一個企業級的高度集成開源監控軟件,提供分佈式監控解決方案,能夠用來監控設備、服務等的可用性和性能,其產品不分企業版和社區版,是一個真正的源代碼開放產品,用戶能夠自由下載並使用該軟件。
Zabbix SIA公司是Zabbix的官方技術團隊成立的公司。其運做模式是商業軟件的開源—軟件的使用免費,服務收費。其爲用戶提供諮詢、技術支持服務、定製開發、解決方案、人員培訓等。
對於同類監控產品,有如下理由選擇使用Zabbix。
1.Zabbix是一個自由開發源代碼的產品,用戶能夠對源代碼進行任意修改和二次開發。Zabbix採用GNU General Public License (GPL) Version2開源協議。
2.安裝和配置簡單,用戶僅僅須要一些簡單的學習,便可完成監控的搭建工做。
3.搭建環境簡單,基於開源軟件構建平臺,僅須要Linux、Apache/Nginx、MySQL/PostgreSQL/Oracle、PHP便可,無須專用操做系統支持,也無須專用硬件
4.Zabbix-Agent徹底支持Linux、UNIX、Windows、AIX、BSD和Solaris的監控,Server和Agent都採用C語言編碼,對系統的資源佔用很是小,數據採集的性能和速度很是快。
5.將數據採集持久存儲到數據庫,便於對監控數據的二次分析。
6.很是豐富的擴展能力,很輕鬆地自定義監控項和實現數據採集,幾乎能監控全部的數據。例如:能夠監控網站的訪問次數,監控UPS和天氣溫度等。絕不誇張地說,在Zabbix的世界裏,每每有想不到的事情,沒有辦不到的事情。
7.開源社區的運做模式,有各類論壇、郵件列表、IM及時溝通等。
注意:若是是運維人員,想構建一套本身的監控系統環境,Zabbix將會是最佳的選擇。若是你是開發 ,想基於開源軟件開發一套屬於本身的監控系統,Zabbix也是比較好的選擇。
Zabbix有常見的商業監控軟件所具有的功能,如主機的性能監控、網絡設備性能監控、數據庫性能監控、FTP等通用協議監控、多種告警方式、詳細的報表圖表繪製、分佈式、可擴展能力、API等。
1)數據收集
q 可用、性能檢測。
q 支持Agent、SNMP(包括Trapping和Polling)、IPMI、JMX、SSH、Telnet等。
q 自定義的檢測。
q 自定義收集數據的頻率。
q 服務器端/代理段和客戶端模式。
2)靈活的觸發器
q 能夠定義很是靈活的 閥值和多種相關聯的條件。
3)高度可定製的告警
q 發送通知,可定製包括告警級別、動做升級、收件人和媒體類型。
q 通知可使用全局宏變量和自定義的變量。
q 自動處理功能包括遠程命令的自動調用和執行。
4)實時的繪圖功能
監控項將數據實施繪製在圖形上。
5)Web監控能力
q Zabbix能夠模擬瀏覽器請求一個網站,並檢查返回值和響應時間。
6)多種可視化的展現
q 能夠自定義監控的展現圖,將多種監控數據集中展現到一張圖中。
q 網絡拓撲圖。
q 自定義Screens和Slide shows能夠將多種圖形集中展現。
q 報表功能。
q 資源使用狀況的監控展現。
7)歷史數據的存儲
q 數據存儲在數據庫中。
q 歷史數據的存放週期可配置。
q 按期刪除過時的歷史數據。
8)配置很是容易
q 配置比較簡單,只須要如下兩步便可。
q 第一步:添加設備。
q 第二步:應用模板便可完成監控。
9)使用模板
q 模板能夠分組
q 模板具備可繼承性。
10) 網絡發現
q 支持自動發現網絡設備和服務器(能夠經過配置自動發現服務規則實現。)
q Agent自動發現
q 支持自動發現實現動態監控的批量監控(支持自定義)內置的自動發現包括文件系統、網絡接口、SNMP OLD,可定製自動發現。
11) 快速的訪問接口
q Web頁面基於PHP
q 遠程訪問。
q 日誌審計。
12) API功能
q 應用API功能能夠方便地和其餘系統結合,包括手機客戶端的使用。
13) 系統權限
q 不一樣的用戶展現監控的資源不一樣。
q 對用戶的身份認證
14) 程序特性
q 用C語言編寫,其性能和內存開銷很是小。
15) 大型環境的支持
q 利用Zabbix-Proxy方式便可輕鬆構建遠程監控。
1.數據庫文件找不到的問題。
修改/etc/zabbix/zabbix_server.conf中的Dbsocket配置。
DBSocket=/tmp/mysql.sock
注意:修改成mysql.sock實際存在的路徑後,重啓服務。
2.數據庫沒法鏈接
解決辦法有三種:檢查數據庫服務是否正常;防火牆是否容許;權限可否訪問。
參考:
Zabbix-Get是Zabbix中的一個程序,用於Zabbix-Server到Zabbix-Agent的數據獲取,一般能夠用來檢測驗證Agent的配置是否正確。用法以下:
[root@linux-node1 ~]# zabbix_get
usage: zabbix_get [-hV] -s <host name or IP>
[-p <port>] [-I <IP address>] -k <key>
-s:遠程Zabbix-Agent的IP地址或者是主機名。
-p:遠程Zabbix-Agent的端口。
-l:本機出去的IP地址,用於一臺機器中又多個網卡的狀況。
-k:獲取遠程Zabbix-Agent數據所使用的Key。
示例以下:
[root@linux-node1 ~]# zabbix_get -s 10.0.0.4 -k system.uname
Linux linux-node2.example.com 2.6.32-573.el6.x86_64 #1 SMP Thu Jul 23 15:44:03 UTC 2015 x86_64
用zabbix_get命令能夠很方便地知道key是否能正常獲取到數據,這在測試自定義監控的時候特別有用。
q zabbix_server
zabbix_server是Zabbix服務端的核心程序。
q zabbix_proxy
zabbix_proxy是Zabbix代理服務的程序,用於分佈式監控proxy模式中。
q zabbix_agent
zabbix_agent是用超級服務(xinetd)的方式來啓動的,對應的配置文件爲zabbix_agent.conf
zabbix_agentd是以獨立進程的方式來啓動的,對應的配置文件爲zabbix_agentd.conf
zabbix_agent是Zabbix專用客戶端的程序。
q zabbix_java_gateway
Zabbix的Java採集服務端,用於JMX的監控方式。
q zabbix_sender
Zabbix的Trapping模式,將採集到的數據經過定時任務等主動發送給zabbix_server。
q zabbix_get
zabbix_get是一個數據獲取測試命令,至關於snmp中的snmpwalk。