国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

研究生信息平臺中運(yùn)維系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

2017-09-22 09:28史兵夏帆宋樹彬肖李敏董啟文周傲英徐林昊
關(guān)鍵詞:研究生院日志子系統(tǒng)

史兵,夏帆,宋樹彬,肖李敏,董啟文,周傲英,徐林昊

(1.華東師范大學(xué)數(shù)據(jù)科學(xué)與工程學(xué)院,上海200062;2.華東師范大學(xué)研究生院,上海200062; 3.印孚瑟斯技術(shù)中國有限公司,上海200135)

研究生信息平臺中運(yùn)維系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

史兵1,夏帆1,宋樹彬2,肖李敏2,董啟文1,周傲英1,徐林昊3

(1.華東師范大學(xué)數(shù)據(jù)科學(xué)與工程學(xué)院,上海200062;2.華東師范大學(xué)研究生院,上海200062; 3.印孚瑟斯技術(shù)中國有限公司,上海200135)

現(xiàn)代軟件系統(tǒng)大多采用基于日志收集與分析的運(yùn)維模式,幫助系統(tǒng)管理人員確保業(yè)務(wù)系統(tǒng)的安全性與穩(wěn)定性.本文首先討論了現(xiàn)有基于日志分析的運(yùn)維方案.接下來,基于開源的ELK框架,設(shè)計(jì)了華東師范大學(xué)研究生院信息平臺中的運(yùn)維子系統(tǒng).通過實(shí)時(shí)交互可視化的數(shù)據(jù)分析方式,有效地解決了研究生院業(yè)務(wù)人員在系統(tǒng)使用中遇到的性能與負(fù)載監(jiān)控,用戶行為分析以及服務(wù)異常調(diào)試等方面的問題.最后針對不同類型的業(yè)務(wù)運(yùn)維場景,給出了基于交互式儀表盤的運(yùn)維服務(wù)實(shí)現(xiàn).

運(yùn)維;日志;數(shù)據(jù)分析

0 引言

華東師范大學(xué)(簡稱華東師大)現(xiàn)有的研究生院信息系統(tǒng)從2005年開始分三期歷時(shí)6年研發(fā)完成,具體包括招生、學(xué)籍、培養(yǎng)和學(xué)位四個(gè)子系統(tǒng).從系統(tǒng)開發(fā)初期到2017年,研究生在校人數(shù)增長明顯,同時(shí)專業(yè)學(xué)位的種類也更加豐富,使得系統(tǒng)的業(yè)務(wù)量不斷擴(kuò)大.并且,當(dāng)全部系統(tǒng)最終交付的時(shí)候,很多研究生管理制度已經(jīng)發(fā)生了較大的變化,使得目前的研究生院信息系統(tǒng)已經(jīng)無法有效地對研究生信息進(jìn)行管理,不能滿足不斷出現(xiàn)的新需求.

另一方面,由于系統(tǒng)開發(fā)時(shí)間較早,使用的技術(shù)框架比較落后,存在系統(tǒng)響應(yīng)速度慢,瀏覽器兼容性差等問題.為了解決目前研究生院信息系統(tǒng)的不足之處,華東師大啟動了新一代信息平臺的開發(fā).新的系統(tǒng)采用自主研發(fā)模式,與印孚瑟斯技術(shù)中國有限公司合作開發(fā),旨在基于新的技術(shù)理念,滿足新的業(yè)務(wù)需求,同時(shí)系統(tǒng)設(shè)計(jì)需要具有一定的靈活性以滿足可能出現(xiàn)的業(yè)務(wù)流變更.在新信息平臺的第一期項(xiàng)目研發(fā)過程中,研發(fā)團(tuán)隊(duì)以學(xué)籍業(yè)務(wù)為切入點(diǎn),目標(biāo)為利用成熟的主流開源軟件框架打造信息平臺的基礎(chǔ)設(shè)施,為后續(xù)業(yè)務(wù)子系統(tǒng)的開發(fā)做充分的技術(shù)準(zhǔn)備.

與傳統(tǒng)的管理信息系統(tǒng)不同,基于現(xiàn)代互聯(lián)網(wǎng)公司采用的開發(fā)運(yùn)維理念,項(xiàng)目研發(fā)團(tuán)隊(duì)在下一代信息平臺中引入了一個(gè)輕量級的運(yùn)維子系統(tǒng).主要原因如下:第一,伴隨著大規(guī)模分布式計(jì)算技術(shù)的迅猛成長(如大型數(shù)據(jù)中心和軟件即服務(wù)),基于日志采集和分析的運(yùn)維框架與技術(shù)逐步發(fā)展成熟[1],被廣泛地應(yīng)用于如個(gè)性化推薦,計(jì)算廣告以及反欺詐行為檢測等業(yè)務(wù)領(lǐng)域.第二,隨著在校研究生人數(shù)的大幅增長以及管理業(yè)務(wù)向基于移動端的技術(shù)方向發(fā)展,很多高校都在積極嘗試如何將大數(shù)據(jù)技術(shù)中諸如服務(wù)動態(tài)水平擴(kuò)展與用戶行為分析[2]等技術(shù)應(yīng)用于下一代管理信息系統(tǒng)中,旨在為學(xué)生與教職工提供更好的個(gè)性化服務(wù)[3].第三,高校的信息辦雖然使用了商業(yè)運(yùn)維工具,但主要用于管理高校信息化所使用的集群資源,并不針對某個(gè)特定的業(yè)務(wù)系統(tǒng)提供定制化的運(yùn)維服務(wù)[4],如監(jiān)控研究生院信息系統(tǒng)的負(fù)載狀況.第四,通過收集與分析不同維度和業(yè)務(wù)場景的日志信息,不僅可以實(shí)現(xiàn)性能與負(fù)載實(shí)時(shí)監(jiān)控,追蹤用戶訪問服務(wù)的行為模式,發(fā)現(xiàn)服務(wù)異常并幫助研發(fā)團(tuán)隊(duì)快速準(zhǔn)確地定位問題根源,而且還可以基于不同業(yè)務(wù)場景下的日志分析結(jié)果來不斷地優(yōu)化業(yè)務(wù)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn),從而確保新信息平臺能夠有效地支持面向移動端的業(yè)務(wù)需求和系統(tǒng)持續(xù)運(yùn)行的穩(wěn)定性.

