周 雷
(中石化寧波工程有限公司,浙江 寧波 315103)
筆者從2008年開始研究監(jiān)控系統(tǒng),使用了Nagios開源軟件自己搭建了適用公司的網(wǎng)絡(luò)監(jiān)控系統(tǒng),通過監(jiān)控各種網(wǎng)絡(luò)服務(wù),比如SMTP、POP3、HTTP、NTP、ICMP、FTP、SSH等,監(jiān) 控 主機(jī)資源,比如CPU、磁盤使用、Syslog等,做到了公司300多臺(tái)網(wǎng)絡(luò)設(shè)備和服務(wù)器的監(jiān)控,為公司基礎(chǔ)設(shè)施的穩(wěn)定運(yùn)行提供了保障。但隨著公司網(wǎng)絡(luò)、服務(wù)器和應(yīng)用系統(tǒng)日益增長,網(wǎng)絡(luò)安全的要求日益提高,各系統(tǒng)的監(jiān)控需求變得越發(fā)復(fù)雜多樣,原有系統(tǒng)在功能和性能方面都存在局限性。通過研究新的監(jiān)控系統(tǒng),實(shí)現(xiàn)數(shù)據(jù)采集、數(shù)據(jù)存儲(chǔ)、數(shù)據(jù)分析、數(shù)據(jù)展示、監(jiān)控報(bào)警和報(bào)警處理的流程機(jī)制,保障業(yè)務(wù)及系統(tǒng)的安全性和連續(xù)性,達(dá)到減少運(yùn)維壓力、提高運(yùn)維效率的目的,初步實(shí)現(xiàn)監(jiān)控智能化。
Nightingale由多個(gè)組件構(gòu)成,包含:1.collector:即agent,可以采集機(jī)器常見指標(biāo),支持日志監(jiān)控,支持插件機(jī)制,支持業(yè)務(wù)通過接口直接上報(bào)數(shù)據(jù)。2.transfer:提供rpc接口接收collector上報(bào)的數(shù)據(jù),將數(shù)據(jù)轉(zhuǎn)發(fā)給多臺(tái)tsdb和多臺(tái)judge。3.tsdb:即原來的graph組件,用于存儲(chǔ)歷史數(shù)據(jù),支持配置為雙寫模式提升系統(tǒng)容災(zāi)能力,tsdb會(huì)把監(jiān)控?cái)?shù)據(jù)轉(zhuǎn)發(fā)一份給index。4.index:是索引模塊,替換原來的mysql方案,在內(nèi)存里構(gòu)建索引,便于后續(xù)數(shù)據(jù)檢索,性能大幅提升。5.judge:是告警引擎,從monapi(portal)同步監(jiān)控策略,然后對(duì)接收到的數(shù)據(jù)做告警判斷。6.monapi(alarm):從redis讀取judge生成的事件,進(jìn)行二次處理,補(bǔ)充一些元信息,生成告警消息,重新推回redis。各發(fā)送組件。7.數(shù)據(jù)庫:仍然使用mysql,主要存儲(chǔ)的內(nèi)容包括:用戶信息、團(tuán)隊(duì)信息、樹節(jié)點(diǎn)信息、告警策略、監(jiān)控大盤、屏蔽策略、采集策略、部分組件心跳信息等。
1.1 準(zhǔn)備好CentOS7,采取yum安裝即可。
1.2 修改redis和nginx配置:修改配置文件中的daemonize為yes,默認(rèn)端口為5379。
1.3 nginx配置:修改server內(nèi)容,包含n9e.monapi、n9e.index、n9e.transfer等。
1.4 mysql配置:初始化數(shù)據(jù)庫n9e_hbs.sql、n9e_mon.sql和n9e_uic.sql。
下載tar包,解壓編譯安裝。
克隆查看,在windows下編譯linux二進(jìn)制文件,將編譯后文件打包,然后解壓安裝并運(yùn)行。
metric是監(jiān)控指標(biāo)名稱,endpoint是監(jiān)控實(shí)體,tags是監(jiān)控?cái)?shù)據(jù)的屬性標(biāo)簽,step為監(jiān)控?cái)?shù)據(jù)的上報(bào)周期,value是監(jiān)控指標(biāo)的當(dāng)前值,timestamp是當(dāng)前時(shí)間戳,單位是秒。counterType字段表示指標(biāo)類型,支持GAUGE和COUNTER,如果不上報(bào)這個(gè)字段,默認(rèn)為GAUGE,如果上報(bào)的指標(biāo)是COUNTER類型,需要明確指定。
每一條策略都可以單獨(dú)配置告警接收人,策略可以直接綁定到服務(wù)樹節(jié)點(diǎn)上,節(jié)點(diǎn)下的所有機(jī)器都會(huì)繼承生效,如下:
策略名稱:描述這條策略的作用。
生效節(jié)點(diǎn):關(guān)聯(lián)的服務(wù)樹節(jié)點(diǎn),節(jié)點(diǎn)下所有機(jī)器都會(huì)應(yīng)用這條策略。
排除節(jié)點(diǎn):生效節(jié)點(diǎn)下面的部分子節(jié)點(diǎn)可能較為特殊需要排除,可以用此配置解決。
報(bào)警級(jí)別:分三級(jí),P1最嚴(yán)重,報(bào)警之后事件通過所有報(bào)警通道推送,P3不嚴(yán)重,只用部分通道。
統(tǒng)計(jì)周期:判斷報(bào)警的時(shí)候使用最近多長時(shí)間以內(nèi)的數(shù)據(jù)。
觸發(fā)條件:支持與條件,即兩個(gè)條件都滿足才報(bào)警。
Tag過濾:可以配置只生效監(jiān)控指標(biāo)的部分tag,或者排除部分tag。
執(zhí)行動(dòng)作:配置報(bào)警收斂策略和報(bào)警接收人,也支持配置回調(diào),與自動(dòng)化邏輯打通。
留觀時(shí)長:報(bào)警恢復(fù)后持續(xù)觀察多少秒,稱為留觀時(shí)長,未再觸發(fā)閾值才發(fā)送恢復(fù)通知。
靜默恢復(fù):即只發(fā)送告警消息,不發(fā)送恢復(fù)通知,默認(rèn)會(huì)發(fā)送,即不開啟靜默恢復(fù)。
生效時(shí)間:即策略生效時(shí)間,默認(rèn)7*24生效,可以配置只生效部分時(shí)間段。
建立服務(wù)器對(duì)象樹,分別建立各應(yīng)用系統(tǒng)主機(jī),完成后可以在主機(jī)列表里看到被監(jiān)控主機(jī),如果Agent狀態(tài)正常,會(huì)在監(jiān)控看圖中看到最新的主機(jī)信息,如:CPU、內(nèi)存、硬盤等,在監(jiān)控大盤中創(chuàng)建新的大盤,一張圖中顯示多個(gè)監(jiān)控指標(biāo)。
主機(jī)建立好之后,可在監(jiān)控欄進(jìn)程中建立proc.num(進(jìn)程開關(guān)監(jiān)控)和proc.port.listen(端口開關(guān)監(jiān)控),從某業(yè)務(wù)系統(tǒng)A的443和80端口的監(jiān)控圖,可看到,正常狀態(tài)下,監(jiān)控值為1。
3.1 報(bào)警策略:根據(jù)監(jiān)控策略可設(shè)置監(jiān)控參數(shù)的相應(yīng)閾值,包括生效節(jié)點(diǎn)、觸發(fā)條件、級(jí)別、統(tǒng)計(jì)周期和執(zhí)行動(dòng)作等。
3.2 報(bào)警展示:根據(jù)報(bào)警策略,相關(guān)人收到報(bào)警信息相關(guān)郵件。
通過此次的部署與實(shí)踐,基本掌握了Nightingale的原理和基本功能,但對(duì)數(shù)據(jù)可視化展示(結(jié)合grafanna)、二次開發(fā)、高可用性(HA)等功能還未涉及。希望在日后工作運(yùn)維中,根據(jù)實(shí)際生產(chǎn)需求,不斷完善平臺(tái)功能。