寧肖
(江蘇省揚(yáng)州環(huán)境監(jiān)測中心 江蘇省揚(yáng)州市 225007)
傳統(tǒng)運(yùn)行監(jiān)控系統(tǒng)對(duì)管理員依賴度較高,管理員負(fù)責(zé)對(duì)系統(tǒng)進(jìn)行運(yùn)行監(jiān)控和故障排查,技術(shù)持續(xù)升級(jí)影響下,相關(guān)應(yīng)用系統(tǒng)復(fù)雜度提升,必須為管理員減負(fù),尋求人力釋放方案,提升系統(tǒng)智能化。APM系統(tǒng)是以應(yīng)用性能管理為應(yīng)用目的的監(jiān)控系統(tǒng),監(jiān)控效果較好,更具智能性,技術(shù)更完善。APM系統(tǒng)結(jié)合微服務(wù)架構(gòu)應(yīng)用可提升應(yīng)用性能。
微服務(wù)架構(gòu)為現(xiàn)代新科技,主要應(yīng)用于云中部署,促進(jìn)云服務(wù)完善。以輕量級(jí)設(shè)備為媒介,利用自有程序,可實(shí)現(xiàn)微服務(wù)、HTTP型API之間的溝通。微服務(wù)架構(gòu)中,當(dāng)針對(duì)某項(xiàng)服務(wù)進(jìn)行功能拓展時(shí),無需縮小進(jìn)程范圍,而是直接針對(duì)特定服務(wù)加設(shè)目標(biāo)功能即可,整體進(jìn)程不受到功能拓展影響。常規(guī)服務(wù)中通常需要獨(dú)立資源或功能,而微服務(wù)匹配業(yè)務(wù)能力。在該架構(gòu)應(yīng)用時(shí)應(yīng)科學(xué)設(shè)計(jì)能力模型粒度。相關(guān)組件組合時(shí),其中的組件與規(guī)模同步改變。在此情況下,服務(wù)粒度過粗將導(dǎo)致其與規(guī)定原則不一致。應(yīng)精細(xì)化設(shè)計(jì)服務(wù)粒度,增強(qiáng)變化靈活性,降低負(fù)載影響。與此同時(shí),應(yīng)合理設(shè)計(jì)配置,并對(duì)基礎(chǔ)設(shè)施成本進(jìn)行監(jiān)控[1]。
微服務(wù)是網(wǎng)絡(luò)服務(wù)宏觀發(fā)展趨勢。在應(yīng)用時(shí)應(yīng)對(duì)服務(wù)與應(yīng)用進(jìn)行精細(xì)化分解,保證組件符合小粒度要求,進(jìn)行松散耦合,通過此種設(shè)計(jì)促進(jìn)微服務(wù)擴(kuò)展升級(jí)。獨(dú)立部署是微服務(wù)的主要特點(diǎn),其擴(kuò)展和并發(fā)性能突出,可根據(jù)業(yè)務(wù)劃分應(yīng)用系統(tǒng),促使復(fù)雜的系統(tǒng)被拆解為不同服務(wù)單元,而各單元均為獨(dú)立業(yè)務(wù)模塊。模塊具有單一功能,故而單獨(dú)功能變更升級(jí)對(duì)同系統(tǒng)其他模塊無顯著影響,微服務(wù)單元進(jìn)程獨(dú)立,運(yùn)行限制較少。各單元設(shè)有獨(dú)立存儲(chǔ)模式和數(shù)據(jù)庫,適應(yīng)復(fù)雜的數(shù)據(jù)存儲(chǔ)需求。通信機(jī)制為輕量級(jí),可有效配合,支持溝通功能,通訊不受監(jiān)控平臺(tái)、語言影響。以生產(chǎn)作業(yè)平臺(tái)為例,以微服務(wù)框架為基礎(chǔ)設(shè)計(jì)運(yùn)行性能監(jiān)控系統(tǒng),可降低開發(fā)難度,促進(jìn)高成效開發(fā)。
運(yùn)行性能監(jiān)控系統(tǒng)簡稱APM,是為適應(yīng)日益復(fù)雜的應(yīng)用系統(tǒng)、減輕系統(tǒng)管理員壓力、提升監(jiān)控質(zhì)量而設(shè)計(jì)的新型系統(tǒng)。APM系統(tǒng)符合“端——端”業(yè)務(wù)監(jiān)控要求,以用戶體驗(yàn)為中心,管理順序是自上而下進(jìn)行管理,在IT運(yùn)維管理中具有先進(jìn)性。APM是IT運(yùn)維管理中的新型管理模式,可有效監(jiān)控微服務(wù)IT應(yīng)用狀態(tài),促進(jìn)系統(tǒng)優(yōu)化,持續(xù)完善應(yīng)用體驗(yàn),提高系統(tǒng)可靠性,促進(jìn)人性化系統(tǒng)設(shè)計(jì),同時(shí)對(duì)TCO降低有積極意義。
APM系統(tǒng)主要分設(shè)三個(gè)模塊,分別負(fù)責(zé)性能多級(jí)監(jiān)控、故障定位和性能全維度優(yōu)化。應(yīng)用APM可促進(jìn)通訊協(xié)議全方位覆蓋,進(jìn)行7層管控,通過監(jiān)控與模擬事務(wù)處理過程促進(jìn)“點(diǎn)——點(diǎn)”模式監(jiān)測,精準(zhǔn)監(jiān)測組件。可快速檢出系統(tǒng)故障,制定修復(fù)方案或?qū)嵤┬迯?fù)。系統(tǒng)中可精準(zhǔn)展示系統(tǒng)資源占用水平,結(jié)合系統(tǒng)性能分析,制定專家級(jí)完善方案[2]。
微服務(wù)模式應(yīng)用開發(fā)更具先進(jìn)性與科學(xué)性,當(dāng)前業(yè)務(wù)系統(tǒng)設(shè)計(jì)對(duì)微服務(wù)架構(gòu)的應(yīng)用價(jià)值較認(rèn)可,架構(gòu)應(yīng)用較多,在此影響下應(yīng)用性能管理呈現(xiàn)更加復(fù)雜的相關(guān)性。在系統(tǒng)設(shè)計(jì)中,應(yīng)達(dá)到持續(xù)交付要求,以優(yōu)化服務(wù)體驗(yàn)為核心。微服務(wù)開發(fā)需要?jiǎng)討B(tài)進(jìn)行,應(yīng)用規(guī)模通常較大,導(dǎo)致需要投入更多成本收集數(shù)據(jù)。監(jiān)控?cái)?shù)據(jù)對(duì)數(shù)據(jù)分析過程影響力增強(qiáng)。此外,關(guān)聯(lián)分析與可視化數(shù)據(jù)分析可行性提升。
以微服務(wù)架構(gòu)為基礎(chǔ)設(shè)計(jì)應(yīng)用性能監(jiān)控系統(tǒng)即微服務(wù)APM時(shí),應(yīng)先行設(shè)計(jì)總體架構(gòu)(設(shè)計(jì)流程見圖1)。數(shù)據(jù)是性能監(jiān)控的核心,針對(duì)數(shù)據(jù)應(yīng)設(shè)計(jì)采集、顯示、存儲(chǔ)和處理分析等系統(tǒng)。微服務(wù)屬于云服務(wù)范疇,為保證云服務(wù)實(shí)施需要建設(shè)云基礎(chǔ)設(shè)施。需要設(shè)置基礎(chǔ)硬件,對(duì)信息資源進(jìn)行集中式調(diào)控,實(shí)施云操作控制,之后創(chuàng)建負(fù)載均衡組件并編制內(nèi)容分發(fā)網(wǎng)絡(luò)。
圖1:系統(tǒng)設(shè)計(jì)流程
監(jiān)測和評(píng)價(jià)微服務(wù)APM服務(wù)體驗(yàn),進(jìn)行多協(xié)議運(yùn)行部署,設(shè)計(jì)平臺(tái)代理程序,協(xié)調(diào)探針、自動(dòng)機(jī)器人等。進(jìn)行該層面設(shè)計(jì)可促進(jìn)APM價(jià)值提升。該設(shè)計(jì)可保證最終用戶體驗(yàn)處于端口鏡像模式中代理部署風(fēng)險(xiǎn)降低,相關(guān)調(diào)查顯示,此種設(shè)計(jì)可將風(fēng)險(xiǎn)發(fā)生率控制在20%左右。通過此種設(shè)計(jì)可顯著提高部署速度,2天內(nèi)即可完成。
(1)構(gòu)建應(yīng)用運(yùn)行框架,完善微服務(wù)過程模式、路徑快照、監(jiān)控云。明確拓?fù)浣Y(jié)構(gòu)與服務(wù)依賴關(guān)系,確定程序架構(gòu)邏輯關(guān)系。
(2)微服務(wù)自定義、URL地址自定義,高級(jí)別分組(即8~12級(jí)分組)。篩選與微服務(wù)適配的服務(wù)等級(jí)協(xié)議指標(biāo),構(gòu)建微服務(wù)信任關(guān)系,從而使系統(tǒng)可生成預(yù)警趨勢報(bào)告信息[3]。
(3)監(jiān)控系統(tǒng)深層信息。監(jiān)控運(yùn)維時(shí)間與運(yùn)行信息、評(píng)價(jià)系統(tǒng)應(yīng)用狀態(tài)、中間件情況,設(shè)計(jì)診斷監(jiān)視系統(tǒng),創(chuàng)建智能數(shù)據(jù)庫。審查代碼科學(xué)性,完善解決方案,保證系統(tǒng)性能測試中數(shù)據(jù)精準(zhǔn)無誤,消除影響系統(tǒng)高效率運(yùn)行的消極因素。
(4)分析運(yùn)行性能數(shù)據(jù)并形成報(bào)告。應(yīng)用原始信息和性能相關(guān)信息進(jìn)行系統(tǒng)優(yōu)化。加強(qiáng)服務(wù)級(jí)管理、基線管理,評(píng)價(jià)產(chǎn)能設(shè)計(jì)科學(xué)性并對(duì)癥完善設(shè)計(jì),預(yù)測系統(tǒng)運(yùn)行趨勢等。
微服務(wù)APM設(shè)計(jì)應(yīng)用中APM探針是重要構(gòu)成,探針性能與監(jiān)控?cái)?shù)據(jù)精準(zhǔn)度密切相關(guān)。在此類系統(tǒng)中所用探針通常為Java結(jié)構(gòu),此種結(jié)構(gòu)設(shè)計(jì)可促進(jìn)系統(tǒng)性能持續(xù)優(yōu)化,實(shí)現(xiàn)無盲點(diǎn)監(jiān)控,動(dòng)態(tài)檢出微服務(wù)拓?fù)?,定位性能異常,還可根據(jù)系統(tǒng)應(yīng)用需求設(shè)計(jì)自定義事務(wù),進(jìn)行定向監(jiān)控,強(qiáng)化監(jiān)控性能,高質(zhì)量監(jiān)測安全事件,對(duì)應(yīng)用漏洞進(jìn)行精準(zhǔn)定位。
系統(tǒng)內(nèi)組件節(jié)點(diǎn)相互調(diào)用過程中,需要對(duì)應(yīng)用級(jí)別信息進(jìn)行記錄、傳遞和標(biāo)記,以此維持組件邏輯關(guān)系。當(dāng)節(jié)點(diǎn)與節(jié)點(diǎn)連接中通信協(xié)議采用HTTP2時(shí),該協(xié)議頭中會(huì)做出標(biāo)記。該技術(shù)即標(biāo)記樹跟蹤技術(shù)。技術(shù)相關(guān)解釋如表1。在應(yīng)用該跟蹤技術(shù)時(shí),探針對(duì)服務(wù)器中新觸發(fā)條件進(jìn)行檢測識(shí)別,并賦予其應(yīng)用層標(biāo)記。
表1:標(biāo)記含義
微服務(wù)是進(jìn)行軟件開發(fā),根據(jù)服務(wù)預(yù)期設(shè)計(jì)小型功能區(qū)塊。在其模塊設(shè)計(jì)中,區(qū)塊功能單一且獨(dú)立,執(zhí)行不同職能,通過組合小模塊最終實(shí)現(xiàn)大型應(yīng)用程序構(gòu)建,即形成運(yùn)行性能監(jiān)控系統(tǒng)。該系統(tǒng)具有復(fù)雜的功能。采用常規(guī)應(yīng)用程序進(jìn)行監(jiān)控系統(tǒng)設(shè)計(jì)時(shí),多為單體結(jié)構(gòu),內(nèi)部模塊為整體式設(shè)計(jì),而微服務(wù)設(shè)計(jì)理念下創(chuàng)建的監(jiān)控系統(tǒng),其內(nèi)部服務(wù)模塊具有獨(dú)立性,防止服務(wù)之間互相牽連,運(yùn)行具有自主性。因?yàn)榫哂写朔N優(yōu)勢,故而單個(gè)服務(wù)發(fā)生故障不會(huì)干擾其他同級(jí)服務(wù),可保證系統(tǒng)穩(wěn)定性。在性能監(jiān)控中融合微服務(wù)應(yīng)用系統(tǒng)是時(shí)代發(fā)展要求對(duì)監(jiān)控設(shè)計(jì)的客觀要求。在構(gòu)建APM系統(tǒng)時(shí),應(yīng)采用閉環(huán)設(shè)計(jì),分設(shè)開發(fā)模塊、部署模塊、監(jiān)控模塊、預(yù)警報(bào)告模塊和故障報(bào)告模塊。利用微服務(wù)架構(gòu)聯(lián)合上述模塊,通過平臺(tái)統(tǒng)一監(jiān)控,微服務(wù)組件分別進(jìn)行信息收集,然后集中進(jìn)行數(shù)據(jù)分析,維持系統(tǒng)平穩(wěn)運(yùn)行。APM分析和報(bào)告數(shù)據(jù)時(shí),需要保證數(shù)據(jù)得到及時(shí)處理和精準(zhǔn)分析。獲取數(shù)據(jù)后應(yīng)立即進(jìn)行處理,同步傳送數(shù)據(jù),保證數(shù)據(jù)處理模塊第一時(shí)間得到性能監(jiān)控系統(tǒng)收集的數(shù)據(jù)并進(jìn)行處理操作。系統(tǒng)收集的性能數(shù)據(jù)通常無直接應(yīng)用價(jià)值,而必須經(jīng)過分析得到深層信息,結(jié)合潛在信息、數(shù)據(jù)變化規(guī)律等促進(jìn)系統(tǒng)預(yù)測,實(shí)現(xiàn)數(shù)據(jù)價(jià)值。大數(shù)據(jù)分析處理后厘清數(shù)據(jù)內(nèi)部邏輯,并將其轉(zhuǎn)換為清晰圖表。
微服務(wù)框架可分為多個(gè)組件部分,各組件具有高內(nèi)聚和低耦合的性能特點(diǎn)?;诖吮尘埃M件收集數(shù)據(jù)后對(duì)數(shù)據(jù)進(jìn)行整合和過濾,數(shù)據(jù)經(jīng)過處理呈現(xiàn)內(nèi)部邏輯,必須加強(qiáng)性能監(jiān)控。應(yīng)在系統(tǒng)中告警閾值參數(shù)進(jìn)行手動(dòng)設(shè)置,預(yù)警報(bào)告信息豐富后,通過機(jī)器學(xué)習(xí)算法對(duì)相關(guān)閾值進(jìn)行動(dòng)態(tài)調(diào)整,以保證閾值與業(yè)務(wù)系統(tǒng)應(yīng)用要求一致。發(fā)生預(yù)警報(bào)告時(shí),應(yīng)根據(jù)預(yù)設(shè)規(guī)則對(duì)預(yù)警報(bào)告信息進(jìn)行去重和過濾,經(jīng)過篩選的信息對(duì)系統(tǒng)管理具有實(shí)用性。微服務(wù)APM創(chuàng)建后,可分析告警類別并對(duì)應(yīng)處理。結(jié)合機(jī)器學(xué)習(xí)分類算法,構(gòu)建時(shí)段與性能故障的邏輯關(guān)系,對(duì)未來告警信息可能性發(fā)生節(jié)點(diǎn)進(jìn)行智能預(yù)測,向系統(tǒng)管理員發(fā)出提前預(yù)警,促使系統(tǒng)增強(qiáng)主動(dòng)防御功能。在微服務(wù)APM中設(shè)有工單系統(tǒng),可分類告警信息,評(píng)價(jià)告警危險(xiǎn)級(jí)別,通過三色預(yù)警系統(tǒng)提升預(yù)警精度。系統(tǒng)設(shè)置中預(yù)留電話、短信或者郵件地址,告警信息通過指定方式傳達(dá),系統(tǒng)管理員根據(jù)告警信息精準(zhǔn)高效處理故障或系統(tǒng)異常[4]。
APM追蹤記錄全周期微服務(wù)負(fù)載,對(duì)微服務(wù)拓?fù)溥M(jìn)行宏觀敘述,微服務(wù)流追蹤可實(shí)現(xiàn)點(diǎn)到點(diǎn)精準(zhǔn)追蹤,并可定位故障和系統(tǒng)性能局限性。從微服務(wù)APM中篩選觸發(fā)條件,設(shè)計(jì)瀏覽界面服務(wù),以HTTP2協(xié)議為規(guī)則進(jìn)行觸發(fā),應(yīng)用觸發(fā)條件時(shí),需要緩存服務(wù)器、后端計(jì)算系統(tǒng)和數(shù)據(jù)庫等支持,此外,在該協(xié)議支持下,第三方服務(wù)被Restful接口調(diào)用,在不同應(yīng)用系統(tǒng)中收到觸發(fā)條件并予以響應(yīng)。在此過程中,微服務(wù)單個(gè)性能缺陷可能引起宏觀系統(tǒng)運(yùn)行滯后,符合木桶效應(yīng)特點(diǎn),APM追蹤和記錄系統(tǒng)負(fù)載情況,從而對(duì)微服務(wù)流活動(dòng)過程進(jìn)行還原,從而找出故障點(diǎn),深挖性能局限性,精準(zhǔn)鎖定性能突破方向。
綜上所述,微服務(wù)性能監(jiān)控推動(dòng)業(yè)務(wù)系統(tǒng)監(jiān)控漸趨完善,性能監(jiān)控體系發(fā)生結(jié)構(gòu)變化。在數(shù)據(jù)量持續(xù)增長影響下,監(jiān)督和無監(jiān)督學(xué)習(xí)在微服務(wù)APM中均有應(yīng)用可行性,可更快識(shí)別系統(tǒng)問題,促進(jìn)缺陷定位,縮短性能異常排查時(shí)間,提高性能完善效率。收集APM系統(tǒng)提供的告警數(shù)據(jù),構(gòu)建專家建議庫,可促進(jìn)APM系統(tǒng)異常應(yīng)對(duì)性能優(yōu)化,促進(jìn)系統(tǒng)智能化。