本文主要貢獻(xiàn)如下:

第一,不同于傳統(tǒng)的管理信息系統(tǒng),在華東師大下一代研究生院信息系統(tǒng)的設(shè)計(jì)中引入了基于日志采集與分析的運(yùn)維理念和技術(shù),不僅確保運(yùn)維系統(tǒng)與業(yè)務(wù)系統(tǒng)之間的相互獨(dú)立開發(fā)與部署,而且還能通過分析日志信息達(dá)到不斷地優(yōu)化系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)的長遠(yuǎn)目標(biāo).

第二,基于開源的ELK框架,針對不同維度與業(yè)務(wù)場景的運(yùn)維需求[5],設(shè)計(jì)并實(shí)現(xiàn)了一種輕量級的運(yùn)維子系統(tǒng),通過定義日志抽取規(guī)則和交互可視化的儀表盤實(shí)現(xiàn)了信息平臺所需的運(yùn)維服務(wù).

第三,實(shí)踐證明,通過運(yùn)維子系統(tǒng)提供的各種數(shù)據(jù)分析指標(biāo),研究生院的系統(tǒng)管理人員可以根據(jù)實(shí)際負(fù)載狀況動態(tài)調(diào)整系統(tǒng)所需的各種資源,以及通過追蹤用戶訪問行為并結(jié)合業(yè)務(wù)需求,達(dá)到不斷改進(jìn)完善業(yè)務(wù)系統(tǒng)的目標(biāo).

1 相關(guān)工作

日志收集與分析是運(yùn)維系統(tǒng)中的重要組件之一,其中與日志處理的相關(guān)技術(shù)大體可以分為三類:①操作系統(tǒng)的命令工具;②開源軟件或框架;③商業(yè)產(chǎn)品.表1列舉了不同類型日志分析技術(shù)的特性對比.對于第一種日志分析方法,管理員需要通過終端登錄遠(yuǎn)程服務(wù)器,隨后執(zhí)行查找統(tǒng)計(jì)命令或通過預(yù)先編寫的腳本文件來對日志文件進(jìn)行分析以完成特定運(yùn)維任務(wù).例如,Linux管理員可能需要執(zhí)行如下命令來查看“某個(gè)IP在指定的時(shí)間里訪問了哪些URL”:

表1 日志分析技術(shù)對比Tab.1 Comparison of log analytic technology

使用操作系統(tǒng)命令來完成日志分析,基本上可以滿足大部分運(yùn)維需求.但是,這種方式對運(yùn)維人員的技術(shù)要求高,同時(shí)操作較為繁瑣,并且經(jīng)常需要運(yùn)維人員以登錄遠(yuǎn)程服務(wù)器的方式進(jìn)行操作,對系統(tǒng)的安全性會帶來隱患,分析結(jié)果的展示也不直觀.

對于開源系統(tǒng)而言,一類工作關(guān)注于如何提供簡單且容易集成的組件(如日志收集組件Flume和消息總線組件Kafka),另一類工作則專注于如何構(gòu)建完整的框架(如ELK框架).開源日志處理組件大多由一些著名的互聯(lián)網(wǎng)公司或創(chuàng)業(yè)公司開發(fā),用于構(gòu)建公司內(nèi)部的運(yùn)維系統(tǒng).隨著開源軟件的日益興起,這些組件逐漸被貢獻(xiàn)給開源社區(qū),且大多圍繞著Hadoop生態(tài)系統(tǒng).此外,這些開源組件一般只針對日志收集與分析中的局部問題,如Flume僅解決了日志采集問題,并不關(guān)心如何分析日志與展示分析結(jié)果.

開源日志框架(如ELK框架和Solr+Hue)提供了完整的日志收集與分析的技術(shù)棧,文檔齊全且易于安裝部署.很多互聯(lián)網(wǎng)公司往往會選擇此類開源框架,用于構(gòu)建公司內(nèi)部的運(yùn)維系統(tǒng).例如,ELK主要由Elasticsearch,Logstash和Kibana三個(gè)開源工具[5]組成,其中Logstash用于采集多種日志源并統(tǒng)一傳入Elasticsearch進(jìn)行索引存儲,Kibana則根據(jù)實(shí)際需求提供定制化的儀表盤來從Elasticsearch獲取相關(guān)的日志分析統(tǒng)計(jì)數(shù)據(jù).

商業(yè)日志收集與分析產(chǎn)品(如Splunk)具備海量日志數(shù)據(jù)采集與分析能力,會包含幾十甚至上百種日志分析程序,提供類SQL的日志查詢語言以及豐富的報(bào)表展示工具.然而,這類商業(yè)產(chǎn)品價(jià)格昂貴,僅會被一些業(yè)務(wù)復(fù)雜的互聯(lián)網(wǎng)公司所采用(如IBM Cloudant采用了Splunk企業(yè)云服務(wù),以應(yīng)對全球24×7的運(yùn)維服務(wù)).

2 運(yùn)維需求分析

本節(jié)首先介紹研究生院信息平臺的整體架構(gòu),然后討論信息平臺中的運(yùn)維需求.

2.1 平臺架構(gòu)

