對(duì)于運(yùn)維人員來說,監(jiān)控是非常重要的,,因?yàn)槿绻胍WC線上業(yè)務(wù)整體能夠穩(wěn)定運(yùn)行,,那么我們則需要實(shí)時(shí)關(guān)注與其相關(guān)的各項(xiàng)指標(biāo)是否正常,而一個(gè)業(yè)務(wù)系統(tǒng)的背后,,往往存在著很多的服務(wù)器,、網(wǎng)絡(luò)設(shè)備等硬件資源,如果我們想要能夠更加方便的,、集中的監(jiān)控他們,,我們則需要依靠一些外部的工具,而zabbix就是一個(gè)被廣泛使用的,,可以實(shí)現(xiàn)集中監(jiān)控管理的應(yīng)用程序,。
我們監(jiān)控的初衷就是當(dāng)某些指標(biāo)不符合我們的需求時(shí),我們能夠在第一時(shí)間發(fā)現(xiàn)異常,,所以,,監(jiān)控工具需要定期的對(duì)被監(jiān)控主機(jī)進(jìn)行檢查、信息收集等操作,,當(dāng)被監(jiān)控主機(jī)出現(xiàn)異常時(shí),,能夠及時(shí)報(bào)警、通知管理員,并且需要記錄這些異常,,以便我們分析這些數(shù)據(jù),,查漏補(bǔ)缺,那么,,一個(gè)監(jiān)控工具就應(yīng)該具備采集信息,、存儲(chǔ)信息、展示信息,、報(bào)警通知等功能,,而zabbix就可以做到這些,除了zabbix,,你可能還聽說過cacti,、nagios、ganglia等類似的監(jiān)控系統(tǒng),,但是此處,,我們只聊zabbix,。
好了,,我們大概了解了一下zabbix,那么我們通過zabbix能夠監(jiān)控哪些硬件資源呢,,理論上來說,,只要是與我們的業(yè)務(wù)有關(guān)的硬件資源,都應(yīng)該被監(jiān)控,,比如 主機(jī),、交換機(jī)、路由器,、UPS等等,,但是,監(jiān)控它們的前提是能與它們進(jìn)行通訊,,那么問題來了,,由于硬件的不同,導(dǎo)致我們無法使用統(tǒng)一的方法去監(jiān)控他們,,這個(gè)時(shí)候,,就需要監(jiān)控程序有一定的通用性,或者說,,監(jiān)控程序需要能夠與多種硬件設(shè)備通訊,,才能滿足我們的監(jiān)控需求,舉個(gè)例子:如果被監(jiān)控的對(duì)象是一臺(tái)安裝了linux操作系統(tǒng)的服務(wù)器,,那么我們可以通過ssh或者telnet這種遠(yuǎn)程工具與被監(jiān)控對(duì)象建立起通訊的通道,,可是如果被監(jiān)控的對(duì)象是一臺(tái)安裝了其他操作系統(tǒng)的服務(wù)器呢,更甚之,被監(jiān)控的對(duì)象并不是服務(wù)器,,而只是一臺(tái)交換機(jī)或者路由器呢,,所以,zabbix如果想要能夠全面的監(jiān)控這些對(duì)象,,則需要能夠通過各種方法與它們進(jìn)行通訊,。
那么zabbix能夠支持哪些通訊方式呢,總結(jié)如下: agent:通過專用的代理程序進(jìn)行監(jiān)控,,與常見的master/agent模型類似,如果被監(jiān)控對(duì)象支持對(duì)應(yīng)的agent,,推薦首選這種方式。 ssh/telnet:通過遠(yuǎn)程控制協(xié)議進(jìn)行通訊,,比如ssh或者telnet,。 SNMP:通過SNMP協(xié)議與被監(jiān)控對(duì)象進(jìn)行通訊,SNMP協(xié)議的全稱為Simple Network Management Protocol ,被譯為 "簡單網(wǎng)絡(luò)管理協(xié)議",,通常來說,,我們無法在路由器、交換機(jī)這種硬件上安裝agent,,但是這些硬件往往都支持SNMP協(xié)議,,SNMP是一種比較久遠(yuǎn)的、通行的協(xié)議,,大部分網(wǎng)絡(luò)設(shè)備都支持這種協(xié)議,,其實(shí)SNMP協(xié)議的工作方式也可以理解為master/agent的工作方式,只不過是在這些設(shè)備中內(nèi)置了SNMP的agent而已,,所以,,大部分網(wǎng)絡(luò)設(shè)備都支持這種協(xié)議。 IPMI:通過IPMI接口進(jìn)行監(jiān)控,,我們可以通過標(biāo)準(zhǔn)的IPMI硬件接口,,監(jiān)控被監(jiān)控對(duì)象的物理特征,比如電壓,,溫度,,風(fēng)扇狀態(tài),電源狀態(tài)等,。 JMX:通過JMX進(jìn)行監(jiān)控,,JMX(Java Management Extensions,即Java管理擴(kuò)展),,監(jiān)控JVM虛擬機(jī)時(shí),,使用這種方法也是非常不錯(cuò)的選擇。
好了,,我們剛才提到了zabbix agent,,一般情況下,我們將zabbix agent部署到被監(jiān)控主機(jī)上,由agent采集數(shù)據(jù),,報(bào)告給負(fù)責(zé)監(jiān)控的中心主機(jī),,中心主機(jī)也就是master/agent模型中的master,負(fù)責(zé)監(jiān)控的中心主機(jī)被稱為zabbix server,,zabbix server將從agent端接收到的信息存儲(chǔ)于zabbix的數(shù)據(jù)庫中,,我們把zabbix的數(shù)據(jù)庫端稱為zabbix database, 如果管理員需要查看各種監(jiān)控信息,,則需要zabbix的GUI,,zabbix的GUI是一種Web GUI,我們稱之為zabbix web,,zabbix web是使用php編寫的,,所以,如果想要使用zabbix web展示相關(guān)監(jiān)控信息,,需要依賴LAMP環(huán)境,,不管是zabbix server ,或是zabbix web,,他們都需要連接到zabbix database獲取相關(guān)數(shù)據(jù),,這樣說可能不容易理解,對(duì)比下圖理解上述概念,,就容易許多
當(dāng)監(jiān)控規(guī)模變得龐大時(shí),,我們可能有成千上萬臺(tái)設(shè)備需要監(jiān)控,這時(shí)我們是否需要部署多套zabbix系統(tǒng)進(jìn)行監(jiān)控呢,?如果部署多套zabbix監(jiān)控系統(tǒng),那么監(jiān)控壓力將會(huì)被分?jǐn)?,但是,,這些監(jiān)控的對(duì)象將會(huì)被盡量平均的分配到不同的監(jiān)控系統(tǒng)中,這個(gè)時(shí)候,,我們就無法通過統(tǒng)一的監(jiān)控入口,,去監(jiān)控這些對(duì)象了,雖然分?jǐn)偭吮O(jiān)控壓力,,但是也增加了監(jiān)控工作的復(fù)雜度,,那么,我們到底該不該建立多套zabbix監(jiān)控系統(tǒng)從而分?jǐn)偩薮蟮谋O(jiān)控壓力呢,?其實(shí),,zabbix天生就有處理這種問題的能力,因?yàn)閦abbix支持分布式監(jiān)控,,我們可以把成千上萬臺(tái)的被監(jiān)控對(duì)象分成不同的區(qū)域,,每個(gè)區(qū)域中設(shè)置一臺(tái)代理主機(jī),區(qū)域內(nèi)的每個(gè)被監(jiān)控對(duì)象的信息被agent采集,提交給代理主機(jī),,在這個(gè)區(qū)域內(nèi),,代理主機(jī)的作用就好比zabbix server,我們稱這些代理主機(jī)為zabbix proxy,,zabbix proxy再將收集到的信息統(tǒng)一提交給真正的zabbix server處理,,這樣,zabbix proxy分?jǐn)偭藌abbix server的壓力,,同時(shí),,我們還能夠通過統(tǒng)一的監(jiān)控入口,監(jiān)控所有的對(duì)象,,當(dāng)監(jiān)控規(guī)模龐大到需要使用zabbix proxy時(shí),,zabbix的架構(gòu)如下圖,我們可以對(duì)比下圖,,理解上述描述,。 此處,我們?cè)侔褎偛耪f到的各種組件總結(jié)一遍: zabbix agent:部署在被監(jiān)控主機(jī)上,,負(fù)責(zé)被監(jiān)控主機(jī)的數(shù)據(jù),,并將數(shù)據(jù)發(fā)送給zabbix server。 zabbix server:負(fù)責(zé)接收agent發(fā)送的報(bào)告信息,,并且負(fù)責(zé)組織配置信息,、統(tǒng)計(jì)信息、操作數(shù)據(jù)等,。 zabbix database:用于存儲(chǔ)所有zabbix的配置信息,、監(jiān)控?cái)?shù)據(jù)的數(shù)據(jù)庫。 zabbix web:zabbix的web界面,,管理員通過web界面管理zabbix配置以及查看zabbix相關(guān)監(jiān)控信息,,可以單獨(dú)部署在獨(dú)立的服務(wù)器上。 zabbix proxy:可選組件,,用于分布式監(jiān)控環(huán)境中,,zabbix proxy代表server端,完成局部區(qū)域內(nèi)的信息收集,,最終統(tǒng)一發(fā)往server端,。
了解完了zabbix的幾個(gè)核心組件,我們?cè)賮砹牧膠abbix的工作模式,。 我們知道,,agent端會(huì)將采集完的數(shù)據(jù)主動(dòng)發(fā)送給server端,這種模式我們稱之為主動(dòng)模式,,即對(duì)于agent端來說是主動(dòng)的,。 其實(shí),,agent端也可以不主動(dòng)發(fā)送數(shù)據(jù),而是等待server過來拉取數(shù)據(jù),,這種模式我們稱之為被動(dòng)模式,。 聰明如你一定已經(jīng)明白,不管是主動(dòng)模式還是被動(dòng)模式,,都是對(duì)于agent端來說的,,而且,主動(dòng)模式與被動(dòng)模式可以同時(shí)存在,,并不沖突,。 管理員可以在agent端使用一個(gè)名為zabbix_sender的工具,測試是否能夠向server端發(fā)送數(shù)據(jù),。 管理員可以在server端使用一個(gè)名為zabbix_get的工具,,測試是否能夠從agent端拉取數(shù)據(jù)。
好了,,我們已經(jīng)了解了zabbix的一些基本概念,,其實(shí)zabbix還有很多常用術(shù)語,但是現(xiàn)在我們并沒有遇到實(shí)際的使用場景,,空口白話的描述顯得特別無力,,而且難以理解,我們就先不管它們了,,等到用到它們的時(shí)候,,我們?cè)僮鼋忉尅?/p>
下一篇文章中,我們會(huì)介紹如何安裝zabbix,,直達(dá)鏈接:zabbix從放棄到入門:zabbix安裝(zabbix2) |
|