■ 北京 潘少博 張和 戴誼
編者按:微服務(wù)架構(gòu)體系在筆者單位實(shí)施落地后,帶來了服務(wù)易擴(kuò)展、高可用、技術(shù)異構(gòu)等諸多好處,但也使得服務(wù)器數(shù)量陡然增加,運(yùn)維壓力加大。筆者基于監(jiān)控工具數(shù)據(jù)可視化工具構(gòu)建了微服務(wù)自動(dòng)化監(jiān)控運(yùn)維平臺(tái),成功將運(yùn)維工作化繁為簡(jiǎn)。
筆者單位目前已經(jīng)具備“興業(yè)銀行集中監(jiān)控平臺(tái)”(IBM Tivoli)和“興業(yè)銀行可用性預(yù)警平臺(tái)”這兩個(gè)成熟、完善并優(yōu)勢(shì)互補(bǔ)的監(jiān)控運(yùn)維平臺(tái),可滿足服務(wù)器的日常監(jiān)控運(yùn)維管理需求。
但在實(shí)施微服務(wù)化后,服務(wù)器數(shù)量日趨增加,依然對(duì)單位的運(yùn)維工作提出了更高的要求與挑戰(zhàn)。
1.自動(dòng)化運(yùn)維
服務(wù)器數(shù)量眾多,必然增加人力運(yùn)維的工作量和壓力,且對(duì)運(yùn)維工作的時(shí)效性、標(biāo)準(zhǔn)性提出更高的要求。若能便捷、規(guī)范地將已知常見的運(yùn)維工作形成標(biāo)準(zhǔn)的自執(zhí)行流程,無需人工干預(yù),必能大大降低運(yùn)維成本。
2.應(yīng)用層集中監(jiān)控
微服務(wù)化后,整個(gè)應(yīng)用分散成多個(gè)服務(wù),現(xiàn)有監(jiān)控平臺(tái)缺乏在應(yīng)用層面查看其下各類服務(wù)的整體運(yùn)行情況及核心監(jiān)控指標(biāo)的功能,不便運(yùn)維人員從宏觀視角了解服務(wù)運(yùn)行狀況。
3.個(gè)性化監(jiān)控信息采集
微服務(wù)架構(gòu)中組件繁多,各類組件所需要監(jiān)控的指標(biāo)不同,特定場(chǎng)景下可能需要實(shí)現(xiàn)監(jiān)控指標(biāo)的定制與采集(尤其是某些業(yè)務(wù)應(yīng)用),需要確立靈活、簡(jiǎn)單、通用、可擴(kuò)展的監(jiān)控指標(biāo)定義與采集機(jī)制,以應(yīng)對(duì)個(gè)性化監(jiān)控的需求。
4.快速部署
微服務(wù)架構(gòu)下,面對(duì)大量主機(jī)的監(jiān)控需求,若具備標(biāo)準(zhǔn)、簡(jiǎn)單、快速的主機(jī)監(jiān)控部署流程,可大大簡(jiǎn)化運(yùn)維人員的部署、配置工作。
5.對(duì)現(xiàn)有平臺(tái)的補(bǔ)充
“興業(yè)銀行集中監(jiān)控平臺(tái)”(IBM Tivoli)和“興業(yè)銀行可用性預(yù)警平臺(tái)”作為成熟完善的監(jiān)控平臺(tái),已經(jīng)滿足絕大多數(shù)場(chǎng)景下的日常運(yùn)維管理需求,故僅需針對(duì)微服務(wù)場(chǎng)景下出現(xiàn)的新增需求制定合理的方案,作為對(duì)現(xiàn)有平臺(tái)的補(bǔ)充。
1.方案闡述
針對(duì)上述的問題和需求,我們基于監(jiān)控工具Zabbix和數(shù)據(jù)可視化工具Grafana,構(gòu)建了單位微服務(wù)自動(dòng)化監(jiān)控運(yùn)維平臺(tái),并制定相應(yīng)配套方案,幫助運(yùn)維人員盡早獲知預(yù)警信息、及時(shí)定位解決問題,減少人力工作,保障主機(jī)及各微服務(wù)的持續(xù)穩(wěn)定運(yùn)行,推動(dòng)單位系統(tǒng)的智能化、輕型化、簡(jiǎn)單化發(fā)展。
2.開發(fā)歷程
根據(jù)技術(shù)架構(gòu)微服務(wù)化下新增的運(yùn)維問題和需求,結(jié)合單位實(shí)際情況,我們首先進(jìn)行了技術(shù)選型與方案確立工作。
Zabbix作為業(yè)界廣泛使用的企業(yè)級(jí)監(jiān)控工具,具備開箱即用、靈活可擴(kuò)展、分布式監(jiān)控、高可用、安全保障等諸多優(yōu)勢(shì)。Zabbix官方及社區(qū)已經(jīng)具備大量的主機(jī)與應(yīng)用監(jiān)控模版可直接使用,免去極大的定制開發(fā)工作。
不僅如此,通過Zabbix的主機(jī)自動(dòng)注冊(cè)功能及全平臺(tái)支持的監(jiān)控采集工具,可快速完成主機(jī)的部署配置。另外,Zabbix提供了自定義監(jiān)控項(xiàng)、遠(yuǎn)程運(yùn)行自定義腳本的功能,通過編寫通用腳本與簡(jiǎn)單的Web配置,可靈活擴(kuò)展,滿足個(gè)性化監(jiān)控、自動(dòng)化運(yùn)維的需求?;谝陨蟽?yōu)點(diǎn),我們選擇Zabbix作為平臺(tái)的核心組件。
Zabbix作為監(jiān)控工具足夠優(yōu)秀,但其監(jiān)控圖形化視圖的多樣性、美觀性、功能性相對(duì)較弱,且僅支持單機(jī)指標(biāo)的監(jiān)控視圖,缺少統(tǒng)計(jì)視圖的支持。
基于此,我們選用了同樣廣泛使用的數(shù)據(jù)可視化工具Grafana用于監(jiān)控?cái)?shù)據(jù)的展示。
隨后我們確定了平臺(tái)的監(jiān)控方案與部署方案,并首先在單位測(cè)試環(huán)境下進(jìn)行了部署實(shí)踐,將測(cè)試環(huán)境下已有的微服務(wù)主機(jī)納入監(jiān)控,并在過程中不斷優(yōu)化、完善方案,完成了以下工作:
(1)主機(jī)自動(dòng)監(jiān)控
通過平臺(tái)設(shè)置+腳本配置的方式,實(shí)現(xiàn)主機(jī)自動(dòng)化安裝、配置并直接納入監(jiān)控,免除繁瑣手動(dòng)操作。
(2)個(gè)性化監(jiān)控信息采集
實(shí)現(xiàn)了通用的服務(wù)進(jìn)程運(yùn)行情況監(jiān)控,與Informix、MySQL等常見基礎(chǔ)服務(wù)的個(gè)性化監(jiān)控信息的采集。
(3)自動(dòng)化運(yùn)維機(jī)制
借助平臺(tái)的告警觸發(fā)機(jī)制與遠(yuǎn)程執(zhí)行自定義腳本的功能,制定了自動(dòng)化運(yùn)維方案與腳本編寫規(guī)范,并實(shí)現(xiàn)了服務(wù)重啟等基礎(chǔ)場(chǎng)景下的自動(dòng)化運(yùn)維流程。
(4)多樣化、階梯式告警策略
我們將平臺(tái)與筆者單位消息中心實(shí)現(xiàn)了對(duì)接,使其支持監(jiān)控告警信息以郵件、短信的形式告知相關(guān)運(yùn)維人員,并基于告警問題的嚴(yán)重性與分類,從而實(shí)現(xiàn)了分級(jí)別、分類型、階梯式的告警策略。
根據(jù)實(shí)際的監(jiān)控可視化需要,我們?cè)贕rafana上配置了全局、應(yīng)用、主機(jī)、主機(jī)服務(wù)等多個(gè)維度的監(jiān)控儀表板,方便運(yùn)維人員從多個(gè)視角掌握監(jiān)控、告警情況,實(shí)現(xiàn)對(duì)主機(jī)的集中監(jiān)控。
最終微服務(wù)自動(dòng)化監(jiān)控運(yùn)維平臺(tái)在單位生產(chǎn)環(huán)境落地投產(chǎn),成功支撐起微服務(wù)基礎(chǔ)架構(gòu)與“三線合一信息監(jiān)督與發(fā)布平臺(tái)”、人事快查等微服務(wù)架構(gòu)應(yīng)用的監(jiān)控運(yùn)維職能。
3.創(chuàng)新亮點(diǎn)
微服務(wù)自動(dòng)化監(jiān)控運(yùn)維平臺(tái),提供了微服務(wù)架構(gòu)下從主機(jī)部署、監(jiān)控?cái)?shù)據(jù)采集、智能告警修復(fù)、自動(dòng)化運(yùn)維、監(jiān)控可視化在內(nèi)的一體化運(yùn)維監(jiān)控方案,具備良好的可擴(kuò)展性和可定制性,極大降低人力成本,提升運(yùn)維效率,可作為單位現(xiàn)有監(jiān)控平臺(tái)的補(bǔ)充。
4.風(fēng)險(xiǎn)合規(guī)
平臺(tái)具有靈活的用戶權(quán)限架構(gòu),可以有效管理用戶權(quán)限,并支持多種類型的用戶,用于定義對(duì)管理功能的訪問并指定默認(rèn)權(quán)限。
可通過在平臺(tái)中分組授權(quán)員工角色保證訪問權(quán)限一致。
目前,微服務(wù)自動(dòng)化監(jiān)控運(yùn)維平臺(tái)已于筆者單位投產(chǎn)并穩(wěn)定運(yùn)行數(shù)月,極大地減輕運(yùn)維壓力,提升了整體運(yùn)維效率。
運(yùn)維人員日常只需要不定時(shí)關(guān)注儀表板視圖上的監(jiān)控指標(biāo),即可直觀了解整體微服務(wù)運(yùn)行情況和資源利用情況。同時(shí),平臺(tái)的自動(dòng)化運(yùn)維功能可以自動(dòng)修復(fù)常見問題,運(yùn)維人員僅需解決特殊情況下需要人工干預(yù)的問題即可。
與以往相比,如今的IT基礎(chǔ)架構(gòu)無論是規(guī)模還是復(fù)雜度,都成倍增長(zhǎng),傳統(tǒng)運(yùn)維方式已難以負(fù)荷沉重的工作量,智能運(yùn)維能有效地銜接開發(fā)與持續(xù)交付,全面提升IT生產(chǎn)質(zhì)量和效率。
“以工具和方法,重新定義軟件創(chuàng)新”,打造數(shù)字化生產(chǎn)線,結(jié)合可追溯與智能工作方式共同驅(qū)動(dòng)軟件精益生產(chǎn),將成為單位科技面向未來的IT過程管理核心。
1.推廣復(fù)制
產(chǎn)品可在未建立或初步建立微服務(wù)架構(gòu)的單位進(jìn)行廣泛推廣。該平臺(tái)致力于提供微服務(wù)架構(gòu)下的一體化運(yùn)維監(jiān)控方案,解決部署、配置、監(jiān)控、告警、故障恢復(fù)等方面原先人工和半自動(dòng)的運(yùn)維工作,降低管理和操作所帶來的諸多風(fēng)險(xiǎn)和成本。
2.未來展望
未來該平臺(tái)可在如下方面進(jìn)一步提高:
(1)逐步將有監(jiān)控需要的服務(wù)器納入監(jiān)控。
(2)結(jié)合實(shí)際需要,完善監(jiān)控模版與監(jiān)控儀表板。
(3)豐富自動(dòng)化運(yùn)維場(chǎng)景。