研究生院信息平臺包括三個(gè)子系統(tǒng):持續(xù)集成與發(fā)布子系統(tǒng),業(yè)務(wù)子系統(tǒng),以及運(yùn)維子系統(tǒng).不同于傳統(tǒng)的管理信息系統(tǒng),研究生院信息平臺之所以增加了持續(xù)集成與發(fā)布子系統(tǒng)和運(yùn)維子系統(tǒng),是為了應(yīng)對不斷發(fā)生變化的業(yè)務(wù)需求.基于這個(gè)原因,研發(fā)團(tuán)隊(duì)采用了敏捷開發(fā)模式,進(jìn)而采用了與敏捷開發(fā)相關(guān)的持續(xù)集成與發(fā)布子系統(tǒng)和運(yùn)維子系統(tǒng),從而確保項(xiàng)目開發(fā)可以按照業(yè)務(wù)需求的變化進(jìn)行相應(yīng)的調(diào)整,并將這些設(shè)計(jì)與實(shí)現(xiàn)的調(diào)整通過持續(xù)集成與發(fā)布子系統(tǒng)體現(xiàn)出來,實(shí)現(xiàn)新版本的快速部署上線.圖1展示了研究生院信息平臺中三個(gè)子系統(tǒng)之間的相互關(guān)系.

圖1 研究生信息平臺子系統(tǒng)關(guān)系Fig.1 Architecture of graduate student management system

研究生院信息平臺中的業(yè)務(wù)子系統(tǒng)采用了基于瀏覽器/服務(wù)器(B/S)的三層架構(gòu),即Web前端展示-后端業(yè)務(wù)邏輯-數(shù)據(jù)庫.在系統(tǒng)研發(fā)中,Web前端采用了谷歌AngularJS框架和Bootstrap風(fēng)格樣式,后端應(yīng)用采用了Spring Boot框架來實(shí)現(xiàn)具體業(yè)務(wù)邏輯,而業(yè)務(wù)數(shù)據(jù)則存儲在關(guān)系模型中.

在實(shí)際部署中,采用Nginx服務(wù)器作為整個(gè)業(yè)務(wù)子系統(tǒng)的訪問入口,處理訪問請求的負(fù)載均衡,并結(jié)合基于Docker的應(yīng)用部署模式,有效地實(shí)現(xiàn)了系統(tǒng)處理能力的水平擴(kuò)展.具體而言, Nginx首先會接受每個(gè)用戶訪問請求,并將該請求路由給當(dāng)前工作負(fù)載最低的Web前端服務(wù)器; Web前端服務(wù)器分析并驗(yàn)證用戶請求是否有效,然后調(diào)用業(yè)務(wù)邏輯的RESTful接口;基于安全性考慮,業(yè)務(wù)邏輯服務(wù)器會分析并再次驗(yàn)證從Web前端發(fā)過來的請求,調(diào)用相應(yīng)的業(yè)務(wù)邏輯并將結(jié)果以JSON格式返回給Web前端;Nginx最后把Web前端的展示結(jié)果返回給用戶.圖2展示了業(yè)務(wù)子系統(tǒng)的功能架構(gòu),其中各部分產(chǎn)生的日志由ELK框架中的beats插件收集并轉(zhuǎn)發(fā)到運(yùn)維子系統(tǒng)中進(jìn)行處理,具體參見設(shè)計(jì)與實(shí)現(xiàn)部分.

2.2 運(yùn)維需求

在研究生院信息平臺的使用過程中,需要從以下三方面提升整個(gè)系統(tǒng)的可靠性.

(1)性能與負(fù)載監(jiān)控由于在部署中采用了基于Docker的虛擬化技術(shù)[6],研究生院信息平臺的運(yùn)維管理人員不僅需要及時(shí)地了解物理服務(wù)器的各項(xiàng)性能指標(biāo)(CPU,磁盤I/O和網(wǎng)絡(luò)I/O),還需要監(jiān)控Docker、數(shù)據(jù)庫以及應(yīng)用邏輯的性能指標(biāo).對于物理服務(wù)器,Docker容器和數(shù)據(jù)庫系統(tǒng)而言,只需要實(shí)時(shí)地采集這些系統(tǒng)提供的日志就可以獲得監(jiān)控所需的性能指標(biāo).然而,對于應(yīng)用邏輯而言,則存在兩種獲取性能指標(biāo)的方式:①通過Spring Boot提供的性能監(jiān)控API,在一些關(guān)鍵的業(yè)務(wù)邏輯中增加相應(yīng)的性能測量代碼;②通過采集負(fù)載均衡器的系統(tǒng)日志來計(jì)算每個(gè)RESTful接口的性能指標(biāo).第一種方法的優(yōu)點(diǎn)在于性能測量準(zhǔn)確,但卻會降低應(yīng)用邏輯的處理效率(例如,CouchDB中的IOQ會因?yàn)樵黾有阅軠y量代碼而使得處理消息的吞吐率降低約70%),以及增加開發(fā)工作量.與之相反,第二種方法雖然提供了簡便的性能測量方法,但卻無法保證性能測量指標(biāo)的精確性.研究生院信息平臺采用了第二種方案,主要是因?yàn)樾畔⑵脚_的用戶規(guī)模有限,無需非常精確的性能指標(biāo).

圖2 業(yè)務(wù)子系統(tǒng)功能架構(gòu)Fig.2 Architecture of business subsystem

通過實(shí)時(shí)地采集上述系統(tǒng)性能指標(biāo),運(yùn)維管理人員不僅可以準(zhǔn)確地把握當(dāng)前系統(tǒng)的實(shí)際負(fù)載來解決實(shí)際出現(xiàn)的系統(tǒng)性能問題,而且還可以通過記錄與分析歷史運(yùn)維問題來增加相應(yīng)的解決預(yù)案(如通過增加Docker應(yīng)用),達(dá)到未雨綢繆的運(yùn)維目標(biāo).

