在我們?nèi)粘5墓ぷ髦?,有時(shí)候需要監(jiān)控和管理平臺(tái)的運(yùn)行狀況,而服務(wù)運(yùn)行是否存在異常,是否有軟硬件bug等,均需要第一時(shí)間知道。對(duì)服務(wù)狀態(tài)了如指掌,是一個(gè)很重要的事情。那么這個(gè)如何做到呢,我們之前在進(jìn)行私有云平臺(tái)研發(fā)過程中,曾經(jīng)用過一些工具,在一定程度上能幫到大家,這里記錄一下,希望對(duì)有需要的同學(xué)有幫助。
一些常見的監(jiān)控、告警工具:Nagios 、 ganglia、zabbix、onealert
一.Nagios:
Nagios是一款開源的免費(fèi)網(wǎng)絡(luò)監(jiān)視工具,能有效監(jiān)控Windows、Linux和Unix的主機(jī)狀態(tài),交換機(jī)路由器等網(wǎng)絡(luò)設(shè)置,打印機(jī)等。在系統(tǒng)或服務(wù)狀態(tài)異常時(shí)發(fā)出郵件或短信報(bào)警第一時(shí)間通知網(wǎng)站運(yùn)維人員,在狀態(tài)恢復(fù)后發(fā)出正常的郵件或短信通知。
功能介紹:
Nagios 可以監(jiān)控的功能有:
1、監(jiān)控網(wǎng)絡(luò)服務(wù)(SMTP、POP3、HTTP、NNTP、PING等);
2、監(jiān)控主機(jī)資源(處理器負(fù)荷、磁盤利用率等);
3、簡(jiǎn)單地插件設(shè)計(jì)使得用戶可以方便地?cái)U(kuò)展自己服務(wù)的檢測(cè)方法;
4、并行服務(wù)檢查機(jī)制;
5、具備定義網(wǎng)絡(luò)分層結(jié)構(gòu)的能力,用'parent'主機(jī)定義來表達(dá)網(wǎng)絡(luò)主機(jī)間的關(guān)系,這種關(guān)系可被用來發(fā)現(xiàn)和明晰主機(jī)宕機(jī)或不可達(dá)狀態(tài);
6、當(dāng)服務(wù)或主機(jī)問題產(chǎn)生與解決時(shí)將告警發(fā)送給聯(lián)系人(通過EMail、短信、用戶定義方式);
7、具備定義事件句柄功能,它可以在主機(jī)或服務(wù)的事件發(fā)生時(shí)獲取更多問題定位;
8、自動(dòng)的日志回滾;
9、可以支持并實(shí)現(xiàn)對(duì)主機(jī)的冗余監(jiān)控;
10、可選的WEB界面用于查看當(dāng)前的網(wǎng)絡(luò)狀態(tài)、通知和故障歷史、日志文件等;
二.Ganglia:
Ganglia是UC Berkeley發(fā)起的一個(gè)開源集群監(jiān)視項(xiàng)目,設(shè)計(jì)用于測(cè)量數(shù)以千計(jì)的節(jié)點(diǎn)。Ganglia的核心包含gmond、gmetad以及一個(gè)Web前端。主要是用來監(jiān)控系統(tǒng)性能,如:cpu 、mem、硬盤利用率, I/O負(fù)載、網(wǎng)絡(luò)流量情況等,通過曲線很容易見到每個(gè)節(jié)點(diǎn)的工作狀態(tài),對(duì)合理調(diào)整、分配系統(tǒng)資源,提高系統(tǒng)整體性能起到重要作用。
大致介紹:
每臺(tái)計(jì)算機(jī)都運(yùn)行一個(gè)收集和發(fā)送度量數(shù)據(jù)的名為 gmond 的守護(hù)進(jìn)程。接收所有度量數(shù)據(jù)的主機(jī)可以顯示這些數(shù)據(jù)并且可以將這些數(shù)據(jù)的精簡(jiǎn)表單傳遞到層次結(jié)構(gòu)中。正因?yàn)橛羞@種層次結(jié)構(gòu)模式,才使得 Ganglia 可以實(shí)現(xiàn)良好的擴(kuò)展。gmond 帶來的系統(tǒng)負(fù)載非常少,這使得它成為在集群中各臺(tái)計(jì)算機(jī)上運(yùn)行的一段代碼,而不會(huì)影響用戶性能。所有這些數(shù)據(jù)多次收集會(huì)影響節(jié)點(diǎn)性能。網(wǎng)絡(luò)中的 '抖動(dòng)'發(fā)生在大量小消息同時(shí)出現(xiàn)時(shí),可以通過將節(jié)點(diǎn)時(shí)鐘保持一致,來避免這個(gè)問題。
gmetad可以部署在集群內(nèi)任一臺(tái)節(jié)點(diǎn)或者通過網(wǎng)絡(luò)連接到集群的獨(dú)立主機(jī),它通過單播路由的方式與gmond通信,收集區(qū)域內(nèi)節(jié)點(diǎn)的狀態(tài)信息,并以XML數(shù)據(jù)的形式,保存在數(shù)據(jù)庫(kù)中。
由RRDTool工具處理數(shù)據(jù),并生成相應(yīng)的的圖形顯示,以Web方式直觀的提供給客戶端。
Ganglia包括如下幾個(gè)程序,他們之間通過XDR(xml的壓縮格式)或者XML格式傳遞監(jiān)控?cái)?shù)據(jù),達(dá)到監(jiān)控效果。集群內(nèi)的節(jié)點(diǎn),通過運(yùn)行g(shù)mond收集發(fā)布節(jié)點(diǎn)狀態(tài)信息,然后gmetad周期性的輪詢gmond收集到的信息,然后存入rrd數(shù)據(jù)庫(kù),通過web服務(wù)器可以對(duì)其進(jìn)行查詢展示。
三.zabbix:
zabbix(音同 z?bix)是一個(gè)基于WEB界面的提供分布式系統(tǒng)監(jiān)視以及網(wǎng)絡(luò)監(jiān)視功能的企業(yè)級(jí)的開源解決方案。
zabbix能監(jiān)視各種網(wǎng)絡(luò)參數(shù),保證服務(wù)器系統(tǒng)的安全運(yùn)營(yíng);并提供靈活的通知機(jī)制以讓系統(tǒng)管理員快速定位/解決存在的各種問題。
zabbix由2部分構(gòu)成,zabbix server與可選組件zabbix agent。
zabbix server可以通過SNMP,zabbix agent,ping,端口監(jiān)視等方法提供對(duì)遠(yuǎn)程服務(wù)器/網(wǎng)絡(luò)狀態(tài)的監(jiān)視,數(shù)據(jù)收集等功能,它可以運(yùn)行在Linux,Solaris,HP-UX,AIX,F(xiàn)ree BSD,Open BSD,OS X等平臺(tái)上。
zabbix agent需要安裝在被監(jiān)視的目標(biāo)服務(wù)器上,它主要完成對(duì)硬件信息或與操作系統(tǒng)有關(guān)的內(nèi)存,CPU等信息的收集。zabbix agent可以運(yùn)行在Linux,Solaris,HP-UX,AIX,Free BSD,Open BSD, OS X, Tru64/OSF1, Windows NT4.0, Windows (2000/2003/XP/Vista)等系統(tǒng)之上。
zabbix server可以單獨(dú)監(jiān)視遠(yuǎn)程服務(wù)器的服務(wù)狀態(tài);同時(shí)也可以與zabbix agent配合,可以輪詢zabbix agent主動(dòng)接收監(jiān)視數(shù)據(jù)(agent方式),同時(shí)還可被動(dòng)接收zabbix agent發(fā)送的數(shù)據(jù)(trapping方式)。
另外zabbix server還支持SNMP (v1,v2),可以與SNMP軟件(例如:net-snmp)等配合使用。
zabbix環(huán)境搭建:
要想搭建一個(gè)Zabbix的工作環(huán)境,需要從服務(wù)器入手。與服務(wù)器通信,管理員需要使用一個(gè)Zabbix前端界面,與Zabbix服務(wù)器和數(shù)據(jù)庫(kù)進(jìn)行通信。三個(gè)關(guān)鍵(界面、服務(wù)器和數(shù)據(jù)庫(kù))可以安裝在同一臺(tái)服務(wù)器上,但是如果你擁有一個(gè)更大更復(fù)雜的環(huán)境,將它們安裝在不同的主機(jī)上也是一個(gè)選項(xiàng)。Zabbix服務(wù)器能夠直接監(jiān)控到同一網(wǎng)絡(luò)中的設(shè)備,如果其他網(wǎng)絡(luò)的設(shè)備也需要被監(jiān)控,那還需要一臺(tái)Zabbix代理服務(wù)器。
關(guān)于zabbix的學(xué)習(xí),可以看看zabbix中文社區(qū): http://www.zabbix.org.cn/,這里面對(duì)于安裝配置以及常用的優(yōu)化等有較好的介紹。
zabbix的主要特點(diǎn):
- 安裝與配置簡(jiǎn)單,學(xué)習(xí)成本低
- 支持多語言(包括中文)
- 免費(fèi)開源
- 自動(dòng)發(fā)現(xiàn)服務(wù)器與網(wǎng)絡(luò)設(shè)備
- 分布式監(jiān)視以及WEB集中管理功能
- 可以無agent監(jiān)視
- 用戶安全認(rèn)證和柔軟的授權(quán)方式
- 通過WEB界面設(shè)置或查看監(jiān)視結(jié)果
- email等通知功能
等等
Zabbix主要功能:
- CPU負(fù)荷
- 內(nèi)存使用
-磁盤使用
- 網(wǎng)絡(luò)狀況
- 端口監(jiān)視
- 日志監(jiān)視。
四.onealert:
SaaS模式的云告警平臺(tái),目前支持Nagios報(bào)警、Zabbix報(bào)警 、Cacti報(bào)警、Solarwinds報(bào)警 、VmWare報(bào)警、阿里云報(bào)警、監(jiān)控寶報(bào)警等...
在所有開源監(jiān)控軟件里面,Zabbix 的告警方式無疑是最棒的。告警的方式各式各樣,從 Email 告警到飛信、139/189郵箱、最后到微信甚至電話告警,接入存在各種問題以及困難,有沒有什么軟件能夠?qū)⑺麄傾ll In one呢?
關(guān)于onealert的介紹,也可以看看這個(gè)文章:http://www.jianshu.com/p/88ed82372888
Zabbix傳統(tǒng)告警方法Email:調(diào)用 sendmail 、sendEmail 等腳本通過 SMTP 發(fā)送郵件
飛信:飛信已經(jīng)退出歷史舞臺(tái),不再有人使用
189/139:發(fā)送郵箱郵件至郵箱,郵箱將短信轉(zhuǎn)到用戶手機(jī)短信,存在一定的延遲
微信:需要申請(qǐng)一個(gè)微信公眾號(hào),并接入API,整個(gè)流程比較復(fù)雜,而且存在會(huì)話時(shí)間限制
短信:眾多短信網(wǎng)關(guān)收費(fèi)不同、穩(wěn)定性也不確定,需要通過API接入
傳統(tǒng)告警 VS OneAlert在整個(gè)使用過程中,得出了傳統(tǒng)告警方式的不足以及給個(gè)了 OneAlert 告警的功能,具體如下:
傳統(tǒng)告警方式的不足聯(lián)系客服