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