基于公共云计算的应用性能不尽人意,导致终端用户使用受挫。来自PaaS和IaaS提供商的SLAs总体上有效,但并非整体响应时间。DevOps团队则通过使用不同的工具来监控云计算应用的性能。
来自北美的350名IT专家评估得出,每年会因基于云计算应用的性能问题而平均损失掉98万5260美元的收入,这份调查出自于Compuware。欧盟的调查对象表示,会平均损失掉77万7000美元。应用性能问题导致58%的北美调查对象和57%的欧盟调查对象暂缓使用基于云计算的应用。
调查还发现,94%的北美调查对象和84%的欧盟调查对象认为云应用服务等级协议(SLAs)应该是基于实际终端用户的经验,而不仅仅是服务提供商的可用性指标。不过这种天真的相互估计很难说服公共或私有云提供商提供高昂代价的点对点SLAs。因此,剩下就是DevOps的工作了,通过错误日志、分析和诊断代码来测量基于云计算的应用。
话说回来,什么样的方式才是监视数据密集型应用的性能的最佳方式呢?来自Pingdom.com,Mon.itor.us或是其他监控提供商站点的免费或是低价的运行时与响应时间报告,可以验证应用能否满足SLAs和点到点站点性能。
像LoadStorm和Soasta这样的公司销售定制化的云应用负荷测试。Compuware的CloudSleuth站点提供免费一个月的,有关主要云基础设施及服务(IaaS)和平台及服务(PaaS)提供商的点到点响应时间的全球性能排名。
图1展示了Windows Azure的样例工程,该工程演示了在一张Azure表上的进行分页、创建、读取、更新以及删除(CRUD)操作。在OakLeaf的Azure Table Services Sample Project上操作这些,对于代码执行将导致负值。
图1. Windows Azure样例工程的分页和CRUD操作。
窗口底部的Time文字框显示了最后操作的代码执行时间,对于新页是28ms。清除了Batch Updates复选框,你将看到在91个用户记录上进行独立的CRUD操作的执行时间急剧增加。
光靠报告是不够的;组织还必须收购或开发本地的诊断管理工具来下载和分析性能日志,并发送警告和图形化报告。像Amazon Web Services这样的IaaS提供商集中精力靠本地指标构建他们的硬件;像Windows Azure和SQL Azure这样的PaaS产品则对应用及其代码提供更为深入的,专业的认知。
AWS的CloudWatch如何监控性能
Amazon CloudWatch允许DevOps团队自动地监控Amazon Elastic Compute Cloud(EC2)实例的CPU,数据传输,磁盘活动,延迟以及请求次数。对于EC2实例,EBS卷,SQS队列,SNS主题,Elastic Load Balancers还有Amazon RDS数据库实例的基本测量是每五分钟一次且没有额外费用。你可以在AWS Management Console的CloudWatch标签页上增加标准测量和警告,可以通过导航到Navigation Pane上的Metric页面来观察测量图表(图2)。
图2. EC2实例的CPU利用指标图
EC2实例的CPU利用指标图,根据EC2 Image ID汇总,剩余六个指标构成对EC2镜像的第7个基本测量。
DevOps团队可以使用AWS的自动伸缩特性来提供弹性化的使用功能,只须根据应用的CloudWatch指标参数,动态增加或删除Amazon EC2实例。在2011年7月,AWS增加了新的通知,循环和其他自动化伸缩特性。
CloudWatch不提供内建的应用监视测量,因为AWS是IaaS产品,是与操作系统和开发平台无关的。然而,开发者可以开发应用来提交API请求响应应用事件,例如处理或不处理错误,函数或模块执行时间,以及其它与应用相关的测量。
Windows Azure性能日志与分析
自2010年1月微软PaaS服务问世以来,为了该平台的稳定,Windows Azure团队已先后增加日志,分析和诊断功能。由于Windows Azure Portal的界面不支持添加测量,分析和预警功能,DevOps团队必须自己书写代码和编辑配置文件以实现对Windows Azure的计算与存储服务的诊断与记录。表1列出了2010年6月可以被DevOps通过Windows Azure的Diagnostic API用于分析的各类日志。
表1. Windows Azure诊断数据收集日志及相关Azure表和二进制大对象(BLOBs),对BLOB而言可通过Windows Azure SDK v1.2存储日志数据。
SDK v.1.4和面向Azure v1.4的Visual Studio Tools通过Visual Studio 2010高级版或旗舰版增加了文档化Windows Azure应用的功能,当应用运行在Windows Azure产品内部时。2011年8月初的工具升级和新的Windows Azure Storage Analytics特性为存储账户实现了日志跟踪执行请求功能,同时为测量提供了摘要功能,并对二进制大对象(BLOBs),表以及队列的请求进行统计。
8月22号的升级样例工程可生成以表与二进制大对象存储的分析表,以及基于TraceWriter对象的内部时序数据,但需要单独的应用来读取、显示和管理诊断。Cerebrata的Azure Diagnostics Manager可以按照表格或图的形式读取并显示日志和诊断数据。该公司免费的Windows Azure Storage Configuration Utility帮助IT运维团队,在无须书写代码的前提下开启存储分析功能。Cerebrata的Cloud Storage Studio还增加了表与二进制大对象的管理功能(见图3)。
图3. Cerebrata即将问世的Cloud Storage Studio v2的Beta版
面向Windows Azure 应用的System Center Monitoring Pack,为使用System Center Operations Manager(SCOM)2007和2010 beta版本的用户,提供了类似Cerebrata的产品。目前,自动化伸缩Windows Azure需要第三方的解决方案,诸如Paraleap的AzureWatch,手工的.NET函数或是即将问世的面向Enterprise Library 的Windows Azure Integration Pack。监控SQL Azure数据库要求你使用SQL Azure的三类不同的动态管理视图:数据库相关视图,执行相关视图以及事务处理相关视图。