(2)用戶行為分析用戶畫像與行為分析是很多互聯(lián)網(wǎng)應(yīng)用的核心功能之一,旨在通過記錄與分析用戶行為的模式去了解用戶[7],通過推薦等手段來增加直接或間接的商業(yè)收益.不同于這些互聯(lián)網(wǎng)應(yīng)用中的用戶行為分析,研究生院信息平臺不需要在很細(xì)粒度上進(jìn)行用戶行為的追蹤(如記錄用戶的鼠標(biāo)在頁面里劃過了哪些組件以及停留時(shí)長等),僅需要以頁面訪問為單位來進(jìn)行行為分析即可(如用戶在頁面的停留時(shí)長和頁面訪問頻次).另一方面,當(dāng)某個(gè)用戶在系統(tǒng)中執(zhí)行了非法操作后,記錄詳細(xì)的用戶訪問請求可以確保數(shù)據(jù)安全方面的可追溯性.傳統(tǒng)方式大多會建立相應(yīng)的數(shù)據(jù)表并記錄用戶訪問情況[8],然而這增加了系統(tǒng)的開發(fā)維護(hù)成本和數(shù)據(jù)庫的訪問負(fù)載.基于負(fù)載均衡器記錄的用戶訪問日志,不僅可以達(dá)到保存用戶訪問請求的目標(biāo),而且還有效地避免了上述問題.因此,在系統(tǒng)實(shí)現(xiàn)中,無需在Web頁面中植入獲取用戶行為的JavaScript代碼和增加用戶訪問記錄的數(shù)據(jù)表,而是采集負(fù)載均衡器的用戶請求日志,這有效地降低了系統(tǒng)功能開發(fā)與維護(hù)的門檻與成本.

(3)服務(wù)異常調(diào)試對于Web前端與后端業(yè)務(wù)邏輯的實(shí)現(xiàn)而言,無法避免在實(shí)際使用過程中出現(xiàn)一些異常(由軟件開發(fā)中的缺陷導(dǎo)致).為了提升系統(tǒng)的可靠性,需要系統(tǒng)研發(fā)團(tuán)隊(duì)能夠快速定位到問題的根源,并依據(jù)異常提示進(jìn)行缺陷修復(fù).然而,如何準(zhǔn)確定位并理解問題的根源是一個(gè)極具挑戰(zhàn)的難題.為了解決這個(gè)問題,要求開發(fā)團(tuán)隊(duì)要能設(shè)計(jì)好異常提示.在研究生院信息平臺的實(shí)現(xiàn)中,通過采集負(fù)載均衡器的日志與應(yīng)用日志,將訪問請求的詳細(xì)信息與異常信息進(jìn)行匹配,確保了研發(fā)團(tuán)隊(duì)準(zhǔn)確理解并快速定位問題根源.

2.3 技術(shù)挑戰(zhàn)

在設(shè)計(jì)研究生院信息平臺的運(yùn)維子系統(tǒng)時(shí),主要面臨以下三個(gè)技術(shù)挑戰(zhàn).

(1)實(shí)現(xiàn)業(yè)務(wù)子系統(tǒng)與運(yùn)維子系統(tǒng)的松耦合.業(yè)務(wù)子系統(tǒng)的功能通常會發(fā)生較為頻繁的改變,而運(yùn)維子系統(tǒng)也會根據(jù)運(yùn)維需求而逐漸變化.如果兩個(gè)子系統(tǒng)之間存在較高的耦合,業(yè)務(wù)子系統(tǒng)的頻繁變更將會導(dǎo)致運(yùn)維子系統(tǒng)也相應(yīng)地不斷變化,而運(yùn)維子系統(tǒng)的較大升級將可能導(dǎo)致所有業(yè)務(wù)系統(tǒng)的升級.因此,新的運(yùn)維子系統(tǒng)與業(yè)務(wù)子系統(tǒng)在代碼和運(yùn)行部署上應(yīng)該盡可能地獨(dú)立.

(2)降低運(yùn)維子系統(tǒng)的引入導(dǎo)致的性能損失.為了支撐運(yùn)維子系統(tǒng)的運(yùn)行,業(yè)務(wù)子系統(tǒng)中必然需要植入相關(guān)代碼,輸入運(yùn)維子系統(tǒng)所需要的數(shù)據(jù).而如何植入相關(guān)統(tǒng)計(jì)代碼,統(tǒng)計(jì)信息的種類以及輸入輸出信息的過程都將對業(yè)務(wù)子系統(tǒng)的性能產(chǎn)生影響.如前文所述,CouchDB由于在代碼中植入了性能測試代碼,導(dǎo)致IOQ處理消息的吞吐率降低約70%.因此,從系統(tǒng)性能的角度出發(fā),新版運(yùn)維子系統(tǒng)需要避免對業(yè)務(wù)子系統(tǒng)的性能造成顯著影響.

(3)運(yùn)維子系統(tǒng)的靈活可擴(kuò)展.業(yè)務(wù)子系統(tǒng)的功能變更較為頻繁,老系統(tǒng)需要升級改造,新系統(tǒng)不斷地構(gòu)建部署.此外,運(yùn)維業(yè)務(wù)本身的需求會不斷地發(fā)生改變,從最基礎(chǔ)的后臺API運(yùn)行狀態(tài)監(jiān)控,發(fā)展到主動地檢測用戶異常行為.因此,運(yùn)維系統(tǒng)子系統(tǒng)需要具備一定的可擴(kuò)展性,以便保證能夠適應(yīng)未來幾年的需求變換.

