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