基于公共云計(jì)算的應(yīng)用性能不盡人意,導(dǎo)致終端用戶(hù)使用受挫。來(lái)自PaaS和IaaS提供商的SLAs總體上有效,但并非整體響應(yīng)時(shí)間。DevOps團(tuán)隊(duì)則通過(guò)使用不同的工具來(lái)監(jiān)控云計(jì)算應(yīng)用的性能。
來(lái)自北美的350名IT專(zhuān)家評(píng)估得出,每年會(huì)因基于云計(jì)算應(yīng)用的性能問(wèn)題而平均損失掉98萬(wàn)5260美元的收入,這份調(diào)查出自于Compuware。歐盟的調(diào)查對(duì)象表示,會(huì)平均損失掉77萬(wàn)7000美元。應(yīng)用性能問(wèn)題導(dǎo)致58%的北美調(diào)查對(duì)象和57%的歐盟調(diào)查對(duì)象暫緩使用基于云計(jì)算的應(yīng)用。
調(diào)查還發(fā)現(xiàn),94%的北美調(diào)查對(duì)象和84%的歐盟調(diào)查對(duì)象認(rèn)為云應(yīng)用服務(wù)等級(jí)協(xié)議(SLAs)應(yīng)該是基于實(shí)際終端用戶(hù)的經(jīng)驗(yàn),而不僅僅是服務(wù)提供商的可用性指標(biāo)。不過(guò)這種天真的相互估計(jì)很難說(shuō)服公共或私有云提供商提供高昂代價(jià)的點(diǎn)對(duì)點(diǎn)SLAs。因此,剩下就是DevOps的工作了,通過(guò)錯(cuò)誤日志、分析和診斷代碼來(lái)測(cè)量基于云計(jì)算的應(yīng)用。
話(huà)說(shuō)回來(lái),什么樣的方式才是監(jiān)視數(shù)據(jù)密集型應(yīng)用的性能的最佳方式呢?來(lái)自Pingdom.com,Mon.itor.us或是其他監(jiān)控提供商站點(diǎn)的免費(fèi)或是低價(jià)的運(yùn)行時(shí)與響應(yīng)時(shí)間報(bào)告,可以驗(yàn)證應(yīng)用能否滿(mǎn)足SLAs和點(diǎn)到點(diǎn)站點(diǎn)性能。
像LoadStorm和Soasta這樣的公司銷(xiāo)售定制化的云應(yīng)用負(fù)荷測(cè)試。Compuware的CloudSleuth站點(diǎn)提供免費(fèi)一個(gè)月的,有關(guān)主要云基礎(chǔ)設(shè)施及服務(wù)(IaaS)和平臺(tái)及服務(wù)(PaaS)提供商的點(diǎn)到點(diǎn)響應(yīng)時(shí)間的全球性能排名。
圖1展示了Windows Azure的樣例工程,該工程演示了在一張Azure表上的進(jìn)行分頁(yè)、創(chuàng)建、讀取、更新以及刪除(CRUD)操作。在OakLeaf的Azure Table Services Sample Project上操作這些,對(duì)于代碼執(zhí)行將導(dǎo)致負(fù)值。
圖1. Windows Azure樣例工程的分頁(yè)和CRUD操作。
窗口底部的Time文字框顯示了最后操作的代碼執(zhí)行時(shí)間,對(duì)于新頁(yè)是28ms。清除了Batch Updates復(fù)選框,你將看到在91個(gè)用戶(hù)記錄上進(jìn)行獨(dú)立的CRUD操作的執(zhí)行時(shí)間急劇增加。
光靠報(bào)告是不夠的;組織還必須收購(gòu)或開(kāi)發(fā)本地的診斷管理工具來(lái)下載和分析性能日志,并發(fā)送警告和圖形化報(bào)告。像Amazon Web Services這樣的IaaS提供商集中精力靠本地指標(biāo)構(gòu)建他們的硬件;像Windows Azure和SQL Azure這樣的PaaS產(chǎn)品則對(duì)應(yīng)用及其代碼提供更為深入的,專(zhuān)業(yè)的認(rèn)知。
AWS的CloudWatch如何監(jiān)控性能
Amazon CloudWatch允許DevOps團(tuán)隊(duì)自動(dòng)地監(jiān)控Amazon Elastic Compute Cloud(EC2)實(shí)例的CPU,數(shù)據(jù)傳輸,磁盤(pán)活動(dòng),延遲以及請(qǐng)求次數(shù)。對(duì)于EC2實(shí)例,EBS卷,SQS隊(duì)列,SNS主題,Elastic Load Balancers還有Amazon RDS數(shù)據(jù)庫(kù)實(shí)例的基本測(cè)量是每五分鐘一次且沒(méi)有額外費(fèi)用。你可以在AWS Management Console的CloudWatch標(biāo)簽頁(yè)上增加標(biāo)準(zhǔn)測(cè)量和警告,可以通過(guò)導(dǎo)航到Navigation Pane上的Metric頁(yè)面來(lái)觀察測(cè)量圖表(圖2)。
圖2. EC2實(shí)例的CPU利用指標(biāo)圖
EC2實(shí)例的CPU利用指標(biāo)圖,根據(jù)EC2 Image ID匯總,剩余六個(gè)指標(biāo)構(gòu)成對(duì)EC2鏡像的第7個(gè)基本測(cè)量。
DevOps團(tuán)隊(duì)可以使用AWS的自動(dòng)伸縮特性來(lái)提供彈性化的使用功能,只須根據(jù)應(yīng)用的CloudWatch指標(biāo)參數(shù),動(dòng)態(tài)增加或刪除Amazon EC2實(shí)例。在2011年7月,AWS增加了新的通知,循環(huán)和其他自動(dòng)化伸縮特性。
CloudWatch不提供內(nèi)建的應(yīng)用監(jiān)視測(cè)量,因?yàn)锳WS是IaaS產(chǎn)品,是與操作系統(tǒng)和開(kāi)發(fā)平臺(tái)無(wú)關(guān)的。然而,開(kāi)發(fā)者可以開(kāi)發(fā)應(yīng)用來(lái)提交API請(qǐng)求響應(yīng)應(yīng)用事件,例如處理或不處理錯(cuò)誤,函數(shù)或模塊執(zhí)行時(shí)間,以及其它與應(yīng)用相關(guān)的測(cè)量。
Windows Azure性能日志與分析
自2010年1月微軟PaaS服務(wù)問(wèn)世以來(lái),為了該平臺(tái)的穩(wěn)定,Windows Azure團(tuán)隊(duì)已先后增加日志,分析和診斷功能。由于Windows Azure Portal的界面不支持添加測(cè)量,分析和預(yù)警功能,DevOps團(tuán)隊(duì)必須自己書(shū)寫(xiě)代碼和編輯配置文件以實(shí)現(xiàn)對(duì)Windows Azure的計(jì)算與存儲(chǔ)服務(wù)的診斷與記錄。表1列出了2010年6月可以被DevOps通過(guò)Windows Azure的Diagnostic API用于分析的各類(lèi)日志。
表1. Windows Azure診斷數(shù)據(jù)收集日志及相關(guān)Azure表和二進(jìn)制大對(duì)象(BLOBs),對(duì)BLOB而言可通過(guò)Windows Azure SDK v1.2存儲(chǔ)日志數(shù)據(jù)。
SDK v.1.4和面向Azure v1.4的Visual Studio Tools通過(guò)Visual Studio 2010高級(jí)版或旗艦版增加了文檔化Windows Azure應(yīng)用的功能,當(dāng)應(yīng)用運(yùn)行在Windows Azure產(chǎn)品內(nèi)部時(shí)。2011年8月初的工具升級(jí)和新的Windows Azure Storage Analytics特性為存儲(chǔ)賬戶(hù)實(shí)現(xiàn)了日志跟蹤執(zhí)行請(qǐng)求功能,同時(shí)為測(cè)量提供了摘要功能,并對(duì)二進(jìn)制大對(duì)象(BLOBs),表以及隊(duì)列的請(qǐng)求進(jìn)行統(tǒng)計(jì)。
8月22號(hào)的升級(jí)樣例工程可生成以表與二進(jìn)制大對(duì)象存儲(chǔ)的分析表,以及基于TraceWriter對(duì)象的內(nèi)部時(shí)序數(shù)據(jù),但需要單獨(dú)的應(yīng)用來(lái)讀取、顯示和管理診斷。Cerebrata的Azure Diagnostics Manager可以按照表格或圖的形式讀取并顯示日志和診斷數(shù)據(jù)。該公司免費(fèi)的Windows Azure Storage Configuration Utility幫助IT運(yùn)維團(tuán)隊(duì),在無(wú)須書(shū)寫(xiě)代碼的前提下開(kāi)啟存儲(chǔ)分析功能。Cerebrata的Cloud Storage Studio還增加了表與二進(jìn)制大對(duì)象的管理功能(見(jiàn)圖3)。
圖3. Cerebrata即將問(wèn)世的Cloud Storage Studio v2的Beta版
面向Windows Azure 應(yīng)用的System Center Monitoring Pack,為使用System Center Operations Manager(SCOM)2007和2010 beta版本的用戶(hù),提供了類(lèi)似Cerebrata的產(chǎn)品。目前,自動(dòng)化伸縮Windows Azure需要第三方的解決方案,諸如Paraleap的AzureWatch,手工的.NET函數(shù)或是即將問(wèn)世的面向Enterprise Library 的Windows Azure Integration Pack。監(jiān)控SQL Azure數(shù)據(jù)庫(kù)要求你使用SQL Azure的三類(lèi)不同的動(dòng)態(tài)管理視圖:數(shù)據(jù)庫(kù)相關(guān)視圖,執(zhí)行相關(guān)視圖以及事務(wù)處理相關(guān)視圖。