3 設(shè)計(jì)與實(shí)現(xiàn)

研究生院信息平臺的運(yùn)維子系統(tǒng)采用了開源ELK框架,主要包括三個(gè)原因:第一,不同于互聯(lián)網(wǎng)公司的內(nèi)部系統(tǒng),由于研究生院信息平臺的數(shù)據(jù)規(guī)模和用戶訪問量有限,因此信息平臺僅需要一個(gè)輕量級的運(yùn)維子系統(tǒng);第二,ELK提供了端到端的日志采集與分析工具,易于安裝部署且規(guī)??煽?第三,基于ELK框架進(jìn)行運(yùn)維業(yè)務(wù)的開發(fā),只需要解決如何抽取日志信息與設(shè)計(jì)儀表盤這兩個(gè)問題,使得開發(fā)人員可以更專注于如何實(shí)現(xiàn)運(yùn)維業(yè)務(wù)需求.基于上述原因,本文采用了開源的ELK框架來搭建運(yùn)維子系統(tǒng)[9].

本節(jié)首先介紹ELK框架,然后分析了運(yùn)維所需的統(tǒng)計(jì)信息,最后給出了日志抽取和儀表盤的設(shè)計(jì)與實(shí)現(xiàn).

3.1 ELK簡介

ELK由Elasticsearch,Logstash和Kibana三個(gè)開源工具[5]組成.Elasticsearch是一種基于Lucene的分布式搜索分析引擎,主要負(fù)責(zé)存儲并索引由Logstash提供的各種日志,并提供日志搜索接口;Logstash是一個(gè)日志收集處理框架,解析從多種日志源中采集的日志數(shù)據(jù),然后發(fā)送給Elasticsearch完成日志數(shù)據(jù)的存儲與索引.Logstash通過建立事件處理管道來解析日志,包括三個(gè)核心配置插件:輸入(Inputs),輸出(Outputs)和過濾器(Filters).輸入用于聲明日志數(shù)據(jù)的輸入來源,支持基于文件、端口或數(shù)據(jù)庫等日志讀取方式;過濾器用于處理日志數(shù)據(jù),其中Grok插件負(fù)責(zé)從非結(jié)構(gòu)化日志數(shù)據(jù)中提取出結(jié)構(gòu)化信息;輸出將過濾器解析的數(shù)據(jù)發(fā)送給Elasticsearch.Kibana則使用Elasticsearch提供的RESTful接口來查詢?nèi)罩緮?shù)據(jù),通過不同類型的圖表幫助用戶構(gòu)建數(shù)據(jù)儀表盤,達(dá)到可視化日志分析的目的.

如果采用Logstash來解析并轉(zhuǎn)發(fā)日志信息給Elasticsearch,那么就需要將Logstash部署在每一臺系統(tǒng)服務(wù)器上.由于Logstash在處理日志的過程中需要消耗大量內(nèi)存,會顯著地降低應(yīng)用服務(wù)器的性能.因此,系統(tǒng)實(shí)現(xiàn)將日志發(fā)送與解析進(jìn)行了分離:使用Beats完成日志采集與傳輸,而Logstash則用于日志解析.Beats在ELK框架中被安裝在應(yīng)用服務(wù)端作為代理采集并轉(zhuǎn)發(fā)數(shù)據(jù),ELK提供的Beats組件主要包括:Filebeat,Metricbeat和Packetbeat.其中,Filebeat用于收集日志文件,Metricbeat用于采集系統(tǒng)信息,而Packetbeat則用于收集網(wǎng)絡(luò)信息.

3.2 日志統(tǒng)計(jì)信息

系統(tǒng)首先需要收集并統(tǒng)計(jì)與Web訪問相關(guān)的信息,包括訪問量,訪問IP,訪問賬號以及訪問時(shí)間.通過統(tǒng)計(jì)前三類信息隨時(shí)間變化的趨勢可以讓運(yùn)維人員對系統(tǒng)有一個(gè)清晰的整體認(rèn)識.此外,需要注意的是,訪問IP和訪問賬號還可用于進(jìn)行用戶行為分析和記錄與數(shù)據(jù)安全相關(guān)的用戶操作(例如,可根據(jù)訪問情況隨時(shí)間的變化曲線找出行為異常的賬號,以及哪個(gè)用戶在什么時(shí)間通過哪個(gè)RESTful接口進(jìn)行數(shù)據(jù)更新或刪除操作).

其次,系統(tǒng)還需要統(tǒng)計(jì)每個(gè)請求訪問的頁面或后臺服務(wù),包括URL地址,響應(yīng)時(shí)間,返回狀態(tài)以及訪問請求中的參數(shù)等信息.通過對這些信息的統(tǒng)計(jì)分析,運(yùn)維人員可以了解哪些頁面或后臺服務(wù)的訪問過于頻繁、響應(yīng)時(shí)間過長或者訪問請求返回的狀態(tài)碼不正常,進(jìn)而與開發(fā)團(tuán)隊(duì)一起有針對性地修正系統(tǒng)功能或優(yōu)化系統(tǒng)性能.

最后,為了監(jiān)控負(fù)載均衡服務(wù)器,數(shù)據(jù)庫服務(wù)器,Web和應(yīng)用服務(wù)器的資源消耗與負(fù)載狀況,系統(tǒng)還需要收集并統(tǒng)計(jì)系統(tǒng)日志,包括CPU使用情況,內(nèi)存使用情況,進(jìn)程使用情況等信息.

基于以上討論,表2給出了不同運(yùn)維場景下需要統(tǒng)計(jì)的日志信息以及相應(yīng)的日志來源.

表2 運(yùn)維統(tǒng)計(jì)信息Tab.2 Statistical information of operation and maintenance

3.3 日志抽取

