陸寧
(廣西壯族自治區(qū)信息中心,廣西 南寧 530200)
隨著云計算技術(shù)的不斷發(fā)展,基于云計算平臺部署的網(wǎng)絡(luò)、應(yīng)用系統(tǒng)復(fù)雜度日漸提高,使云平臺運維管理工作難度也隨之急劇上升。而云、網(wǎng)、系統(tǒng)之間的協(xié)同運行管理邊界也越來越復(fù)雜,進一步增加了云平臺日常運維壓力。因此研究云計算平臺的智能監(jiān)控方式,有助于提高云平臺運行管理效率和服務(wù)支撐水平。
(1)運維管理被動。故障發(fā)生時,管理人員難以主動、及時地發(fā)現(xiàn),往往在故障影響范圍擴大、用戶體驗度下降后,才能被動響應(yīng)。
(2)故障排查低效。由于云平臺上的應(yīng)用系統(tǒng)規(guī)模龐大復(fù)雜,故障排查效率難以提升。在故障定位方面,存在多種運行環(huán)境、多個運維團隊、多個技術(shù)廠商。缺乏統(tǒng)一的監(jiān)測標(biāo)準(zhǔn)和管理手段,在孤島模式獨立排查將大量耗費人力、時間資源。
(3)劃分責(zé)任邊界難。云平臺運維管理服務(wù)于各云業(yè)務(wù)資源使用用戶,云平臺作為基礎(chǔ)支撐平臺與在其基礎(chǔ)上運行的系統(tǒng)資源,管理方各不相同,發(fā)生業(yè)務(wù)故障時無法快速界定責(zé)任方。
(4)故障溯源困難。隨著全國各類關(guān)鍵信息系統(tǒng)的可用性要求變高,需要在發(fā)生故障后,精準(zhǔn)定位問題快速恢復(fù)使用。
(5)容量性能管理難。對網(wǎng)絡(luò)、應(yīng)用、業(yè)務(wù)的運行狀態(tài)可見性不夠,使得政務(wù)系統(tǒng)整體的容量性能評估依據(jù)不足,無法得知復(fù)雜環(huán)境中每個環(huán)節(jié)的容量、性能情況,也無法準(zhǔn)確了解容量性能瓶頸,并評估云平臺、網(wǎng)絡(luò)等對業(yè)務(wù)造成的影響。
(1)實現(xiàn)運維故障主動感知,主動探測故障。傳統(tǒng)運維監(jiān)控平臺都是出現(xiàn)故障后,先是業(yè)務(wù)系統(tǒng)得到感知,再由業(yè)務(wù)系統(tǒng)通知運維側(cè)。造成故障感知滯后,通過智能監(jiān)測平臺主動發(fā)現(xiàn)故障,并及時通知業(yè)務(wù)系統(tǒng),避免“被動挨打”。從“被動通知有故障”到“主動發(fā)現(xiàn)問題”的轉(zhuǎn)變。著名咨詢機構(gòu)Gartner 把IT 管理體系分為經(jīng)營管理、業(yè)務(wù)監(jiān)控、應(yīng)用分析、網(wǎng)絡(luò)性能分析、系統(tǒng)架構(gòu)監(jiān)控5 個層次(圖1),需將業(yè)務(wù)監(jiān)控入當(dāng)成是第一感知源,才能有效扭轉(zhuǎn)運維工作面臨的故障信息感知滯后的局面[1]。通過構(gòu)建業(yè)務(wù)級端到端視圖和業(yè)務(wù)運行分級預(yù)警,猶如在云網(wǎng)關(guān)鍵節(jié)點設(shè)立業(yè)務(wù)神經(jīng)感知網(wǎng)絡(luò),能夠第一時間發(fā)現(xiàn)“業(yè)務(wù)故障蹤跡”。
圖1 IT 管理體系
(2)快速定位故障,責(zé)任邊界劃分。常規(guī)故障定位均是由業(yè)務(wù)系統(tǒng)側(cè)發(fā)起,通知云、網(wǎng)側(cè)去排查云平臺、網(wǎng)絡(luò)和硬件設(shè)備。智能監(jiān)控平臺通過網(wǎng)絡(luò)、設(shè)備、虛機狀態(tài)全局分析,快速定位故障點,為業(yè)務(wù)系統(tǒng)故障排查提供強力佐證。
(3)平臺和設(shè)備性能狀態(tài)全知曉,提前應(yīng)對風(fēng)險。對網(wǎng)絡(luò)、設(shè)備、虛擬機狀態(tài)的全局分析,對發(fā)生的故障狀態(tài)、閾值進行機器學(xué)習(xí),對故障預(yù)警算法根據(jù)現(xiàn)網(wǎng)環(huán)境進行優(yōu)化。當(dāng)平臺和設(shè)備出現(xiàn)異常波動時,及時做出風(fēng)險預(yù)警。
目前主流的業(yè)務(wù)、網(wǎng)絡(luò)、云上數(shù)據(jù)性能分析和監(jiān)控有三大技術(shù)流派,分別是流量分析流派、日志流派和代理插件流派。
流量分析流派通過旁路鏡像技術(shù)獲得真實的業(yè)務(wù)流量數(shù)據(jù),實時生成各類評估指標(biāo),實現(xiàn)業(yè)務(wù)性能感知、業(yè)務(wù)故障分級預(yù)警、網(wǎng)絡(luò)流量可視化監(jiān)測、網(wǎng)絡(luò)性能回溯分析等能力,用于業(yè)務(wù)和網(wǎng)絡(luò)性能監(jiān)測、故障診斷定位及各類事件的實時分析和數(shù)據(jù)取證[2]。
日志流派記錄硬件、軟件和各類系統(tǒng)的日志信息,可以監(jiān)視系統(tǒng)中發(fā)生的事件。采用該技術(shù),用戶可以檢查錯誤發(fā)生的原因,尋找受到攻擊時攻擊者留下的痕跡。日志包括系統(tǒng)日志、應(yīng)用程序日志和安全日志等。
代理插件流派對關(guān)鍵業(yè)務(wù)應(yīng)用進行監(jiān)測和獲取優(yōu)化信息,以實現(xiàn)性能管理和故障診斷,提高關(guān)鍵業(yè)務(wù)應(yīng)用的可靠性和業(yè)務(wù)訪問質(zhì)量,保障用戶得到良好的服務(wù);覆蓋5 個方面的能力,包括終端用戶體驗、應(yīng)用架構(gòu)映射、應(yīng)用事務(wù)的分析、深度應(yīng)用診斷和數(shù)據(jù)分析。
從占用資源、信源采集方式、覆蓋廣度、實施風(fēng)險、數(shù)據(jù)可靠性、部署周期等維度對比,優(yōu)選技術(shù)成熟,部署影響最小,且見效最快的流量分析流派,作為云智能監(jiān)控平臺的首選技術(shù)。從平臺的組成和分析方法考慮,至少包含4 個層面,即業(yè)務(wù)流量采集層、網(wǎng)絡(luò)報文解析層、監(jiān)控與接口層、數(shù)據(jù)分析層。各層環(huán)環(huán)相扣,從基礎(chǔ)業(yè)務(wù)數(shù)據(jù)采集到業(yè)務(wù)邏輯梳理和建模,再經(jīng)過大數(shù)據(jù)分析加工產(chǎn)生各類業(yè)務(wù)網(wǎng)絡(luò)指標(biāo),最后結(jié)合運維場景進行統(tǒng)一呈現(xiàn)。
(1)采集層,是平臺架構(gòu)的數(shù)據(jù)來源,在物理網(wǎng)絡(luò)匯聚節(jié)點通過交換機鏡像技術(shù)或云平臺引流技術(shù),采集實時交互的業(yè)務(wù)流量數(shù)據(jù)。
(2)網(wǎng)絡(luò)報文解析層,對采集到的全部業(yè)務(wù)數(shù)據(jù)進行過濾(業(yè)務(wù)訪問邏輯梳理)、初步加工(數(shù)據(jù)預(yù)處理),最終匯集到智能解碼引擎(業(yè)務(wù)報文解碼)進行實時處理。
(3)監(jiān)控與接口層,智能解碼引擎基于各類應(yīng)用平臺的協(xié)議規(guī)范完成解碼后,依據(jù)不同的運維場景執(zhí)行監(jiān)控動作,包括業(yè)務(wù)分級預(yù)警、指標(biāo)趨勢分析、訪問明細追蹤、生成運維報表等,相關(guān)數(shù)據(jù)可以通過接口向外推送。
(4)數(shù)據(jù)分析層,針對不同場景需求,定義分析視圖,完成指標(biāo)與使用場景的匹配和展示。云智能監(jiān)控平臺主要覆蓋的區(qū)域包括云出口、云核心、云匯聚、云主機和云安全管理等的區(qū)域。在核心交換機區(qū)域做端口鏡像流量采集點,實現(xiàn)對全局流量的分析。在云內(nèi)虛機部署微探針,實現(xiàn)對云內(nèi)流量的采集和分析。
云計算平臺開展智能監(jiān)控,主要從3 個過程進行分析,即主動監(jiān)測分析快速定位故障、端到端精細化追蹤降低監(jiān)測誤報率、統(tǒng)一監(jiān)控度量標(biāo)準(zhǔn)實現(xiàn)精準(zhǔn)預(yù)警。
2.3.1 主動監(jiān)測分析快速定位故障
采用網(wǎng)絡(luò)探針、海量日志歸等的技術(shù)對云平臺關(guān)鍵區(qū)域?qū)嵤┤旌?、全流量主動監(jiān)測,結(jié)合網(wǎng)絡(luò)流量報表,基礎(chǔ)設(shè)施日志等信息加以對比分析,縮小故障范圍,快速定位故障發(fā)生的位置,旨在主動發(fā)現(xiàn)網(wǎng)絡(luò)流量突發(fā)性暴增或暴跌、業(yè)務(wù)系統(tǒng)計算資源(CPU、內(nèi)存、存儲等)和網(wǎng)絡(luò)需求超出基礎(chǔ)設(shè)施上限、設(shè)備老化失靈宕機、人為誤操作等可能造成業(yè)務(wù)系統(tǒng)中斷的故障現(xiàn)象[3]。
通過在基礎(chǔ)網(wǎng)絡(luò)核心節(jié)點部署網(wǎng)絡(luò)探針,云主機側(cè)部署微探針捕捉全應(yīng)用場景的南北向、東西流量,結(jié)合SNMP 協(xié)議、IPMI 和EFK 等工具搜集并歸總分布在基礎(chǔ)網(wǎng)絡(luò)設(shè)備、服務(wù)器運行情況、操作系統(tǒng)及基礎(chǔ)軟件服務(wù)日志。最后將歸總后的日志數(shù)據(jù)進行加工統(tǒng)一日志格式與聚合,存儲到監(jiān)控后端時序型數(shù)據(jù)庫便于后期的檢索和查詢。
2.3.2 端到端精細化追蹤降低監(jiān)測誤報率
為進一步提高云平臺主動監(jiān)測的有效性、時效性,采用端到端鏈?zhǔn)礁櫟募夹g(shù),從業(yè)務(wù)系統(tǒng)客戶端發(fā)出請求抵達業(yè)務(wù)系統(tǒng)邊界開始,跟蹤記錄請求流經(jīng)的各個應(yīng)用服務(wù)的跨度(網(wǎng)絡(luò)傳輸、系統(tǒng)調(diào)用、業(yè)務(wù)處理、數(shù)據(jù)落盤等),直到向客戶端返回響應(yīng)為止。分析各階段的響應(yīng)結(jié)果和耗時、系統(tǒng)調(diào)用返回結(jié)果、系統(tǒng)異常信息、消息報文等性能指標(biāo),縮小故障現(xiàn)象的范圍,提高故障排查的速度,確保精準(zhǔn)性和可靠性。
實現(xiàn)端到端鏈?zhǔn)礁?,目的是為排查故障和分析性能提供?shù)據(jù)支持。在系統(tǒng)對外提供服務(wù)的過程中,持續(xù)地接受請求并處理響應(yīng),同時持續(xù)地生成跟蹤記錄,按次序整理并跟蹤記錄中每一個應(yīng)用服務(wù)跨度的調(diào)用關(guān)系,能夠繪制出一幅系統(tǒng)的服務(wù)調(diào)用拓?fù)鋱D[4]。根據(jù)拓?fù)鋱D中應(yīng)用服務(wù)跨度記錄的時間信息和響應(yīng)結(jié)果(正?;虍惓7祷兀?,可以定位到緩慢或者出錯的服務(wù);將跟蹤記錄與歷史記錄進行對比統(tǒng)計,可以從系統(tǒng)整體層面分析服務(wù)性能,達到優(yōu)化故障定位性能的目標(biāo)。
基于日志和網(wǎng)絡(luò)流量的跟蹤技術(shù)是將跟蹤記錄、應(yīng)用服務(wù)跨度等信息直接集成到采集的日志中,然后隨著所有節(jié)點的日志歸集過程匯聚到一起,根據(jù)全局日志信息中反推出完整的調(diào)用鏈拓?fù)潢P(guān)系。
2.3.3 統(tǒng)一監(jiān)控度量標(biāo)準(zhǔn)實現(xiàn)精準(zhǔn)預(yù)警
從總體上來看,統(tǒng)一監(jiān)控度量可分為網(wǎng)絡(luò)流量和終端日志數(shù)據(jù)的指標(biāo)收集、服務(wù)端的存儲查詢以及終端的監(jiān)控預(yù)警3 個相對獨立的過程。度量的目的是揭示系統(tǒng)的總體運行狀態(tài);統(tǒng)一監(jiān)控度量能夠采用經(jīng)過聚合統(tǒng)計后的高維度信息,以最簡單、直觀的方式分析系統(tǒng)復(fù)雜運行過程,為監(jiān)控、預(yù)警提供決策支持。
指標(biāo)收集部分要解決兩個問題,即“如何定義指標(biāo)”以及“如何將這些指標(biāo)告訴服務(wù)端”。無論目標(biāo)是何系統(tǒng),都具備一些共性特征。在確定目標(biāo)系統(tǒng)前無法決定要收集什么指標(biāo),但指標(biāo)的數(shù)據(jù)類型是可數(shù)的,即通過設(shè)計指標(biāo)的數(shù)據(jù)類型確定目標(biāo)系統(tǒng)要收集的指標(biāo)。
(1)計數(shù)度量器。計數(shù)器為最常用的指標(biāo)形式,對有相同量綱、可加減數(shù)值的合計量,像服務(wù)調(diào)用次數(shù)、網(wǎng)站訪問人數(shù)等都屬于計數(shù)器指標(biāo)。
(2)瞬態(tài)度量器。瞬態(tài)度量器用來表示某個指標(biāo)在某個時點的數(shù)值,比如Java 虛擬機內(nèi)存的使用量或云平臺用戶在線人數(shù)都屬于瞬態(tài)度量器。
(3)吞吐率度量器。吞吐率度量器是用于統(tǒng)計單位時間的吞吐量,即單位時間內(nèi)某個事件的發(fā)生次數(shù)。譬如交易系統(tǒng)中常以TPS 衡量事務(wù)吞吐率,即一秒內(nèi)發(fā)生了多少筆事務(wù)交易。
(4)直方圖度量器。直方圖是常見的二維統(tǒng)計圖,包含兩個坐標(biāo),分別是統(tǒng)計樣本和該樣本對應(yīng)的某個屬性的度量,以長條圖的形式表示具體數(shù)值。
(5)采樣點分位圖度量器。分位圖是統(tǒng)計學(xué)中通過比較各分位數(shù)的分布情況的工具,用于驗證實際值與理論值的差距,評估理論值與實際值之間的擬合度。
在解決“如何將這些指標(biāo)告訴服務(wù)端”的問題時,通常采用拉取式采集或推送式采集方案。所謂拉取式采集,強調(diào)主動從目標(biāo)系統(tǒng)中拉取指標(biāo)。與之相對,推送式采集就是由目標(biāo)系統(tǒng)主動推送指標(biāo)。指標(biāo)從目標(biāo)系統(tǒng)采集過來之后,應(yīng)存儲在后端監(jiān)控時序型數(shù)據(jù)庫中,方便后續(xù)的分析界面、監(jiān)控預(yù)警所使用。時序數(shù)據(jù)庫用于存儲跟隨時間而變化的數(shù)據(jù),并且以時間(時間點或者時間區(qū)間)來建立索引的數(shù)據(jù)庫[5]。
指標(biāo)度量是手段,最終目的是做分析和預(yù)警。良好的可視化能力對于提升度量系統(tǒng)的產(chǎn)品力十分重要,長期趨勢分析(如根據(jù)對磁盤增長趨勢的觀察判斷什么時候需要擴容)、對照分析(如版本升級后對比新舊版本的性能、資源消耗等方面的差異)、故障分析(不僅從日志、追蹤自底向上可以分析故障,高維度的度量指標(biāo)也可能自頂向下尋找到問題的端倪)等分析工作,既需要度量指標(biāo)的持續(xù)收集、統(tǒng)計,還需要對數(shù)據(jù)進行可視化,才能完成數(shù)據(jù)規(guī)律挖掘。
度量信息的另一種主要的消費途徑是用來做預(yù)警。如當(dāng)磁盤消耗超過90%時給用戶發(fā)送一封郵件或是一條微信消息,通知管理員過來處理,則能完成系統(tǒng)故障預(yù)警。通過設(shè)置某個指標(biāo)在多長時間內(nèi)達到何種條件就會觸發(fā)預(yù)警狀態(tài),觸發(fā)預(yù)警后,根據(jù)接收器的策略(郵件接收器、Slack 接收器、微信接收器,或者以通用的WebHook(opens new window)接收器等)自動通知用戶。
云網(wǎng)智能監(jiān)測平臺與傳統(tǒng)的主機監(jiān)控有相似和重合的地方,如計算、存儲、網(wǎng)絡(luò)等主機資源的監(jiān)控,對進程、磁盤IO、網(wǎng)絡(luò)流量等系統(tǒng)指標(biāo)的監(jiān)控等。
針對云網(wǎng)智能監(jiān)測平臺實施運維監(jiān)控,依然需采用傳統(tǒng)的監(jiān)控指標(biāo),但還需考慮到云原生中采用的容器、服務(wù)網(wǎng)格、微服務(wù)等新技術(shù)、新架構(gòu)的監(jiān)控需求和面臨的運維挑戰(zhàn)。例如,在資源層面要實現(xiàn)CPU、內(nèi)存等在容器、Pod、Service、Tenant 等不同層次的識別和映射;在進程的監(jiān)控上要能夠精準(zhǔn)識別到容器,甚至需細化到進程的系統(tǒng)調(diào)用、內(nèi)核功能調(diào)用等層面;在網(wǎng)絡(luò)上,除了主機物理網(wǎng)絡(luò)之外,還包括Pod 之間的虛擬化網(wǎng)絡(luò),并且需對應(yīng)用之間的Mesh 網(wǎng)絡(luò)流量實施觀測。
從應(yīng)用層來看,在微服務(wù)架構(gòu)下,主機上的應(yīng)用變得異常復(fù)雜,既包括應(yīng)用本身的平均延時、應(yīng)用間的API 調(diào)用鏈、調(diào)用參數(shù)等,還包括應(yīng)用所承載的業(yè)務(wù)信息,比如業(yè)務(wù)調(diào)用邏輯、參數(shù)等信息。
通過分析應(yīng)用系統(tǒng)的指標(biāo)、鏈路、日志等數(shù)據(jù),構(gòu)建完整的觀測模型,從而實現(xiàn)故障診斷、原因分析和快速恢復(fù)。