• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

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

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

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

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

      研究生信息平臺中運(yùn)維系統(tǒng)的設(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è)計了華東師范大學(xué)研究生院信息平臺中的運(yùn)維子系統(tǒng).通過實時交互可視化的數(shù)據(jù)分析方式,有效地解決了研究生院業(yè)務(wù)人員在系統(tǒng)使用中遇到的性能與負(fù)載監(jiān)控,用戶行為分析以及服務(wù)異常調(diào)試等方面的問題.最后針對不同類型的業(yè)務(wù)運(yùn)維場景,給出了基于交互式儀表盤的運(yùn)維服務(wù)實現(xiàn).

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

      0 引言

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

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

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

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

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

      第三,實踐證明,通過運(yùn)維子系統(tǒng)提供的各種數(shù)據(jù)分析指標(biāo),研究生院的系統(tǒng)管理人員可以根據(jù)實際負(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)計命令或通過預(yù)先編寫的腳本文件來對日志文件進(jìn)行分析以完成特定運(yùn)維任務(wù).例如,Linux管理員可能需要執(zhí)行如下命令來查看“某個IP在指定的時間里訪問了哪些URL”:

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

      使用操作系統(tǒng)命令來完成日志分析,基本上可以滿足大部分運(yùn)維需求.但是,這種方式對運(yùn)維人員的技術(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三個開源工具[5]組成,其中Logstash用于采集多種日志源并統(tǒng)一傳入Elasticsearch進(jìn)行索引存儲,Kibana則根據(jù)實際需求提供定制化的儀表盤來從Elasticsearch獲取相關(guān)的日志分析統(tǒng)計數(shù)據(jù).

      商業(yè)日志收集與分析產(chǎn)品(如Splunk)具備海量日志數(shù)據(jù)采集與分析能力,會包含幾十甚至上百種日志分析程序,提供類SQL的日志查詢語言以及豐富的報表展示工具.然而,這類商業(yè)產(chǎn)品價格昂貴,僅會被一些業(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)

      研究生院信息平臺包括三個子系統(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ù)需求.基于這個原因,研發(fā)團(tuán)隊采用了敏捷開發(fā)模式,進(jìn)而采用了與敏捷開發(fā)相關(guān)的持續(xù)集成與發(fā)布子系統(tǒng)和運(yùn)維子系統(tǒng),從而確保項目開發(fā)可以按照業(yè)務(wù)需求的變化進(jìn)行相應(yīng)的調(diào)整,并將這些設(shè)計與實現(xiàn)的調(diào)整通過持續(xù)集成與發(fā)布子系統(tǒng)體現(xiàn)出來,實現(xiàn)新版本的快速部署上線.圖1展示了研究生院信息平臺中三個子系統(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框架來實現(xiàn)具體業(yè)務(wù)邏輯,而業(yè)務(wù)數(shù)據(jù)則存儲在關(guān)系模型中.

      在實際部署中,采用Nginx服務(wù)器作為整個業(yè)務(wù)子系統(tǒng)的訪問入口,處理訪問請求的負(fù)載均衡,并結(jié)合基于Docker的應(yīng)用部署模式,有效地實現(xiàn)了系統(tǒng)處理能力的水平擴(kuò)展.具體而言, Nginx首先會接受每個用戶訪問請求,并將該請求路由給當(dāng)前工作負(fù)載最低的Web前端服務(wù)器; Web前端服務(wù)器分析并驗證用戶請求是否有效,然后調(diào)用業(yè)務(wù)邏輯的RESTful接口;基于安全性考慮,業(yè)務(wù)邏輯服務(wù)器會分析并再次驗證從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è)計與實現(xiàn)部分.

      2.2 運(yùn)維需求

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

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

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

      通過實時地采集上述系統(tǒng)性能指標(biāo),運(yùn)維管理人員不僅可以準(zhǔn)確地把握當(dāng)前系統(tǒng)的實際負(fù)載來解決實際出現(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)在頁面里劃過了哪些組件以及停留時長等),僅需要以頁面訪問為單位來進(jìn)行行為分析即可(如用戶在頁面的停留時長和頁面訪問頻次).另一方面,當(dāng)某個用戶在系統(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)實現(xiàn)中,無需在Web頁面中植入獲取用戶行為的JavaScript代碼和增加用戶訪問記錄的數(shù)據(jù)表,而是采集負(fù)載均衡器的用戶請求日志,這有效地降低了系統(tǒng)功能開發(fā)與維護(hù)的門檻與成本.

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

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

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

      (1)實現(xiàn)業(yè)務(wù)子系統(tǒng)與運(yùn)維子系統(tǒng)的松耦合.業(yè)務(wù)子系統(tǒng)的功能通常會發(fā)生較為頻繁的改變,而運(yùn)維子系統(tǒng)也會根據(jù)運(yùn)維需求而逐漸變化.如果兩個子系統(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)計代碼,統(tǒng)計信息的種類以及輸入輸出信息的過程都將對業(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è)計與實現(xiàn)

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

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

      3.1 ELK簡介

      ELK由Elasticsearch,Logstash和Kibana三個開源工具[5]組成.Elasticsearch是一種基于Lucene的分布式搜索分析引擎,主要負(fù)責(zé)存儲并索引由Logstash提供的各種日志,并提供日志搜索接口;Logstash是一個日志收集處理框架,解析從多種日志源中采集的日志數(shù)據(jù),然后發(fā)送給Elasticsearch完成日志數(shù)據(jù)的存儲與索引.Logstash通過建立事件處理管道來解析日志,包括三個核心配置插件:輸入(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)實現(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)計信息

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

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

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

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

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

      3.3 日志抽取

      基于3.2節(jié)的統(tǒng)計信息,運(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)計分析的日志信息.此外,由于Nginx支持對日志格式的定制化操作,結(jié)合3.2節(jié)列舉的統(tǒng)計日志數(shù)據(jù)項,表3給出了運(yùn)維子系統(tǒng)記錄的Nginx日志字段.

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

      業(yè)務(wù)子系統(tǒng)在運(yùn)行期間時會將用戶行為記錄在應(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

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

      3.4 儀表盤設(shè)計

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

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

      在性能監(jiān)控部分,系統(tǒng)日志的展示可以由Metricbeat導(dǎo)入的儀表盤實現(xiàn),除此之外最重要的是應(yīng)用中各API接口的響應(yīng)時間,圖5統(tǒng)計了各API響應(yīng)時間中的最短時間,最長時間及平均時間,這可以幫助系統(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)時間統(tǒng)計圖Fig.5 Statistical chart of API response time

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

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

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

      4 性能分析

      由于運(yùn)維子系統(tǒng)需要定時從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)對用戶請求的吞吐量.實驗運(yùn)行在一臺安裝了Centos7操作系統(tǒng)的服務(wù)器上,配備了8個主頻為2.4 GHz的Intel Xeon CPU E5-2630芯片,內(nèi)存為16 GB,磁盤容量為4TB,轉(zhuǎn)速為7 200 r/s.

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

      圖7展示了啟用和關(guān)閉運(yùn)維子系統(tǒng)時請求訪問量的性能對比.從圖中可以看出,在啟用了運(yùn)維子系統(tǒng)之后,業(yè)務(wù)子系統(tǒng)的性能相比于關(guān)閉運(yùn)維子系統(tǒng)時略有下降,即業(yè)務(wù)子系統(tǒng)所處理的請求吞吐量僅降低了約5%.因此,實驗結(jié)果證明了在幾乎不降低業(yè)務(wù)子系統(tǒng)的請求吞吐量的情況下,運(yùn)維子系統(tǒng)可以有效地實現(xiàn)對業(yè)務(wù)子系統(tǒng)的性能監(jiān)控、基于用戶行為分析的系統(tǒng)優(yōu)化和服務(wù)異常調(diào)試的三個運(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è)計并實現(xiàn)了華東師范大學(xué)研究生院信息系統(tǒng)中的運(yùn)維子系統(tǒng),解決了研究生院業(yè)務(wù)系統(tǒng)在實際使用中遇到的性能與負(fù)載監(jiān)控、用戶行為分析以及服務(wù)異常調(diào)試等問題.實踐證明,本文實現(xiàn)的運(yùn)維子系統(tǒng)不僅很好地滿足了華東師范大學(xué)新一代研究生院信息系統(tǒng)的各種實際運(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é)報,2010(3):49-54.

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

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

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

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

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

      [8]鮑鈺,黃國興,張召.基于Web日志挖掘的網(wǎng)站結(jié)構(gòu)優(yōu)化方法[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ā)計劃(2016YFB1000905);國家自然科學(xué)基金廣東省聯(lián)合重點(diǎn)項目(U1401256);國家自然科學(xué)基金(61672234,61402177);華東師范大學(xué)信息化軟課題

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

      夏帆,男,博士后,研究方向為社交媒體分析.E-mail:fxia@sei.ecnu.edu.cn.

      猜你喜歡
      研究生院日志子系統(tǒng)
      不對中轉(zhuǎn)子系統(tǒng)耦合動力學(xué)特性研究
      一名老黨員的工作日志
      華人時刊(2021年13期)2021-11-27 09:19:02
      GSM-R基站子系統(tǒng)同步方案研究
      扶貧日志
      心聲歌刊(2020年4期)2020-09-07 06:37:14
      駝峰測長設(shè)備在線監(jiān)測子系統(tǒng)的設(shè)計與應(yīng)用
      游學(xué)日志
      The Cross-cultural communication of Confucianism introduced by Lin Yu-tang
      山西青年(2017年2期)2017-01-30 03:25:41
      森林防火期內(nèi) 禁止在森林防火區(qū)野外用火
      胡亞楠、張國英作品選
      車載ATP子系統(tǒng)緊急制動限制速度計算
      普定县| 云浮市| 肇庆市| 高阳县| 青神县| 汉川市| 扶风县| 哈巴河县| 竹北市| 卢湾区| 江孜县| 班戈县| 汉源县| 田东县| 商都县| 余庆县| 故城县| 永城市| 清徐县| 景东| 唐山市| 武冈市| 阜城县| 沧州市| 若羌县| 五常市| 南充市| 小金县| 靖江市| 独山县| 洛阳市| 武威市| 鄂托克前旗| 长顺县| 隆化县| 宁城县| 厦门市| 府谷县| 高清| 莱阳市| 简阳市|