基于3.2節(jié)的統(tǒng)計(jì)信息,運(yùn)維子系統(tǒng)需要從業(yè)務(wù)子系統(tǒng)中收集三類日志數(shù)據(jù),而每種日志數(shù)據(jù)都通過Beats組件轉(zhuǎn)發(fā)給Logstash進(jìn)行日志解析.由于系統(tǒng)的訪問請求入口都通過Nginx,因此我們可以很方便的從Nginx日志中獲取大部分運(yùn)維系統(tǒng)所需統(tǒng)計(jì)分析的日志信息.此外,由于Nginx支持對日志格式的定制化操作,結(jié)合3.2節(jié)列舉的統(tǒng)計(jì)日志數(shù)據(jù)項(xiàng),表3給出了運(yùn)維子系統(tǒng)記錄的Nginx日志字段.

表3中的日志信息通過Filebeat發(fā)送給Logstash,Logstash隨后對接收到的日志文件進(jìn)行解析,提取出運(yùn)維所需存儲的日志信息,以便于在Elasticsearch中進(jìn)行查詢和統(tǒng)計(jì).對Nginx日志文件的解析主要由Logstash中的Grok插件完成,使用正則表達(dá)式對日志信息進(jìn)行匹配和抽取,Grok插件提供了一些預(yù)定義的正則表達(dá)式可以直接使用.圖3給出了運(yùn)維系統(tǒng)實(shí)現(xiàn)的Nginx日志抽取規(guī)則,其中“%{WORD:http host}”用于對請求地址字段的信息抽取,WORD表示Grok中預(yù)定義的對字符進(jìn)行匹配的正則表達(dá)式,http host表示對該字段的命名.對于Nginx記錄的錯(cuò)誤日志,運(yùn)維子系統(tǒng)同樣使用Filebeat將錯(cuò)誤日志發(fā)送給Logstash,隨后依據(jù)類似的抽取規(guī)則提取出錯(cuò)誤發(fā)生的時(shí)間,錯(cuò)誤級別和錯(cuò)誤詳細(xì)信息等字段,并轉(zhuǎn)發(fā)給Elasticsearch用于存儲與查詢.

業(yè)務(wù)子系統(tǒng)在運(yùn)行期間時(shí)會將用戶行為記錄在應(yīng)用日志中,由于業(yè)務(wù)子系統(tǒng)在Docker容器中部署運(yùn)行,為了獲取業(yè)務(wù)子系統(tǒng)產(chǎn)生的日志文件,我們將Docker容器內(nèi)的應(yīng)用日志文件掛載到服務(wù)器磁盤上.這樣,運(yùn)維子系統(tǒng)就可以直接使用Filebeat將日志文件轉(zhuǎn)發(fā)給Logstash來完成日志解析與抽取.由于應(yīng)用日志文件的抽取規(guī)則與對Nginx日志的處理類似,這里就不再進(jìn)行詳細(xì)的描述.

表3 Nginx訪問日志字段Tab.3 Nginx access log f i elds

圖3 Log stash中的配置Fig.3 Conf i guration of Log stash

由于整個(gè)系統(tǒng)安裝部署在Linux操作系統(tǒng)上,因此使用syslog作為系統(tǒng)日志并由Metricbeat完成日志收集(Docker虛擬機(jī)的日志也通過Metricbeat進(jìn)行收集).此外,Metricbeat提供了預(yù)定義的儀表盤模板,以便于對所采集的系統(tǒng)日志進(jìn)行統(tǒng)計(jì)展示.在系統(tǒng)實(shí)現(xiàn)中,我們直接采用了Metricbeat提供的儀表盤,并通過kibana展示.

3.4 儀表盤設(shè)計(jì)

運(yùn)維子系統(tǒng)采用Kibana的儀表盤設(shè)計(jì)來完成日志分析結(jié)果的展示.在實(shí)現(xiàn)中,系統(tǒng)首先會呈現(xiàn)給用戶一個(gè)總覽儀表盤(如圖4所示),主要包括六部分日志統(tǒng)計(jì)信息:①儀表盤目錄,點(diǎn)擊每個(gè)目錄項(xiàng)可以獲取更具體的日志統(tǒng)計(jì)信息,如系統(tǒng)負(fù)載統(tǒng)計(jì),Docker容器運(yùn)行狀況,用戶行為統(tǒng)計(jì)等;②在某個(gè)時(shí)間段內(nèi)的系統(tǒng)訪問吞吐量(時(shí)間段可以由用戶任意指定);③在某個(gè)時(shí)間段內(nèi)訪問系統(tǒng)服務(wù)最多的用戶統(tǒng)計(jì)信息;④在某個(gè)時(shí)間段內(nèi)訪問系統(tǒng)服務(wù)最多的IP統(tǒng)計(jì)信息;⑤用戶訪問情況的分時(shí)統(tǒng)計(jì);⑥系統(tǒng)服務(wù)器資源使用情況的統(tǒng)計(jì)信息,如CPU,內(nèi)存和硬盤的使用情況等.

通過上述總覽儀表盤,運(yùn)維人員每天都可以方便地了解研究生院信息平臺各個(gè)功能模塊的訪問情況以及服務(wù)器的負(fù)載狀況.例如,如果運(yùn)維人員發(fā)現(xiàn)用戶訪問量增長地很快且Docker容器的性能顯著下降,則可以增加一定數(shù)量的Docker容器并將應(yīng)用服務(wù)邏輯部署在這些容器中,從而快速實(shí)現(xiàn)負(fù)載均衡.

