什么是zabbix
Zabbix 能監(jiān)控各種網(wǎng)絡(luò)參數(shù)量蕊,保證服務(wù)器系統(tǒng)的安全運(yùn)營;并提供靈活的通知機(jī)制以讓系統(tǒng)管理員快速定位艇挨、解決存在的各種問題残炮。是一個基于 Web 界面的提供分布式系統(tǒng)監(jiān)視以及網(wǎng)絡(luò)監(jiān)視功能的企業(yè)級的開源解決方案。
架構(gòu)
Zabbix 由幾個主要的功能組件組成缩滨,其功能介紹如下所示势就。
參考官檔:https://www.zabbix.com/documentation/4.0/zh/manual/introduction/overview
Server
Zabbix server 是 Zabbix軟件的核心組件,agent 向其報(bào)告可用性脉漏、系統(tǒng)完整性信息和統(tǒng)計(jì)信息苞冯。server也是存儲所有配置信息、統(tǒng)計(jì)信息和操作信息的核心存儲庫侧巨。
數(shù)據(jù)庫
所有配置信息以及 Zabbix 采集到的數(shù)據(jù)都被存儲在數(shù)據(jù)庫中舅锄。
Web 界面
為了從任何地方和任何平臺輕松訪問 Zabbix ,我們提供了基于 web 的界面司忱。該界面是 Zabbix server 的一部分皇忿,通常(但不一定)和 Zabbix server 運(yùn)行在同一臺物理機(jī)器上。
Proxy
Zabbix proxy 可以代替 Zabbix server采集性能和可用性數(shù)據(jù)坦仍。Zabbix proxy在Zabbix的部署是可選部分鳍烁;但是proxy的部署可以很好的分擔(dān)單個Zabbix server的負(fù)載。
Agent
Zabbix agents 部署在被監(jiān)控目標(biāo)上繁扎,用于主動監(jiān)控本地資源和應(yīng)用程序幔荒,并將收集的數(shù)據(jù)發(fā)送給 Zabbix server。
數(shù)據(jù)流
另外梳玫,回過頭來整體的了解下 Zabbix 內(nèi)部的數(shù)據(jù)流對Zabbix的使用也很重要爹梁。首先,為了創(chuàng)建一個采集數(shù)據(jù)的監(jiān)控項(xiàng)汽纠,您就必須先創(chuàng)建主機(jī)卫键。其次傀履,在任務(wù)的另外一端虱朵,必須要有監(jiān)控項(xiàng)才能創(chuàng)建觸發(fā)器(trigger),必須要有觸發(fā)器來創(chuàng)建動作(action)钓账。因此碴犬,如果您想要收到類似“X個server上CPU負(fù)載過高”這樣的告警,您必須首先為 *Server X *創(chuàng)建一個主機(jī)條目梆暮,其次創(chuàng)建一個用于監(jiān)控其 CPU的監(jiān)控項(xiàng)服协,最后創(chuàng)建一個觸發(fā)器,用來觸發(fā) CPU負(fù)載過高這個動作啦粹,并將其發(fā)送到您的郵箱里偿荷。雖然這些步驟看起來很繁瑣窘游,但是使用模板的話,實(shí)際操作非常簡單跳纳。也正是由于這種設(shè)計(jì)忍饰,使得 Zabbix 的配置變得更加靈活易用。
監(jiān)控功能
主機(jī)的性能監(jiān)控寺庄、網(wǎng)絡(luò)設(shè)備性能監(jiān)控艾蓝、數(shù)據(jù)庫性能監(jiān)控、多種告警方式斗塘、詳細(xì)的報(bào)表圖表繪制赢织;
監(jiān)控主機(jī) zabbix 有專用的 agent,可以監(jiān)控Linux馍盟、Windows于置、FreeBSD等。
監(jiān)控網(wǎng)絡(luò)設(shè)備 zabbix 通過多種協(xié)議進(jìn)行數(shù)據(jù)采集:
1.SNMP:(Simple Network Management Protocol)贞岭,這是一個非常古老的且通用的監(jiān)控協(xié)議俱两,幾乎任何設(shè)備都支持用此方式進(jìn)行系統(tǒng)監(jiān)控。
2.Agent:在被監(jiān)控端安裝專門的監(jiān)控程序曹步,將數(shù)據(jù)采集后通過Agent發(fā)送至Server宪彩。
3.IPMI:智能平臺管理接口〗不椋可在常用的服務(wù)器上看到類似以太網(wǎng)口的接口尿孔。
4.JMX:Java Management Extensions
可監(jiān)控對象:
監(jiān)控硬件設(shè)備:服務(wù)器、路由器筹麸、交換機(jī)等
監(jiān)控系統(tǒng) :CPU活合、內(nèi)存、磁盤物赶、網(wǎng)絡(luò)白指、進(jìn)程、 TCP等
監(jiān)控服務(wù):tmcat酵紫、 redisnginx告嘲、 php、 to奖地、 memcache橄唬、 mysql等
監(jiān)控WEB :請求時(shí)間、響應(yīng)時(shí)間参歹、加載時(shí)間等
故障監(jiān)控:宕機(jī)仰楚,服務(wù)器不可用,主機(jī)不可達(dá)等
zabbix工作原理
一個完整的監(jiān)控系統(tǒng)所需指標(biāo):
1.采樣:周期性的獲取某個被監(jiān)測指標(biāo)的相關(guān)數(shù)據(jù)
2.存儲:將采集到的數(shù)據(jù)存儲在指定的存儲系統(tǒng)中,Zabbix默認(rèn)是MySQL
對于數(shù)據(jù)的存儲可分為兩大類:
歷史數(shù)據(jù):可理解為過去某一時(shí)間點(diǎn)的數(shù)據(jù)
趨勢數(shù)據(jù):可理解為過去某一段時(shí)間的數(shù)據(jù)
3.展示:采集完數(shù)據(jù)后僧界,為了使數(shù)據(jù)能更直觀的展現(xiàn)在用戶面前侨嘀,可將采集到的數(shù)據(jù)做二次處理,做成各類圖形捂襟。Zabbix就是使用的PHP程序?qū)⒉杉臄?shù)據(jù)通過Web GUI直觀的展示給用戶飒炎。
4.報(bào)警:當(dāng)監(jiān)控的指標(biāo)出現(xiàn)異常時(shí)需要監(jiān)控系統(tǒng)能自動的發(fā)出告警信息,甚至在出現(xiàn)報(bào)警后能自動完成修復(fù)笆豁。
一個監(jiān)控系統(tǒng)運(yùn)行的大概流程是這樣的:
zabbix agent 需要安裝到被監(jiān)控的主機(jī)上郎汪,它負(fù)責(zé)定期收集各項(xiàng)數(shù)據(jù),并發(fā)送到 zabbix server 端闯狱,zabbix server 將數(shù)據(jù)存儲到數(shù)據(jù)庫中煞赢,zabbix web 根據(jù)數(shù)據(jù)在前端進(jìn)行展示和繪圖。這里 agent 收集數(shù)據(jù)分為主動和被動兩種模式:
主動:agent 請求server 獲取主動的監(jiān)控項(xiàng)列表哄孤,并主動將監(jiān)控項(xiàng)內(nèi)需要檢測的數(shù)據(jù)提交給server / proxy
被動:server 向 agent 請求獲取監(jiān)控項(xiàng)的數(shù)據(jù)照筑,agent 返回?cái)?shù)據(jù)。
zabbix的工作進(jìn)程
參考官檔:https://www.zabbix.com/documentation/4.0/zh/manual/concepts
默認(rèn)情況下 zabbix 包含6個進(jìn)程:zabbix_agentd瘦陈、zabbix_get凝危、zabbix_proxy、zabbix_sender晨逝、zabbix_server蛾默,另外一個zabbix_java_gateway是可選的,這個需要單獨(dú)安裝捉貌。
zabbix_agentd
客戶端守護(hù)進(jìn)程支鸡,此進(jìn)程收集客戶端數(shù)據(jù),例如cpu負(fù)載趁窃、內(nèi)存牧挣、硬盤使用情況等。
zabbix_get
zabbix 工具醒陆,單獨(dú)使用的命令瀑构,通常在 server 或者 proxy 端執(zhí)行獲取遠(yuǎn)程客戶端信息的命令。通常用于排錯刨摩。例如在 server 端獲取不到客戶端的內(nèi)存數(shù)據(jù)寺晌,可以使用 zabbix_get 獲取客戶端的內(nèi)容的方式來做故障排查。
zabbix_sender
zabbix 工具码邻,用于發(fā)送數(shù)據(jù)給 server 或者 proxy折剃,通常用于耗時(shí)比較長的檢查。很多檢查非常耗時(shí)間像屋,導(dǎo)致 zabbix 超時(shí)。于是在腳本執(zhí)行完畢之后边篮,使用 sender 主動提價(jià)數(shù)據(jù)己莺。
zabbix_server
zabbix 服務(wù)端守護(hù)進(jìn)程奏甫。zabbix_agentd、zabbix_get凌受、zabbix_sender阵子、zabbix_proxy、zabbix_java_gateway的數(shù)據(jù)最終都是提交到server(說明:當(dāng)然不是數(shù)據(jù)都是主動提交給zabbix_server胜蛉,也有的是 server 主動去取數(shù)據(jù))
zabbix_proxy
zabbix 代理守護(hù)進(jìn)程挠进。功能類似server,唯一不同的是它只是一個中轉(zhuǎn)站誊册,它需要把收集到的數(shù)據(jù)提交/被提交到 server 里领突。
zabbix_java_gateway
zabbix2.0之后引入的一個功能。顧名思義:Java網(wǎng)絡(luò)案怯,類似agentd君旦,但是只用于 Java 方面。需要特別注意的是嘲碱,它只能主動去獲取數(shù)據(jù)金砍,而不能被動獲取數(shù)據(jù)。它的數(shù)據(jù)最終會給到 server 或者proxy麦锯。
zabbix常用監(jiān)控架構(gòu)
在實(shí)際監(jiān)控架構(gòu)中恕稠,zabbix根據(jù)網(wǎng)絡(luò)環(huán)境、監(jiān)控規(guī)模等 分了三種架構(gòu):server-client扶欣、master-node-client谱俭、server-proxy-client 三種。
1.server-client 架構(gòu)
zabbix的最簡單的架構(gòu)宵蛀,監(jiān)控服務(wù)器和被監(jiān)控機(jī)之間不經(jīng)過任何代理昆著,直接由 zabbix server 和 zabbix agentd之間進(jìn)行數(shù)據(jù)交互。適用于網(wǎng)絡(luò)比較簡單术陶,設(shè)備比較少的監(jiān)控環(huán)境凑懂。
2.server-proxy-client 架構(gòu)
其中 proxy 是server、client 之間溝通的一個橋梁梧宫,proxy 本身沒有前端接谨,而且其本身并不存放數(shù)據(jù),只是將 agentd 發(fā)來的數(shù)據(jù)暫時(shí)存放塘匣,而后再提交給server脓豪,該架構(gòu)經(jīng)常是和 master-node-client 架構(gòu)做比較的架構(gòu),一般適用于跨機(jī)房忌卤、跨網(wǎng)絡(luò)的中型網(wǎng)絡(luò)架構(gòu)的監(jiān)控扫夜。
3.master-node-client 架構(gòu)
該架構(gòu)是 zabbix 最復(fù)雜的監(jiān)控架構(gòu),適用于跨網(wǎng)絡(luò)、跨機(jī)房笤闯、設(shè)備較多的大環(huán)境堕阔。每個node 同時(shí)也是一個 server 端,node下面可以接 proxy颗味,也可以直接接client超陆。node有自己的配置文件和數(shù)據(jù)庫,其要做的是將配置信息和監(jiān)控?cái)?shù)據(jù)向 master 同步浦马,master 的故障或損壞不影響 node 其下的架構(gòu)的完整性时呀。