PaaS技術的廣泛應用需要新的監(jiān)控技術。這是因為有效的監(jiān)控對于促進資源自動伸縮、維持高可用性、管理多租戶(多種應用共享資源),以及識別應用和PaaS系統(tǒng)中的性能缺陷是至關重要的。
為了從PaaS操作環(huán)境中提取充足的信息,必須具備完整和全面的性能數(shù)據(jù),并且進行有效率的數(shù)據(jù)收集——而且收集操作對系統(tǒng)性能不能有太多的影響。因此,應用性能監(jiān)控(Application Performance Monitoring,APM)系統(tǒng)成功的關鍵之處就在于要能夠有效解決這些問題并且進行相關的權衡取舍。
本文提出了一個新的PaaS APM設計,該云APM系統(tǒng)不是通常人們最為熟悉的外部系統(tǒng),而是一個與PaaS云平臺緊密集成的系統(tǒng),我們充分利用并增加了現(xiàn)有的組件以提供全面和全棧式的監(jiān)控、分析和可視化管理。
該設計充分利用了目前PaaS平臺所具有的資源彈性伸縮、容錯性、安全性和控制特性,同時為云應用提供了低開銷和端到端的監(jiān)控和分析方法。
云APM設計與PaaS集成
與大多數(shù)的系統(tǒng)監(jiān)控解決方案一樣,新的云APM具有數(shù)據(jù)采集、存儲、處理(包括數(shù)據(jù)分析)和可視化等特點。
傳感器和代理提供PaaS云平臺的應用程序和核心組件,可以收集數(shù)據(jù)。傳感器對于一個特定組件而言是靜態(tài)的,而軟件代理則更為復雜,可以智能地適應不斷變化的情況,包括對信息采集進行動態(tài)決策——采集什么信息?以及什么時候、如何采集信息?鑒于傳感器和代理能夠影響行為和性能,它們必須重量小,并且支持非侵入式部署。為達到這些標準,確保準確性,我們將定期的、非窮盡抽樣與整個軟件堆棧的傳感器和代理的智能配置加以結合。
在性能數(shù)據(jù)的存儲和處理方面,我們充分利用PaaS自身提供的可擴展、長期、高度可用的分布式服務。具體而言,我們的系統(tǒng)使用可擴展的鍵值存儲、緩存系統(tǒng)、關系數(shù)據(jù)庫系統(tǒng)、高性能搜索系統(tǒng),以及批量和串流分析框架,來構建PaaS業(yè)務生態(tài)系統(tǒng)。對于PaaS系統(tǒng)間的可移植性,各功能定義一個應用軟件編程接口(Application Programming Interface,API)。通過這些接口,各功能可以與PaaS組件和業(yè)務進行互動。為了能夠與新的PaaS交互,API操作被重寫并與該PaaS的操作相關聯(lián)。
圖1展示了APM與一個典型PaaS堆棧的集成。左側深藍色的區(qū)域表示PaaS的架構。箭頭指示則針對響應應用請求的數(shù)據(jù)和命令的方向。PaaS云平臺的最底層,即基礎設施層由必要的計算、存儲和網(wǎng)絡資源組成。PaaS可以動態(tài)獲取并且釋放這些資源。
PaaS內(nèi)核就是一組可管理、可擴展的業(yè)務。這些業(yè)務執(zhí)行大多數(shù)云應用程序所需的通用功能。應用開發(fā)人員將這些業(yè)務組合起來進行創(chuàng)新。這些業(yè)務通常包括數(shù)據(jù)存儲和緩沖、隊列服務、認證、用戶管理,以及眾多的其它業(yè)務。
APM架構
PaaS云平臺提供一個API(云軟件開發(fā)工具包)管理集。開發(fā)人員利用這些API將PaaS功能連接到應用程序上。云軟件開發(fā)工具包——類似PaaS代理機制——簡化、控制以及負載均衡針對應用程序和系統(tǒng)間PaaS業(yè)務的訪問。
應用服務器執(zhí)行應用程序的副本并且連接應用代碼和下層的PaaS內(nèi)核。同時,這些服務器還將應用代碼隔離起來以確保安全的多用戶操作,并提供業(yè)務控制和計費服務。負載均衡器(或者前端)作為應用程序的入口點,可以攔截應用請求,過濾并發(fā)送給適當?shù)姆⻊掌鲗嵗?/div>
回到圖1中,與PaaS組件相連的灰色小方框代表用于監(jiān)控這個云平臺組件的傳感器和代理。它們可以收集事件和性能數(shù)據(jù)。APM收集來自PaaS堆棧(全棧式監(jiān)控)各層的數(shù)據(jù)。測量速率是可配置的,并且在許多情況下具有自適應性。傳感器和代理程序利用批量操作和異步通信來減少性能故障和費用開銷。
APM收集來自前端和負載均衡層的信息,這些信息與后續(xù)的應用請求相關。監(jiān)控代理分析HTTP服務器日志以提取時間戳、源/目標地址、響應時間和其它參數(shù)。通常這些信息隨時通過目前使用的大部分前端技術,例如Apache HTTPD和Nginx來進行采集。另外,代理還收集活動連接、無效訪問嘗試和HTTP錯誤信息。
在應用服務器層內(nèi)部,傳感器收集應用和運行時間/容器日志數(shù)據(jù)。這些數(shù)據(jù)一般包括表明單個應用實例的資源使用情況的流程級指標。針對日志文件進行分析可以避免因為構建應用程序和應用服務器而產(chǎn)生的高開銷。當然,如果收益能夠沖抵開銷的話,還是可以增加額外的應用程序和應用服務器的。
在PaaS內(nèi)核中,我們在所有PaaS業(yè)務的入口點都做了如下部署:
- 收集主叫人和被叫人信息;
- 時間戳;
- 各操作調(diào)用的執(zhí)行時間;
- 請求細節(jié),包括參數(shù)長度和哈希。
這有助于區(qū)別PaaS的不同執(zhí)行階段,匯總和描述操作調(diào)用實例。同時也可以實現(xiàn)低開銷和準確的全棧式監(jiān)控。
可以通過云基礎設施收集來自虛擬機、操作系統(tǒng)容器,以及各物理主機與進程和資源使用相關的信息。這一層的大多數(shù)傳感器可以分析日志、查詢Linux proc文件系統(tǒng)、收集網(wǎng)絡/CPU/內(nèi)存/資源配置的相關指標,以及管理和編排框架做出的回收決定。
收集到的信息支持集群活動和全系統(tǒng)事件。由于PaaS系統(tǒng)通常承載Web應用和服務,因而我們的APM設計將Web請求看作事件。每個HTTP請求頭都附有一個請求識別碼,對所有組件均可見。然后適當?shù)腁PM代理經(jīng)過配置來記錄這些識別碼。數(shù)據(jù)處理層隨后利用請求識別碼進行集群測量,用于單個Web請求的端到端系統(tǒng)分析。
數(shù)據(jù)處理層存儲并提供可擴展的性能數(shù)據(jù)訪問。該數(shù)據(jù)處理層還支持例行的插件分析,可以用來描述隨時間變化的應用與系統(tǒng)行為、檢測行為和性能的異常與工作量變化,并且識別出能夠實現(xiàn)更有效的資源利用,以及資源、業(yè)務和應用實例的自動縮放的機遇。
這些分析程序可以進行推理和預測,并且利用統(tǒng)計分析庫批量處理業(yè)務和搜索查詢系統(tǒng)。
APM的基礎:彈性棧
經(jīng)過全方位評估,我們選擇Elastic Stack作為APM的基礎。Elastic Stack是一種開源分布式系統(tǒng),建立在Linux KVM(Kernel-based Virtual Machine)基礎之上,用于數(shù)據(jù)存儲和處理。
Elastic Stack包括3大組成部分,即ElasticSearch、Logstash和Kibana。
- ElasticSearch:支持通過自動分庫和復制實現(xiàn)結構化和半結構化數(shù)據(jù)的可擴展、高可用性管理;同時,其還提供全面的數(shù)據(jù)索引、過濾、匯總和查詢支持,可以簡化上層數(shù)據(jù)處理算法的實施過程。ElasticSearch在諸如Spark和MapReduce等大數(shù)據(jù)工作流中易于整合,實現(xiàn)高級分析。
- Logstash:有利于將數(shù)據(jù)從廣泛的標準日志格式中提取出來。通過簡單配置可以支持自定義日志格式。
- Kibana:提供強大的基于Web的儀表盤,支持大量的圖表、表格和時間序列。另外,自定義數(shù)據(jù)處理與分析組件及其擴展可以根據(jù)對度量系統(tǒng)的研究實現(xiàn)對可視化數(shù)據(jù)的優(yōu)化,從而更加便于提取有價值的信息。
APM應用案例
以下的應用案例利用APM收集的PaaS性能數(shù)據(jù)來提供新的PaaS特性。其中有兩個特別令人感興趣的問題:第一,APM系統(tǒng)如何幫助預測部署在PaaS云平臺端的Web應用的基于性能的服務等級目標(Service Level Objective,SLO)?第二,性能異常是如何在PaaS堆棧中被偵測出來的?
應用響應時間預測
該AMP應用案例提供可擴展和精確的響應時間預測,能夠在云供應商和PaaS用戶間充當各應用程序SLO的角色。為實現(xiàn)這一目標,我們將托管Web應用的靜態(tài)程序分析和PaaS云平臺的APM監(jiān)控結合起來。因為我們希望在PaaS用戶安裝這些應用的時候為其提供預測,所以在PaaS云平臺上安裝或運行一個應用之前會進行這一靜態(tài)分析。
對于每個功能路徑,我們的靜態(tài)分析通過傳統(tǒng)技術提取PaaS內(nèi)核呼叫清單以進行基于抽象解釋的循環(huán)邊界分析、分支預測和最壞情況下的執(zhí)行時間分析。為節(jié)省開銷,我們禁止應用程序收集運行時的性能指標。相反地,這些清單被記錄在APM系統(tǒng)中,業(yè)務也在該系統(tǒng)中獨立于應用程序的執(zhí)行之外受到監(jiān)控。
該系統(tǒng)利用APM收集的PaaS內(nèi)核業(yè)務性能數(shù)據(jù),隨后分析程序提取清單中每個業(yè)務操作執(zhí)行時間的時間序列,預測方法計算應用響應時間的統(tǒng)計邊界,然后云供應商再把這些值作為性能SLO的基礎。
為了預測SLO,我們采用基于時間序列的隊列邊界估算法(Queue Bounds Estimation from Time Series,QBETS),這是我們設計用來預測在高性能計算環(huán)境中批量隊列系統(tǒng)的調(diào)度延遲的一種非參數(shù)的時間序列分析方法。我們對這一方法進行優(yōu)化,使其可以在PaaS APM系統(tǒng)中用來支持“X即服務”以便估算安裝應用所需的響應時間。
由于PaaS業(yè)務和平臺行為負載隨時間而變化,預測出的SLO可能隨時間的推移而失效。我們的系統(tǒng)可以檢測SLO違規(guī),因此云供應商可以進行重新協(xié)商。當此類失效情況出現(xiàn)時,PaaS會觸發(fā)APM的SLO分析程序以建立新的SLO。
目前,我們的云APM已整合在谷歌應用程序引擎內(nèi),以及開源PaaS AppScale的完整的堆棧中,以使用這些平臺對運行在其上的開源Java Web應用進行廣泛的測試和實證評估。我們發(fā)現(xiàn)我們的系統(tǒng)在任何情況下都可以生成準確的SLO。
性能異常檢測
人們開發(fā)了無數(shù)的統(tǒng)計模型用于動態(tài)檢測性能異常,然而之前的大部分工作只關注簡單、獨立的應用程序。我們的目標是為基于PaaS(分布式)的Web應用提供異常檢測。為此,我們部署了大量名為異常檢測器的APM分析插件,這些設備可以定期分析PaaS中安裝的每個應用的性能數(shù)據(jù)。
每個檢測器使用不同的檢測統(tǒng)計方法。應用級的檢測器支持不同的應用使用一個或多個不同的異常檢測器。每個檢測器配有執(zhí)行時間表和單個已處理數(shù)據(jù)的滑動窗口,例如,從10分鐘前直到現(xiàn)在。
除此之外,路徑異常檢測器利用PaaS內(nèi)核呼叫清單檢測每個應用請求處理路徑。在這種情況下,來自PaaS內(nèi)核(PaaS內(nèi)核調(diào)用數(shù)據(jù))的數(shù)據(jù)用于推測單個應用的執(zhí)行路徑。檢測器計算不同路徑的頻率分布,檢測該分布隨時間的變化情況,識別新路徑、最頻繁的執(zhí)行路徑以及路徑頻率分布中的重要變化。
一旦檢測到異常情況,檢測器會發(fā)送事件給一組異常處理器。該事件包括與異常情況對應的唯一的異常識別碼、時間戳、應用識別碼和源檢測器的滑動窗口。異常處理器支持全局配置,也可以設置為忽略特定的事件類別。與檢測器一樣,APM支持大量的異常處理器,用于處理日志異常、發(fā)送告警郵件,以及更新儀表盤等等。
此外,我們還提供兩種特殊的異常處理器:一種是工作量變化分析器,另外一種是根因分析器。
工作量變化分析器利用一套變化點檢測算法分析歷史工作量趨勢。
根因分析器評估PaaS內(nèi)核呼叫歷史趨勢,試圖決定最有可能導致異常云(在PaaS內(nèi)核中)的組件。
異常檢測器和異常處理器與固定大小的滑動窗口協(xié)同工作,在滑動窗口隨時間線移動的同時丟棄舊數(shù)據(jù)。由于這些實體必須儲存的狀態(tài)信息的數(shù)量有嚴格的上限,因而程序都是輕量級的。如有必要,歷史數(shù)據(jù)能夠被保存在APM中進行線下批量處理。
指導新的PaaS業(yè)務
由于PaaS的應用日益受到歡迎,利用技術進行監(jiān)控、分析已安裝應用的性能和行為變得十分重要。然而,大多數(shù)PaaS云平臺無法為輕量級、全棧式的性能、數(shù)據(jù)收集和分析提供足夠的支持。
人們已經(jīng)設計了許多監(jiān)控框架來支持收集和分析性能數(shù)據(jù)以獲取系統(tǒng)行為、性能、可用性和故障信息。不幸的是,雖然許多框架都不同程度地支持數(shù)據(jù)搜集、存儲、分析和可視化,但沒有一個能夠作為云平臺的一部分而運行。數(shù)據(jù)存儲機制、API和配置模型作為獨立實體,旨在監(jiān)控服務器或應用程序,無法在更大的系統(tǒng)中支持端到端的請求流跟蹤。并且,它們不易擴展,僅支持基本的度量計算,不支持相關性或根因分析。
我們提出了新的易于整合的APM系統(tǒng)作為一個解決方案,該系統(tǒng)可以利用PaaS云平臺的特點進行全面、全棧式監(jiān)控和分析。通過定義一套API呼叫,該APM可以整合到PaaS系統(tǒng)中,促進推理和預測。這一功能可以用來指導新的PaaS業(yè)務,包括應用安裝時的響應時間SLO、全系統(tǒng)的性能異常和工作量變化點檢測,以及應用性能異常的根因分析。
Chandra Krintz和Rich Wolski/文
加利福尼亞大學圣芭芭拉分校計算機科學系適應性計算環(huán)境研究實驗室主任
相關閱讀:
- ·網(wǎng)絡重構 企業(yè)數(shù)字化轉型邁出關鍵一步2016-12-30 10:32:38
- ·華為企業(yè)BG總裁閻力大:行業(yè)云激發(fā)商業(yè)再創(chuàng)新2016-12-27 10:59:14
- ·華為全球公共安全首席專家:向協(xié)作式公共安全演進2016-12-19 10:27:20
- ·云時代的數(shù)字經(jīng)營戰(zhàn)略2016-11-02 10:11:11
- ·云時代 華為與埃森哲攜手助力企業(yè)轉型2016-11-02 10:01:54
- ·華為輪值CEO胡厚崑:站在云端看世界2016-10-31 09:59:28
- ·中科院院士梅宏用5個字描繪云計算的未來2016-10-25 09:25:32
- ·云:未來由您創(chuàng)造2016-10-24 10:02:15
- ·華為云視訊讓企業(yè)云通信真正實現(xiàn)“化云為雨”2016-10-17 17:15:03
- ·云計算將成為媒體融合發(fā)展、數(shù)字化變革的加速劑2016-10-11 10:28:14