在性能監(jiān)控部分,系統(tǒng)日志的展示可以由Metricbeat導(dǎo)入的儀表盤實(shí)現(xiàn),除此之外最重要的是應(yīng)用中各API接口的響應(yīng)時(shí)間,圖5統(tǒng)計(jì)了各API響應(yīng)時(shí)間中的最短時(shí)間,最長時(shí)間及平均時(shí)間,這可以幫助系統(tǒng)開發(fā)人員有效地發(fā)現(xiàn)系統(tǒng)性能瓶頸,根據(jù)訪問參數(shù)來調(diào)試應(yīng)用服務(wù),通過代碼優(yōu)化等方法不斷完善系統(tǒng)功能和性能.

圖4 儀表盤總覽圖Fig.4 Overview of dashboard

圖5 API響應(yīng)時(shí)間統(tǒng)計(jì)圖Fig.5 Statistical chart of API response time

對于用戶行為分析需求,系統(tǒng)運(yùn)維人員希望了解的典型場景是:哪些用戶何時(shí)發(fā)送了哪些請求.在實(shí)現(xiàn)中,系統(tǒng)可以根據(jù)收集的日志信息從多個(gè)層面進(jìn)行分析.例如,統(tǒng)計(jì)每個(gè)用戶訪問最多或最頻繁的頁面來反映用戶使用系統(tǒng)的功能偏好,然后根據(jù)用戶偏好為不同的用戶進(jìn)行系統(tǒng)功能的個(gè)性化布局與優(yōu)化;或者統(tǒng)計(jì)在不同時(shí)段的系統(tǒng)訪問情況來反映用戶使用系統(tǒng)的時(shí)間偏好(圖6展示了在不同時(shí)段的系統(tǒng)訪問情況),從而達(dá)到依據(jù)時(shí)間段來動態(tài)調(diào)整系統(tǒng)資源的目標(biāo).

對于服務(wù)異常調(diào)試,系統(tǒng)需要收集應(yīng)用邏輯拋出的異常,Docker的異常,MySQL的異常以及Nginx的負(fù)載異常.為了定位問題來源,可以分別對MySQL的錯(cuò)誤日志,Nginx的錯(cuò)誤日志和應(yīng)用日志中的錯(cuò)誤進(jìn)行分時(shí)統(tǒng)計(jì).當(dāng)出現(xiàn)某種異常時(shí),運(yùn)維人員首先通過查看對應(yīng)時(shí)間段內(nèi)哪種日志類型中記錄了錯(cuò)誤信息來定位異常發(fā)生的位置.如果是應(yīng)用邏輯拋出的異常,可以進(jìn)一步在Kibana中搜索與該異常發(fā)生在同一段時(shí)間內(nèi)的Nginx記錄的訪問請求,如哪個(gè)用戶調(diào)用了哪個(gè)API并且RESTful的訪問參數(shù)是什么.這樣,開發(fā)人員就可以準(zhǔn)確地了解所有與異常相關(guān)的信息,便于快速精確地定位與修正錯(cuò)誤.

圖6 API分時(shí)統(tǒng)計(jì)Fig.6 API time sharing accounting

4 性能分析

由于運(yùn)維子系統(tǒng)需要定時(shí)從Nginx服務(wù)器和業(yè)務(wù)子系統(tǒng)的日志中抽取信息,這不可避免的會對業(yè)務(wù)子系統(tǒng)帶來一些性能方面的影響.針對性能問題,本節(jié)測試并對比了在運(yùn)行運(yùn)維子系統(tǒng)和關(guān)閉運(yùn)維子系統(tǒng)兩種情況下業(yè)務(wù)子系統(tǒng)對用戶請求的吞吐量.實(shí)驗(yàn)運(yùn)行在一臺安裝了Centos7操作系統(tǒng)的服務(wù)器上,配備了8個(gè)主頻為2.4 GHz的Intel Xeon CPU E5-2630芯片,內(nèi)存為16 GB,磁盤容量為4TB,轉(zhuǎn)速為7 200 r/s.

性能測試實(shí)驗(yàn)選擇了學(xué)籍業(yè)務(wù)中具有代表性的用戶請求,包括四種類型:角色激活,菜單獲取,學(xué)籍查詢和條件查詢,其中角色激活指用戶選擇自己要進(jìn)行操作的角色,菜單獲取指獲得可以操作的菜單頁面,學(xué)籍查詢指根據(jù)學(xué)生的學(xué)號返回學(xué)籍信息,條件查詢指輸入查詢條件返回符合條件的學(xué)生信息.角色激活和菜單獲取是用戶登錄時(shí)都需要進(jìn)行的請求,基本覆蓋了權(quán)限域表的操作;學(xué)籍查詢和條件查詢是學(xué)籍業(yè)務(wù)中的常用請求,且條件查詢在請求數(shù)據(jù)時(shí)需要執(zhí)行復(fù)雜的連接操作.在性能測試中,我們實(shí)現(xiàn)了一個(gè)用戶請求模擬器,并在四臺PC上安裝運(yùn)行了128個(gè)實(shí)例,不間斷地向服務(wù)器發(fā)送請求.

圖7展示了啟用和關(guān)閉運(yùn)維子系統(tǒng)時(shí)請求訪問量的性能對比.從圖中可以看出,在啟用了運(yùn)維子系統(tǒng)之后,業(yè)務(wù)子系統(tǒng)的性能相比于關(guān)閉運(yùn)維子系統(tǒng)時(shí)略有下降,即業(yè)務(wù)子系統(tǒng)所處理的請求吞吐量僅降低了約5%.因此,實(shí)驗(yàn)結(jié)果證明了在幾乎不降低業(yè)務(wù)子系統(tǒng)的請求吞吐量的情況下,運(yùn)維子系統(tǒng)可以有效地實(shí)現(xiàn)對業(yè)務(wù)子系統(tǒng)的性能監(jiān)控、基于用戶行為分析的系統(tǒng)優(yōu)化和服務(wù)異常調(diào)試的三個(gè)運(yùn)維目標(biāo).

