基礎(chǔ)篇
基礎(chǔ)篇
第1章 Zabbix監(jiān)控系統(tǒng)簡介
1.1 Zabbix是什么
Zabbix是什么?可以用最簡短的一句話概括——Zabbix是一種企業(yè)級(jí)的分布式開源監(jiān)控解決方案。
我想這句話對(duì)于熟悉Zabbix的人來說應(yīng)該不會(huì)陌生,可能我們都知道分布式、開源、監(jiān)控解決方案,那么這里的企業(yè)級(jí)又具體代表什么含義呢?對(duì)于一套成熟的企業(yè)級(jí)的監(jiān)控解決方案,需要面對(duì)幾個(gè)問題,如監(jiān)控接入的設(shè)備越來越多,需要分布式監(jiān)控、多分支監(jiān)控及防火墻后端的監(jiān)控,需要支持高可用、多主機(jī)、無單點(diǎn)故障,安全加固,端對(duì)端加密,專業(yè)認(rèn)證等。
很榮幸,在2020年,Zabbix獲評(píng)Gartner ITIM基礎(chǔ)架構(gòu)監(jiān)控工具第一名,并且在2021年上半年,在IT Central Station的IT基礎(chǔ)監(jiān)控(IT Infrastructure Monitoring)、網(wǎng)絡(luò)監(jiān)控(Network Monitoring)、服務(wù)器監(jiān)控(Server Monitoring)、云監(jiān)控(Cloud Monitoring)軟件榜單中,Zabbix均排名第一。
開發(fā)Zabbix的初衷是開發(fā)一款卓越的監(jiān)控解決方案,并提供及時(shí)的響應(yīng)和可靠的支持,以解決任何有關(guān)其安裝、操作和使用的問題。
1.2 Zabbix的誕生
Zabbix是由Alexei Vladishev創(chuàng)建的,根據(jù)Alexei先生在被采訪時(shí)的描述,那時(shí)他只是一名負(fù)責(zé)AIX和HP-UX的系統(tǒng)管理員,本想著如何通過自動(dòng)化來簡化自己的日常工作,開始編寫各種工具。最初Zabbix只是一堆使用crontab運(yùn)行的Perl腳本,后來他決定使用新的架構(gòu)和技術(shù)來重寫,這也變成了他的業(yè)余愛好項(xiàng)目,他本人對(duì)編程非常感興趣,歷經(jīng)4年的開發(fā),他把這款軟件命名為Zabbix,并以開源軟件的形式發(fā)布。因此,Zabbix的第一個(gè)版本于2001年發(fā)布。
Zabbix由Zabbix SIA公司持續(xù)進(jìn)行開發(fā)、更新與維護(hù),同時(shí)為用戶提供Zabbix培訓(xùn)、Zabbix認(rèn)證及技術(shù)支持服務(wù)。
Zabbix遵循了GNU GPL(GNU General Public License,GNU通用公共許可證)V2協(xié)議設(shè)計(jì)和編碼,這就意味著Zabbix的源代碼是免費(fèi)且完全公開的,可以供任何用戶下載使用。
Zabbix采用All in One的監(jiān)控解決方案,并且Zabbix并不是為特定行業(yè)、特定客戶創(chuàng)建的一款產(chǎn)品,而是將Zabbix的可用范圍持續(xù)不斷擴(kuò)大。從最初的傳統(tǒng)IT基礎(chǔ)監(jiān)控到物聯(lián)網(wǎng)設(shè)備監(jiān)控,從數(shù)據(jù)采集到屏幕數(shù)據(jù)可視化,從事件告警到趨勢預(yù)測等,Zabbix自始至終都在聽取用戶的反饋,并不斷努力推進(jìn)Zabbix的多樣性。由于Zabbix的靈活性和極強(qiáng)的可擴(kuò)展性,以及極低的維護(hù)成本,Zabbix常常成為大型企業(yè)首選的監(jiān)控解決方案。
1.3 Zabbix的功能
在談?wù)揨abbix的功能之前,我想請(qǐng)教讀者幾個(gè)問題:您之前是否使用過其他監(jiān)控軟件?是什么促使您愿意選擇學(xué)習(xí)Zabbix的呢?Zabbix與市面上流行的監(jiān)控軟件之間有哪些區(qū)別?我希望您能夠了解的是,Zabbix不僅是一款監(jiān)控軟件,還是一套完善的、開箱即用的監(jiān)控解決方案,我認(rèn)為它的使用方式和監(jiān)控理念對(duì)IT監(jiān)控進(jìn)行了一次系統(tǒng)的梳理和革新。
因?yàn)槲覀€(gè)人之前也經(jīng)歷過從自己寫各種監(jiān)控腳本到使用各種監(jiān)控軟件的過程。當(dāng)我第一次使用Zabbix時(shí),就被它的功能和處理邏輯吸引了,如自動(dòng)生成監(jiān)控項(xiàng)、模板的概念、基于界面的人性化操作,鼠標(biāo)操作就可以完成配置、對(duì)外提供完善的API、各種開箱即用的功能等。
我再也不需要為維護(hù)某監(jiān)控軟件的幾千行的配置文件而發(fā)愁,Zabbix的各種觸發(fā)器函數(shù)可以讓我更精準(zhǔn)地判斷系統(tǒng)故障,避免“狼來了”的效應(yīng)。
接下來,我將簡單、快速地介紹一下Zabbix具體有哪些功能。
1.3.1 數(shù)據(jù)采集
既然是講監(jiān)控,不得不說的Zabbix的第一個(gè)點(diǎn)就是數(shù)據(jù)采集,那么Zabbix的數(shù)據(jù)采集都涵蓋了哪些呢?
這里先簡單地展示一臺(tái)服務(wù)器的Zabbix agent可用性狀態(tài)(見圖1-1)及CPU性能監(jiān)控?cái)?shù)據(jù)(見圖1-2)。以Zabbix agent存活狀態(tài)為依據(jù)判斷服務(wù)器是否在線、是否可用??赡軙?huì)有人說:“Zabbix agent是否存活不能作為服務(wù)器是否存活的標(biāo)準(zhǔn)。例如,Zabbix agent停掉了,但并不代表服務(wù)器出現(xiàn)故障?!边@就要看每個(gè)人的評(píng)判標(biāo)準(zhǔn)了,可以基于服務(wù)器是否能ping通,或者服務(wù)器某個(gè)端口是否存活為條件進(jìn)行判斷。但是我認(rèn)為的標(biāo)準(zhǔn)就是我的服務(wù)器Zabbix agent必須在線,服務(wù)器既然存活,就必須要納管到監(jiān)控平臺(tái),這就是一條規(guī)范或標(biāo)準(zhǔn)。
圖1-1
圖1-2
通過圖1-1和圖1-2可以看到,通過Zabbix,可以全方位地掌握自己的服務(wù)器的各項(xiàng)監(jiān)控指標(biāo)及狀態(tài)。
對(duì)于以上的監(jiān)控?cái)?shù)據(jù),可以通過在操作系統(tǒng)上部署Zabbix agent來獲取,那如果監(jiān)控對(duì)象是一臺(tái)交換機(jī),或者是一臺(tái)路由器,又或者是一臺(tái)UPS,該怎么辦呢?Zabbix除了提供在操作系統(tǒng)上部署的采集客戶端Zabbix agent,還支持其他的采集方式,如SNMP(包括主動(dòng)輪詢和被動(dòng)捕獲)數(shù)據(jù)采集,只要為設(shè)備配置好SNMP功能,就可以采集基于SNMP的監(jiān)控?cái)?shù)據(jù),不僅如此,Zabbix還提供了更多的數(shù)據(jù)采集方式,如IPMI、JMX、VMware等。
如果這些都不是我們想要的采集方式,那么Zabbix還可以自定義數(shù)據(jù)采集方式,我們可以通過自己擅長的編程語言,如Bash Shell、Python、Perl等來編寫數(shù)據(jù)采集的腳本,或者通過模塊進(jìn)行監(jiān)控?cái)?shù)據(jù)的采集。
對(duì)于監(jiān)控項(xiàng)的配置,我們可以靈活地定義數(shù)據(jù)采集間隔,可以設(shè)置1秒鐘1次,或者1小時(shí)1次。對(duì)于一些核心、重要的監(jiān)控?cái)?shù)據(jù),可以采用秒級(jí)監(jiān)控;對(duì)于一些非核心監(jiān)控?cái)?shù)據(jù),就可以稍微延長采集間隔。后面會(huì)對(duì)Zabbix內(nèi)置的每種監(jiān)控類型做更詳細(xì)的描述。
1.3.2 靈活的閾值定義
現(xiàn)在我們已經(jīng)采集到了監(jiān)控?cái)?shù)據(jù),那可以用這些監(jiān)控?cái)?shù)據(jù)做什么呢?通過監(jiān)控?cái)?shù)據(jù)配置告警是運(yùn)維工作必不可少的一項(xiàng)需求,Zabbix可以通過觸發(fā)器對(duì)采集值與參考值進(jìn)行判斷,從而實(shí)現(xiàn)告警。例如,CPU負(fù)載大于90%就告警,這是一個(gè)非常簡單的故障場景(大于90%就告警,小于90%就恢復(fù)),這樣就會(huì)出現(xiàn)一個(gè)問題,即如果CPU負(fù)載一直在90%左右浮動(dòng),就會(huì)出現(xiàn)反復(fù)告警的情況,這種場景放在以前就會(huì)產(chǎn)生很多通知,因此,Zabbix提供了一種更為聰明的判斷方法。例如,告警條件為大于90%,但是Zabbix可以設(shè)置恢復(fù)條件為小于30%,這樣就避免了反復(fù)告警的情況。另外,我們還可以設(shè)置凌晨1點(diǎn)到早上7點(diǎn)不告警。了解觸發(fā)器的各種函數(shù)的功能,可以組合出更符合自己需求的表達(dá)式。
1.3.3 高度可配置化的告警
接下來,我們通過Zabbix提供的觸發(fā)器判斷是否發(fā)生了故障,如果發(fā)生故障,就對(duì)這個(gè)故障進(jìn)行一系列的操作。例如,指定遞增計(jì)劃告警,在告警不同階段通知不同的接收者,通過媒介配置自定義發(fā)送告警內(nèi)容通知(如常用的郵件、短信、微信、釘釘甚至電話通知等)。
1.3.4 實(shí)時(shí)圖形
對(duì)于監(jiān)控?cái)?shù)據(jù)的展示,Zabbix通過使用內(nèi)置的圖形功能,可以將監(jiān)控?cái)?shù)據(jù)繪制成圖形,如圖1-3所示,任意展示不同時(shí)間區(qū)間內(nèi)的數(shù)據(jù)趨勢,如5分鐘、15分鐘、30分鐘、1小時(shí)甚至幾天或幾個(gè)月的數(shù)據(jù)。
圖1-3
1.3.5 Web監(jiān)控功能
Zabbix的Web監(jiān)控功能不僅可以檢測HTTP請(qǐng)求的響應(yīng)代碼及過濾頁面上的某些特殊的關(guān)鍵字符串,還可以追蹤模擬鼠標(biāo)在Web網(wǎng)站上的點(diǎn)擊操作,以檢查Web網(wǎng)站的功能。
1.3.6 豐富的可視化
前面提到的實(shí)時(shí)圖形展示只是針對(duì)單個(gè)監(jiān)控指標(biāo)的圖形生成的,在Zabbix中,也可以創(chuàng)建將多個(gè)監(jiān)控值組合到單個(gè)視圖中的自定義圖形(見圖1-4),還包括網(wǎng)絡(luò)的拓?fù)鋱D、自定義數(shù)據(jù)聚合圖、幻燈片演示圖、報(bào)表視圖、業(yè)務(wù)視圖、可鉆取視圖。
圖1-4
1.3.7 歷史數(shù)據(jù)存儲(chǔ)
Zabbix的監(jiān)控?cái)?shù)據(jù)保存在數(shù)據(jù)庫當(dāng)中,這樣我們就可以隨時(shí)抽取歷史數(shù)據(jù),而且Zabbix內(nèi)置了數(shù)據(jù)管理機(jī)制,我們可以隨意自定義各種歷史數(shù)據(jù)的保存時(shí)間,Zabbix將依據(jù)配置的保存時(shí)間清理舊數(shù)據(jù)。
1.3.8 配置簡單
Zabbix監(jiān)控項(xiàng)以模板為集合,模板采用模塊化的方式管理,如模板可以分為Cpu、Mem、Disk,如果只想監(jiān)控CPU,那么只需插入Cpu模板即可,在Web界面添加監(jiān)控設(shè)備為主機(jī)并將主機(jī)添加到數(shù)據(jù)庫中后,Zabbix agent就會(huì)采集主機(jī)數(shù)據(jù)用于監(jiān)控,并且監(jiān)控模板可以隨意插拔,這一切只需用鼠標(biāo)操作即可。
1.3.9 模板套用
剛才講到了模板,模板之間也可以互相關(guān)聯(lián)。例如,現(xiàn)在有一個(gè)OS模板,接下來在OS模板當(dāng)中關(guān)聯(lián)了Cpu、Mem、Disk 3種模板,關(guān)聯(lián)后,OS模板就繼承了上述3種模板的監(jiān)控項(xiàng)目,當(dāng)將OS模板插入監(jiān)控主機(jī)后,主機(jī)就會(huì)自動(dòng)繼承Cpu、Mem、Disk 3種模板的監(jiān)控項(xiàng)目。
1.3.10 自動(dòng)發(fā)現(xiàn)
我們?cè)谑褂帽O(jiān)控軟件時(shí),最頭疼的莫過于添加監(jiān)控設(shè)備,面對(duì)數(shù)量日趨龐大的服務(wù)器、網(wǎng)絡(luò)設(shè)備,作為管理員,不可能一臺(tái)一臺(tái)地手動(dòng)把它們添加至監(jiān)控平臺(tái),而且人工操作會(huì)出現(xiàn)錯(cuò)監(jiān)、漏監(jiān)等情況。Zabbix的Zabbix agent可以在部署完成并啟動(dòng)后,根據(jù)配置自動(dòng)注冊(cè)至監(jiān)控平臺(tái),還可以根據(jù)配置標(biāo)識(shí)自動(dòng)劃分至對(duì)應(yīng)的業(yè)務(wù)組中,并自動(dòng)添加所對(duì)應(yīng)的監(jiān)控模板;至于其他設(shè)備,也可以基于其他判斷條件,如通過SNMP,或者通過網(wǎng)絡(luò)掃描獲取設(shè)備的特定描述信息及標(biāo)識(shí),自動(dòng)添加至Zabbix監(jiān)控平臺(tái)。
對(duì)于單臺(tái)設(shè)備的監(jiān)控項(xiàng)的生成,也可以采用自動(dòng)的方式。例如,每臺(tái)服務(wù)器的磁盤分區(qū)可能不盡相同,那么通過低級(jí)發(fā)現(xiàn)功能,可以基于自身的磁盤分區(qū)生成對(duì)應(yīng)的監(jiān)控項(xiàng)目,如圖1-5所示;或者交換機(jī)有不同個(gè)數(shù)的網(wǎng)絡(luò)接口,通過低級(jí)發(fā)現(xiàn)功能,也可以生成不同端口的監(jiān)控。這樣就省去了大量人工操作,做到了真正的自動(dòng)化。
圖1-5
1.3.11 統(tǒng)一Web管理界面
Zabbix基礎(chǔ)PHP提供了一套Web前端管理界面,這樣我們就可以從任意地方訪問監(jiān)控平臺(tái),并且管理界面可以隨個(gè)人喜好進(jìn)行定制。另外,對(duì)于前端所有的操作,都會(huì)有審計(jì)日志進(jìn)行記錄,確保操作可追溯。
1.3.12 Zabbix API
Zabbix本身提供了完備的API,可用于批量操作、第三方軟件集成和其他用途等。尤其重要的是,Zabbix提供了詳細(xì)的API調(diào)用文檔,方便開發(fā)者查詢。
1.3.13 權(quán)限管理系統(tǒng)
對(duì)于一個(gè)完善的監(jiān)控平臺(tái),用戶權(quán)限劃分尤為重要,Zabbix提供了顆粒化的權(quán)限分配,可以為不同用戶分配不同監(jiān)控視圖的訪問權(quán)限。
1.3.14 Zabbix agent
Zabbix agent主要部署于被監(jiān)控對(duì)象上,幾乎可以部署在任何操作系統(tǒng)上,包括Linux、Windows、UNIX等。
1.3.15 二進(jìn)制的程序
為了更好地提高性能,更少地占用資源,Zabbix采用C語言編寫,方便移植。
1.3.16 適應(yīng)更復(fù)雜的環(huán)境
當(dāng)監(jiān)控網(wǎng)絡(luò)跨防火墻、跨數(shù)據(jù)中心的時(shí)候,通過Zabbix proxy進(jìn)行數(shù)據(jù)采集,可以輕松實(shí)現(xiàn)分布式遠(yuǎn)程監(jiān)控。
1.4 Zabbix組件介紹
Zabbix中包含很多組件,本節(jié)將全面解釋Zabbix中各組件的功能。通過這些組件,可以了解Zabbix的監(jiān)控思想,特別是Zabbix中的重要理念。
對(duì)Zabbix組件有基本的了解,將會(huì)了解本書中的其他內(nèi)容的背景,對(duì)將來深入學(xué)習(xí)其技術(shù)細(xì)節(jié)會(huì)有很大的幫助。
1.Zabbix server
Zabbix server是Zabbix的核心處理程序,主要負(fù)責(zé)數(shù)據(jù)的主動(dòng)輪詢與被動(dòng)接收、觸發(fā)器的條件判斷、用戶通知等。它是Zabbix agent和Zabbix proxy報(bào)告系統(tǒng)可用性與完整性數(shù)據(jù)的核心組件。另外,還可以通過Zabbix server使用簡單的服務(wù)檢查來遠(yuǎn)程檢查網(wǎng)絡(luò)服務(wù)(如Web服務(wù)器或郵件服務(wù)器)。
Zabbix server是所有配置、數(shù)據(jù)統(tǒng)計(jì)和數(shù)據(jù)操作的核心處理程序,也是Zabbix監(jiān)控系統(tǒng)的告警中心。當(dāng)監(jiān)控系統(tǒng)出現(xiàn)任何異常時(shí),Zabbix server都將發(fā)送警報(bào)通知給相應(yīng)的管理員。
Zabbix server的基本功能分為3個(gè)不同的組件:Zabbix server、Web frontend(PHP前端)和數(shù)據(jù)庫(MySQL、PostgreSQL等)。
Zabbix的所有配置信息都存儲(chǔ)在數(shù)據(jù)庫中。例如,當(dāng)在Web前端(或API)新增一個(gè)監(jiān)控項(xiàng)時(shí),此監(jiān)控項(xiàng)會(huì)被添加到數(shù)據(jù)庫的監(jiān)控項(xiàng)表item里,然后Zabbix server以每分鐘一次的頻率查詢監(jiān)控項(xiàng)表中的有效監(jiān)控項(xiàng),并將查詢結(jié)果存儲(chǔ)到Zabbix server緩存中,這就是為什么Zabbix前端所做的任何更改都需要兩分鐘左右才能在最新數(shù)據(jù)中顯示的原因。
2.Zabbix agent
Zabbix agent部署在被監(jiān)控的設(shè)備上,主動(dòng)監(jiān)控本地資源和應(yīng)用程序(硬盤、內(nèi)存、處理器統(tǒng)計(jì)信息等)。
Zabbix agent收集本地的性能數(shù)據(jù)并將數(shù)據(jù)報(bào)告給Zabbix server或Zabbix proxy,用于進(jìn)一步處理。一旦出現(xiàn)異常(如硬盤空間已滿或有崩潰的服務(wù)進(jìn)程),Zabbix server就會(huì)主動(dòng)通知管理員指定機(jī)器上的異常。Zabbix agent的極高效率源于它可以利用本地系統(tǒng)調(diào)用來完成統(tǒng)計(jì)數(shù)據(jù)的采集。
3.Zabbix agent 2
Zabbix agent 2為新一代的Zabbix agent,未來可能會(huì)替代原Zabbix agent。Zabbix agent 2有以下優(yōu)勢。
(1)減少TCP連接數(shù)。
(2)具有更好的檢查并發(fā)性。
(3)易于通過插件進(jìn)行擴(kuò)展。
Zabbix agent 2是用Go語言開發(fā)的(復(fù)用了原Zabbix agent的部分C代碼)。Zabbix agent 2需要在1.13+版本的Go環(huán)境中編譯。
Zabbix agent 2不支持Linux上的守護(hù)進(jìn)程,而且從Zabbix 5.0.4開始,它可以作為Windows Service運(yùn)行。
它的被動(dòng)檢查的工作原理與Zabbix agent類似,其主動(dòng)檢查支持scheduled/flexible間隔和并行檢查。
4.Zabbix proxy
Zabbix proxy可以從一個(gè)或多個(gè)受監(jiān)控設(shè)備中采集監(jiān)控?cái)?shù)據(jù)并將數(shù)據(jù)發(fā)送給Zabbix server,主要功能是代理Zabbix server工作。所有收集的數(shù)據(jù)都在本地緩存,然后傳輸?shù)絑abbix proxy所屬的Zabbix server上。
部署Zabbix proxy是可選的,它有利于分擔(dān)Zabbix server的負(fù)載。如果通過Zabbix proxy采集數(shù)據(jù),則Zabbix server上會(huì)減少CPU和磁盤I/O的資源消耗。
Zabbix proxy是無須本地管理員即可集中監(jiān)控遠(yuǎn)程位置、分支機(jī)構(gòu)和網(wǎng)絡(luò)的解決方案,同時(shí),Zabbix proxy需要使用獨(dú)立的數(shù)據(jù)庫。
5.Zabbix Java Gateway
從Zabbix 2.0開始,Zabbix開始支持監(jiān)控JMX應(yīng)用程序,對(duì)應(yīng)的組件為Zabbix Java Gateway。Zabbix Java Gateway的守護(hù)進(jìn)程是用Java編寫的。為了在特定主機(jī)上找到JMX計(jì)數(shù)器的值,Zabbix server向Zabbix Java Gateway發(fā)送請(qǐng)求,Zabbix Java Gateway使用JMX管理API來遠(yuǎn)程查詢相關(guān)的應(yīng)用。被監(jiān)控應(yīng)用不需要安裝額外的軟件,只需在啟動(dòng)時(shí)向命令行添加-Dcom.sun.management.jmxremote選項(xiàng)即可。
Zabbix Java Gateway接受來自Zabbix server或Zabbix proxy的請(qǐng)求,并且只能用作“被動(dòng)Proxy”。在Zabbix server或Zabbix proxy配置文件中,可配置唯一的Zabbix Java Gateway。如果主機(jī)有Zabbix JMX agent或其他類型的監(jiān)控項(xiàng),則只將Zabbix JMX agent監(jiān)控項(xiàng)傳遞給Zabbix Java Gateway進(jìn)行檢索。
當(dāng)必須通過Zabbix Java Gateway更新監(jiān)控項(xiàng)時(shí),Zabbix server或Zabbix proxy將連接Zabbix Java Gateway并請(qǐng)求該值,Zabbix Java Gateway將檢索該值并將其傳回Zabbix server或Zabbix proxy。因此,Zabbix Java Gateway不會(huì)緩存任何值。
Zabbix server或Zabbix proxy具有連接Zabbix Java Gateway的特定類型的進(jìn)程,由StartJavaPollers選項(xiàng)控制。在內(nèi)部,Zabbix Java Gateway啟動(dòng)多個(gè)線程,由StartPollers選項(xiàng)控制。在服務(wù)器端,如果連接超過Timeout選項(xiàng)配置的秒數(shù),則連接將被終止,但Zabbix Java Gateway可能仍在忙于從JMX計(jì)數(shù)器檢索值。為了解決這個(gè)問題,從Zabbix 2.0.15、Zabbix 2.2.10和Zabbix 2.4.5開始,Zabbix Java Gateway中增加Timeout選項(xiàng),允許為JMX網(wǎng)絡(luò)操作設(shè)置超時(shí)。
Zabbix server或Zabbix proxy嘗試盡可能地將請(qǐng)求匯集到單個(gè)JMX目標(biāo)中(受監(jiān)控項(xiàng)取值間隔影響),并在單個(gè)連接中將它們發(fā)送給Zabbix Java Gateway以獲得更好的性能。
此外,建議StartJavaPollers選項(xiàng)的值小于或等于StartPollers選項(xiàng)的值,否則可能會(huì)出現(xiàn)Zabbix Java Gateway中無可用線程來為傳入請(qǐng)求提供服務(wù)的情況。
6.Web管理界面
為了從任何地方都可以輕松訪問Zabbix,Zabbix基于PHP編寫并提供了一套Web管理界面,可以使用市面上流行的Web服務(wù)中間件Aapche、Nginx等進(jìn)行部署。該界面是Zabbix server的重要組成部分之一,通常(但不一定)和Zabbix server運(yùn)行在同一臺(tái)服務(wù)器上,Zabbix的Web管理界面也是Zabbix API調(diào)用的入口。
7.Zabbix Sender
Zabbix Sender是一個(gè)命令行應(yīng)用程序,可用于將性能數(shù)據(jù)發(fā)送到Zabbix server中進(jìn)行處理。該實(shí)用程序通常用于長時(shí)間運(yùn)行的用戶腳本,用于定期發(fā)送可用性和性能數(shù)據(jù)。如果需要將結(jié)果直接發(fā)送到Zabbix server或Zabbix proxy中,則必須配置監(jiān)控項(xiàng)為trapper類型。
8.Zabbix Get
Zabbix Get是一個(gè)命令行應(yīng)用,可以用于與Zabbix agent進(jìn)行通信,并從Zabbix agent那里獲取所需的信息。該應(yīng)用常用于Zabbix agent故障排錯(cuò),這里需要注意的是,此命令只能用于被動(dòng)模式檢測。
1.5 Zabbix專業(yè)術(shù)語
在開始學(xué)習(xí)Zabbix之前,我希望大家能花點(diǎn)時(shí)間看一下Zabbix術(shù)語,因?yàn)檫@些術(shù)語也是Zabbix重要的概念組成部分。
1.主機(jī)(host)
主機(jī)是指需要監(jiān)視的服務(wù)器或網(wǎng)絡(luò)設(shè)備等類型對(duì)象,在Zabbix的概念當(dāng)中,一切監(jiān)控設(shè)備都通過主機(jī)來實(shí)現(xiàn),需要具有IP或DNS。
2.主機(jī)組(host group)
主機(jī)組是主機(jī)的邏輯分組,可以包含主機(jī)和模板。主機(jī)組中的主機(jī)和模板不會(huì)以任何方式相互鏈接。通過主機(jī)組可以為不同的用戶組分配主機(jī)的訪問權(quán)限。
3.監(jiān)控項(xiàng)(item)
監(jiān)控項(xiàng)用來從主機(jī)上接收特定的指標(biāo)數(shù)據(jù),數(shù)據(jù)分為5種類型:數(shù)字(無正負(fù))、數(shù)字(浮點(diǎn)數(shù))、字符、日志、文本。
注意:如果所需的數(shù)字有可能是負(fù)數(shù)的話,則要選擇數(shù)字(浮點(diǎn)數(shù))。
4.值預(yù)處理(value preprocessing)
在數(shù)據(jù)被保存到數(shù)據(jù)庫之前,要對(duì)接收的指標(biāo)數(shù)據(jù)進(jìn)行轉(zhuǎn)換,這就是值預(yù)處理。目前,值預(yù)處理可以直接在Zabbix proxy上進(jìn)行。詳細(xì)用法會(huì)在后續(xù)章節(jié)講解。
5.觸發(fā)器(trigger)
監(jiān)控項(xiàng)只收集數(shù)據(jù),為了自動(dòng)判斷傳入的數(shù)據(jù),需要定義觸發(fā)器。
觸發(fā)器包含一個(gè)表達(dá)式,通過表達(dá)式定義觸發(fā)問題的閾值。當(dāng)接收的數(shù)據(jù)超過閾值時(shí),觸發(fā)器從“OK”狀態(tài)進(jìn)入“Problem”狀態(tài);當(dāng)接收的數(shù)據(jù)低于閾值時(shí),觸發(fā)器保持或返回“OK”狀態(tài)。
6.事件(event)
事件是指發(fā)生的需要關(guān)注的事件,如觸發(fā)器狀態(tài)改變、自動(dòng)發(fā)現(xiàn)/監(jiān)控代理自動(dòng)注冊(cè)。
7.事件標(biāo)簽(event tag)
事件標(biāo)簽是提前設(shè)置的事件標(biāo)記,可以用于事件關(guān)聯(lián)、權(quán)限細(xì)化設(shè)置等。
8.事件關(guān)聯(lián)(event correlation)
事件關(guān)聯(lián)是一種靈活的、準(zhǔn)確的解決問題的方法。
例如,自定義一個(gè)觸發(fā)器A報(bào)告的問題可以由另一個(gè)觸發(fā)器B解決,觸發(fā)器B甚至可以使用不同的數(shù)據(jù)收集方法。
9.異常(problem)
異常是指監(jiān)控項(xiàng)處于“異?!睜顟B(tài)的觸發(fā)器。
10.異常更新(problem update)
異常更新是Zabbix提供的異常管理選項(xiàng),如添加評(píng)論、確認(rèn)異常、改變嚴(yán)重級(jí)別或手動(dòng)關(guān)閉等。
11.動(dòng)作(action)
動(dòng)作是指預(yù)先定義的應(yīng)對(duì)事件的動(dòng)作。一個(gè)動(dòng)作由操作(如發(fā)出通知)和條件(何時(shí)進(jìn)行操作)組成。
12.動(dòng)作升級(jí)(escalation)
動(dòng)作升級(jí)是指用戶自定義的一個(gè)在動(dòng)作(action)內(nèi)執(zhí)行操作的場景,是發(fā)送通知/執(zhí)行遠(yuǎn)程命令的序列。
13.媒介(media)
媒介是指Zabbix發(fā)送告警通知的方式、途徑。
14.通知(notification)
通知的作用是通過預(yù)先設(shè)定好的媒介途徑發(fā)送事件信息給用戶。
15.遠(yuǎn)程命令(remote command)
遠(yuǎn)程命令是預(yù)定義好的,在滿足特定條件的情況下,可以在被監(jiān)控主機(jī)上自動(dòng)執(zhí)行。
16.監(jiān)控模板(template)
監(jiān)控模板是應(yīng)用于一臺(tái)或多臺(tái)主機(jī)上的一套實(shí)體組合(如監(jiān)控項(xiàng)、觸發(fā)器、圖形、聚合圖形、應(yīng)用、LLD、Web場景等)。
監(jiān)控模板的應(yīng)用使得主機(jī)上的監(jiān)控任務(wù)部署快捷方便,也使得監(jiān)控任務(wù)進(jìn)行批量修改更加簡單。監(jiān)控模板直接關(guān)聯(lián)到每臺(tái)單獨(dú)的主機(jī)上。
17.應(yīng)用(application)
應(yīng)用是監(jiān)控項(xiàng)的邏輯分組。
18.Web場景(web scenario)
Web場景是用來檢查B/S架構(gòu)Web應(yīng)用的可用性的一個(gè)或多個(gè)HTTP請(qǐng)求。
19.前端(frontend)
前端是指Zabbix提供的Web前端應(yīng)用。
20.儀表盤(dashboard)
在自定義的Web前端模塊儀表盤中,用于重要的概要和可視化信息展示的單元稱為組件(widget)。
21.儀表盤組件(widget)
儀表盤組件是儀表盤中用來展示某種信息和數(shù)據(jù)的可視化組件(如概覽、map、圖表、時(shí)鐘等)。
22.Zabbix API
Zabbix API允許用戶使用JSON RPC協(xié)議創(chuàng)建、更新和獲取Zabbix對(duì)象(如主機(jī)、監(jiān)控項(xiàng)、圖表等)信息或執(zhí)行任何其他自定義的任務(wù)。
23.Zabbix server
Zabbix server是Zabbix軟件的核心進(jìn)程,用來執(zhí)行監(jiān)控操作,與Zabbix proxy和Zabbix agent進(jìn)行交互、觸發(fā)器計(jì)算、發(fā)送告警通知。
24.Zabbix agent
Zabbix agent是部署在監(jiān)控對(duì)象上的進(jìn)程,能夠主動(dòng)監(jiān)控本地資源和應(yīng)用。
25.Zabbix proxy
Zabbix proxy是指代替Zabbix server采集數(shù)據(jù),從而分擔(dān)Zabbix server負(fù)載的進(jìn)程。
26.加密(encryption)
Zabbix組件之間的加密通信(Server、Proxy、Agent、zabbix_sender和zabbix_get工具)支持使用安全網(wǎng)絡(luò)傳輸協(xié)議(Transport Layer Security,TLS)。
27.網(wǎng)絡(luò)自動(dòng)發(fā)現(xiàn)(network discovery)
網(wǎng)絡(luò)自動(dòng)發(fā)現(xiàn)是指網(wǎng)絡(luò)設(shè)備的自動(dòng)發(fā)現(xiàn)。
28.低級(jí)發(fā)現(xiàn)(low-level discovery)
低級(jí)發(fā)現(xiàn)是指特定設(shè)備上低級(jí)別實(shí)體的自動(dòng)發(fā)現(xiàn),可以發(fā)現(xiàn)必要的實(shí)體(如文件系統(tǒng)、網(wǎng)絡(luò)接口等)。
29.低級(jí)發(fā)現(xiàn)規(guī)則(low level discovery rule)
為自動(dòng)發(fā)現(xiàn)設(shè)備中低級(jí)別實(shí)體設(shè)定的一系列規(guī)則稱為低級(jí)發(fā)現(xiàn)規(guī)則。
30.項(xiàng)目原型(item prototype)
項(xiàng)目原型是指有特定變量的指標(biāo),用于自動(dòng)發(fā)現(xiàn)。低級(jí)別自動(dòng)發(fā)現(xiàn)執(zhí)行后,該變量將被實(shí)際自動(dòng)發(fā)現(xiàn)的參數(shù)替換,該指標(biāo)也自動(dòng)開始采集數(shù)據(jù)。
31.觸發(fā)器原型(trigger prototype)
觸發(fā)器原型是有特定參數(shù)作為變量的觸發(fā)器,用于自動(dòng)發(fā)現(xiàn)。在自動(dòng)發(fā)現(xiàn)執(zhí)行后,該變量將被實(shí)際自動(dòng)發(fā)現(xiàn)的參數(shù)替換,該觸發(fā)器自動(dòng)開始計(jì)算數(shù)據(jù)。
還有一些其他的Zabbix實(shí)體原型也被用于自動(dòng)發(fā)現(xiàn)中,如圖表原型、主機(jī)原型、主機(jī)組原型、應(yīng)用原型。
32.自動(dòng)注冊(cè)(agent auto-registration)
自動(dòng)注冊(cè)是指Zabbix agent自動(dòng)注冊(cè)為一臺(tái)主機(jī)且開始監(jiān)控的自動(dòng)執(zhí)行進(jìn)程。
1.6 Zabbix版本及發(fā)布周期
前面已經(jīng)大概解釋過Zabbix的各種專業(yè)術(shù)語,接下來解釋一下Zabbix SIA公司關(guān)于Zabbix軟件新版本發(fā)布的政策,并概述Zabbix早期版本的支持服務(wù)的時(shí)限。因?yàn)楹芏郱abbix初學(xué)者剛開始問的最多的一個(gè)問題就是“我應(yīng)該選擇哪個(gè)Zabbix版本進(jìn)行安裝呢?”
多年來,為了確保Zabbix為其用戶和客戶提供質(zhì)量符合預(yù)期的產(chǎn)品與計(jì)劃性的支持,每個(gè)新的Zabbix軟件版本發(fā)布都遵循產(chǎn)品周期和到期時(shí)間的標(biāo)準(zhǔn)。對(duì)Zabbix終端用戶來說,Zabbix的產(chǎn)品周期使新版本的內(nèi)容更具可預(yù)測性和可管理性。
自2001年Zabbix軟件首次發(fā)布開始,新的穩(wěn)定版本每一年半發(fā)布一次,對(duì)于所有標(biāo)準(zhǔn)版本,Zabbix客戶都將獲得為期5年的服務(wù)與支持,可以根據(jù)表1-1查看當(dāng)前Zabbix版本的支持服務(wù)及期限。
表1-1
注:1.全面支持服務(wù)包括修復(fù)一些基礎(chǔ)的、緊急的及安全性上的問題。
2.最低限度支持服務(wù)僅包括修復(fù)緊急的和安全性上的問題,Zabbix不保證對(duì)任何舊版本和不穩(wěn)定版本的任意源代碼的修復(fù)。
1.6.1 Zabbix發(fā)布計(jì)劃
自從第一個(gè)穩(wěn)定版本1.0發(fā)布以來,Zabbix版本控制使用小版本號(hào)來表示主要版本。每個(gè)小版本實(shí)際上實(shí)現(xiàn)了許多新特性,而變更級(jí)別的版本主要引入了錯(cuò)誤修復(fù)。
Zabbix版本編號(hào)方案隨著時(shí)間的推移而改變。雖然最初的兩個(gè)穩(wěn)定分支是1.0和1.1,但是在1.1版本之后,決定在開發(fā)版本中使用奇數(shù),在標(biāo)準(zhǔn)版本中使用偶數(shù)。因此,1.3在1.1之后作為開發(fā)更新版本發(fā)布,標(biāo)準(zhǔn)版本為1.4。
目前,Zabbix的產(chǎn)品發(fā)布計(jì)劃周期為6個(gè)月,每6個(gè)月將有一個(gè)新的Zabbix標(biāo)準(zhǔn)版本發(fā)布。從發(fā)布計(jì)劃(見圖1-6)中可以看到,LTS release X就相當(dāng)于5.0版本,每1年X加1,即下一個(gè)LTS版本為6.0版本。1年當(dāng)中,每間隔6個(gè)月發(fā)布一個(gè)當(dāng)前版本的X.2標(biāo)準(zhǔn)版本,即1年會(huì)發(fā)布兩個(gè)標(biāo)準(zhǔn)版本,如5.2、5.4。每個(gè)標(biāo)準(zhǔn)版本的支持期限為6個(gè)月。
圖1-6
總結(jié)一下:每一年半Zabbix將會(huì)發(fā)布的版本。
(1)Zabbix標(biāo)準(zhǔn)版本發(fā)布。Zabbix標(biāo)準(zhǔn)版本將在全面支持(基礎(chǔ)的、緊急的及安全性上的問題)的6個(gè)月內(nèi)為Zabbix用戶提供支持服務(wù),如圖1-7所示,直到下一個(gè)Zabbix穩(wěn)定版本發(fā)布,再加一個(gè)月的最低限度支持(僅限緊急的和安全性上的問題)。Zabbix標(biāo)準(zhǔn)版本將會(huì)導(dǎo)致第二個(gè)版本號(hào)的變動(dòng)。
(2)Zabbix LTS(長期支持版本)發(fā)布。Zabbix LTS在5年內(nèi)為Zabbix用戶提供支持服務(wù),如圖1-8所示,包括3年的全面支持(基礎(chǔ)的、緊急的及安全性上的問題)和2年的最低限度支持(僅限緊急的和安全性上的問題)。Zabbix LTS的發(fā)布將體現(xiàn)在版本號(hào)第一位數(shù)字的變動(dòng)上。
注意:當(dāng)任何Zabbix版本的生命周期到期后,Zabbix都將會(huì)停止對(duì)該版本進(jìn)行進(jìn)一步的維護(hù)更新,包括Blocker級(jí)和Cribical級(jí)的漏洞修復(fù)。因此,我們強(qiáng)烈建議用戶將Zabbix監(jiān)控解決方案升級(jí)到最新版本。
圖1-7
圖1-8
1.6.2 關(guān)于Zabbix LTS
LTS代表長期支持版本。Zabbix LTS每一年半發(fā)布一次,且為Zabbix客戶提供5年的支持服務(wù)。
(1)3年全面支持:支持修復(fù)基礎(chǔ)的、緊急的及安全性上的問題。
(2)2年最低限度支持:僅限支持修復(fù)緊急的和安全性上的問題。
Zabbix LTS沒有任何額外的或隱藏的消費(fèi)成本。Zabbix是一個(gè)100%的開源軟件,每個(gè)人都可以下載使用。
Zabbix LTS的特點(diǎn)如下。
(1)支持期限更長,如為潛在的安全問題及漏洞進(jìn)行迭代更新。
(2)令人期待的高質(zhì)量更新及全新的功能點(diǎn)。
(3)快速更新,可適用于多變的復(fù)雜環(huán)境。
(4)在版本升級(jí)方面,更容易規(guī)劃管理。
Zabbix LTS相較于標(biāo)準(zhǔn)版本的優(yōu)勢如下。
(1)更適合大型企業(yè)環(huán)境。
LTS:新的Zabbix LTS每一年半發(fā)布一次。
標(biāo)準(zhǔn)版本:新的標(biāo)準(zhǔn)版本每6個(gè)月發(fā)布一次,意味著企業(yè)需要每半年進(jìn)行一次升級(jí),這對(duì)大型商業(yè)IT基礎(chǔ)設(shè)施來說會(huì)產(chǎn)生一些不可預(yù)計(jì)的問題。
(2)官方支持。
LTS:總計(jì)支持5年,包括3年基礎(chǔ)的、緊急的和安全性上的問題修復(fù)(全面支持),以及2年僅緊急的和安全性上的問題修復(fù)(最低限度支持)。
標(biāo)準(zhǔn)版本:新的標(biāo)準(zhǔn)版本每6個(gè)月發(fā)布一次,意味著企業(yè)需要每半年進(jìn)行一次升級(jí)。
(3)更多測試驗(yàn)證。
LTS:由于對(duì)緊急的和安全性上的問題的長期支持,Zabbix LTS更加穩(wěn)定且可靠。
標(biāo)準(zhǔn)版本:Zabbix標(biāo)準(zhǔn)版本在完全穩(wěn)定且安全之前不會(huì)停止測試,但由于其更頻繁的發(fā)布頻率和更短的支持時(shí)間,Zabbix標(biāo)準(zhǔn)版本用于問題修復(fù)的時(shí)間更短。
Zabbix LTS相較于標(biāo)準(zhǔn)版本的劣勢為無法更早體驗(yàn)新功能。
LTS:Zabbix LTS每一年半發(fā)布一次,因此,如果客戶正在監(jiān)控大型企業(yè)環(huán)境,那么僅升級(jí)到Zabbix LTS是最適合的方式,但是此時(shí)需要等待一年半的時(shí)間才能訪問使用此期間開發(fā)的功能。
標(biāo)準(zhǔn)版本:由于Zabbix標(biāo)準(zhǔn)版本的發(fā)布周期為6個(gè)月,所以客戶可以每6個(gè)月就體驗(yàn)到最開發(fā)的新功能。
1.7 Zabbix版本兼容性
1.7.1 支持的Zabbix agent
從1.4版本開始,Zabbix agent與Zabbix 5.0兼容。但是,用戶可能需要檢查舊Zabbix agent的配置文件,因?yàn)榭赡軙?huì)有一些參數(shù)的變動(dòng),如3.0以前版本的日志相關(guān)的參數(shù)與之前的不同。
想嘗試新的功能和改進(jìn)的監(jiān)控項(xiàng)、性能,以及更小的內(nèi)存使用,請(qǐng)使用最新的Zabbix 5.0 agent。
注意:更新于5.0的Zabbix agent不能與Zabbix server 5.0一起使用。
1.7.2 支持的Zabbix proxies
Zabbix 5.0 proxies只支持與Zabbix 5.0 server一起工作。
這里值得注意一下,當(dāng)升級(jí)完Zabbix server后,尚未升級(jí)的Zabbix proxies無法向Zabbix server發(fā)送監(jiān)控?cái)?shù)據(jù)(Zabbix proxy無法刷新其配置)。Zabbix官方之前不推薦使用低版本Zabbix proxy向高版本Zabbix server發(fā)送監(jiān)控?cái)?shù)據(jù),現(xiàn)在官方正式禁用低版本Zabbix proxy向高版本Zabbix server發(fā)送監(jiān)控?cái)?shù)據(jù),Zabbix server將忽略未升級(jí)的Zabbix proxy。
1.7.3 支持的XML文件
Zabbix 5.0支持使用版本號(hào)為1.8、2.0、2.2、2.4、3.0、3.2、3.4、4.0、4.2和4.4的Zabbix導(dǎo)出的XML文件導(dǎo)入。
在Zabbix 1.8 XML導(dǎo)出格式中,觸發(fā)器依賴項(xiàng)僅按名稱存儲(chǔ)。如果有幾個(gè)具有相同名稱(如具有不同的嚴(yán)重性和表達(dá)式)且在它們之間定義了依賴關(guān)系的觸發(fā)器,則不可能被導(dǎo)入,必須手動(dòng)從XML文件中刪除這些依賴項(xiàng),并在導(dǎo)入后重新添加。