圖7 訪問量對比圖Fig.7 Contrast of API views

5 結(jié)論

基于日志收集與分析的運(yùn)維模式為現(xiàn)代大型軟件系統(tǒng)提供了豐富的運(yùn)維信息,從而有效地確保了大型業(yè)務(wù)系統(tǒng)運(yùn)行期間的可靠性與穩(wěn)定性.基于現(xiàn)代運(yùn)維服務(wù)的理念,本文采用開源的ELK框架,設(shè)計(jì)并實(shí)現(xiàn)了華東師范大學(xué)研究生院信息系統(tǒng)中的運(yùn)維子系統(tǒng),解決了研究生院業(yè)務(wù)系統(tǒng)在實(shí)際使用中遇到的性能與負(fù)載監(jiān)控、用戶行為分析以及服務(wù)異常調(diào)試等問題.實(shí)踐證明,本文實(shí)現(xiàn)的運(yùn)維子系統(tǒng)不僅很好地滿足了華東師范大學(xué)新一代研究生院信息系統(tǒng)的各種實(shí)際運(yùn)維需求,而且還確保了業(yè)務(wù)系統(tǒng)與運(yùn)維系統(tǒng)之間的相互獨(dú)立性,這使得運(yùn)維系統(tǒng)可以靈活地適應(yīng)未來業(yè)務(wù)系統(tǒng)的升級改造.

[1]于長虹.智慧校園智慧服務(wù)和運(yùn)維平臺構(gòu)建研究[J].中國電化教育,2015(8):16-20+28.

[2]岑榮偉,劉奕群,張敏,等.基于日志挖掘的搜索引擎用戶行為分析[J].中文信息學(xué)報(bào),2010(3):49-54.

[3]郭巖,白碩,楊志峰,等.網(wǎng)絡(luò)日志規(guī)模分析和用戶興趣挖掘[J].計(jì)算機(jī)學(xué)報(bào),2005(9):1483-1496.

[4]邢東山,沈鈞毅,宋擒豹.從Web日志中挖掘用戶瀏覽偏愛路徑[J].計(jì)算機(jī)學(xué)報(bào),2003(11):1518-1523.

[5]白俊,郭賀彬.基于ElasticSearch的大日志實(shí)時(shí)搜索的軟件集成方案研究[J].吉林師范大學(xué)學(xué)報(bào)(自然科學(xué)版),2014(1): 85-87.

[6]劉慶磊,信師國,李曉林.虛擬技術(shù)在IT運(yùn)維管理中的應(yīng)用研究[J].信息技術(shù)與信息化,2010(1):43-45.

[7]王新,馬萬青,潘文林.基于Web日志的用戶訪問模式挖掘[J].計(jì)算機(jī)工程與應(yīng)用,2006(21):156-158.

[8]鮑鈺,黃國興,張召.基于Web日志挖掘的網(wǎng)站結(jié)構(gòu)優(yōu)化方法[J].計(jì)算機(jī)工程,2003(12):82-84.

[9]周映,韓曉霞.ELK日志分析平臺在電子商務(wù)系統(tǒng)監(jiān)控服務(wù)中的應(yīng)用[J].信息技術(shù)與標(biāo)準(zhǔn)化,2016(7):67-70.

(責(zé)任編輯:李萬會)

Design and implementation of operation subsystem in graduate student management system

SHI Bing1,XIA Fan1,SONG Shu-bin2,XIAO Li-min2,DONG Qi-wen1, ZHOU Ao-ying1,XU Lin-hao3
(1.School of Data Science and Engineering,East China Normal University,Shanghai 200062,China; 2.Graduate School,East China Normal University,Shanghai 200062,China; 3.Infosys Technologies China Ltd.,Shanghai 200135,China)

Log collection and analysis based operation scheme is very important in the design of modern software systems,which helps system administrators to enhance data security and service stability.Firstly,this paper discusses the existing operation approaches based on log collection and analysis.Secondly,with the open source ELK framework,this paper gives a detailed design of the operation subsystem in graduate student information platform.The proposed design can ef f ectively fulf i ll the practical requirements of the graduate school,like performance and workload monitoring,user behavior tracking and error tracing,by using the real-time interactive data analysis on system and application logs.Finally,this paper demonstrates the interactive dashboard implementation of our operation subsystem under dif f erent business scenarios.

operation and management;log analysis;data analysis

TP315

A

10.3969/j.issn.1000-5641.2017.05.020

1000-5641(2017)05-0225-11

2017-05-01

國家重點(diǎn)研發(fā)計(jì)劃(2016YFB1000905);國家自然科學(xué)基金廣東省聯(lián)合重點(diǎn)項(xiàng)目(U1401256);國家自然科學(xué)基金(61672234,61402177);華東師范大學(xué)信息化軟課題

史兵,男,碩士研究生,研究方向?yàn)閿?shù)據(jù)科學(xué)技術(shù)應(yīng)用.

夏帆,男,博士后,研究方向?yàn)樯缃幻襟w分析.E-mail:fxia@sei.ecnu.edu.cn.

猜你喜歡
研究生院日志子系統(tǒng)
不對中轉(zhuǎn)子系統(tǒng)耦合動力學(xué)特性研究
一名老黨員的工作日志
GSM-R基站子系統(tǒng)同步方案研究
扶貧日志
日本師范研究生院入學(xué)定員充足率下降16.9%
駝峰測長設(shè)備在線監(jiān)測子系統(tǒng)的設(shè)計(jì)與應(yīng)用
雅皮的心情日志
游學(xué)日志
The Cross-cultural communication of Confucianism introduced by Lin Yu-tang
EmploymentAgeDiscriminationonWomen