APM for .NET评测系列:OneAPM vs SCOM

随着.NET技术的开源和推广,越来越多的企业选择使用.NET语言开发业务系统,其性能问题是大家共同面临的最棘手的问题。 笔者在此向大家分享一款国内还算靠谱的产品OneAPM,来管理业务系统的性能及Http ERROR。并从安装,性能,功能等几个方面与SCOM进行一个简要的对比。

  安装   OneAPM:一键安装   OneAPM for .NET提供免费版和付费版。免费版开放了响应时间,http error监控等常用功能,一些深度剖析的功能需要付费,不过注册后可以试用15天。   安装方面基本上是一键安装,非常简单,步骤如下:   注册OneAPM官网账号   官网下载.NET Agent进行一键安装。   部署.NET应用程序到本地IIS并重启IIS,即可使用。   另外OneAPM支持的操作系统包含Windows Server 2003、Windows Server 2008、Windows Server 2012、Windows Vista、Windows7。   流程如图所示:

  官网查看应用性能情况   SCOM:对比而言安装比较复杂,需要很多先决条件   SCOM属于System Center产品组件,目前Microsoft不提供免费版使用,需要付费或者在一定的试用期内使用。其中标准版和数据中心版都包含SCOM组件,价格分别是$1,323和$3,607。   SCOM的安装需要一些先决条件,比较繁琐:   需要开启服务器管理器功能,并添加一些角色和功能。   需要安装System CLR Types for SQL Server 2012。   需要安装Reporting Viewer 2012。   安装Operations Manager。   导入Windows Server OS系统管理包。   导入APM对应IIS平台管理包。   导入APM管理包。   建立.NET APM监视,并根据提示重新启动IIS。   服务器自动启动APM监视服务,并等待Web应用程序数据收集。   另外SCOM的Web控制台和管理服务器功能需要的操作系统版本是Windows Server 2008 R2 Service Pack 1或更高的版本,并只能安装在Active Directory目录服务的网络上。   流程如图所示:

  性能   在开启代码级性能监控的同时,对系统自身性能的影响往往是最受关注的问题。   OneAPM:低于3%,有国内大型企业使用的案例   从Oneapm官方给的数据来看,这个值是低于3%。即安装.net探针后,对系统的CPU及内存的影响低于3%,一般这个程度的影响对系统来说是能够被接受的。   从使用案例上来看,积木盒子、药房网,中国移动等一些大中型企业的生产系统都在用这个产品。   SCOM:未发现官方性能数据及案例   目前Microsoft System Center官方并未给出开启代码级监控功能后,实际的性能损耗。   从使用案例上来看,目前没有了解到国内中大型企业在生产系统中使用SCOM的代码级监控的案例。   功能   下文中我将主要从代码级Trace、SQL以及Error三点常用功能对比OneAPM以及SCOM。   代码级Trace:能够定位到缓慢的方法类及Sql语句。   OneAPM   当系统发生错误和缓慢时,OneAPM提供了trace功能能够定位到代码中缓慢的方法类和Sql预计。   如图所示,我们可以看到OneAPM对Web事务(即一次http请求)的抓取。在左侧页面中,显示了Web事务的列表,用户可以查看事务的耗时,定位哪些http请求执行缓慢。

  对于需要做深度剖析的Web事务,可以点击详情,查看每个组件及方法类的性能。

  我们可以详尽地看到Trace耗时的时间戳。耗时百分比中将耗时最慢因素进行了红色标识,可以通过方法跟踪,辅助程序开发人员或者IT团队来修复问题。甚至,OneAPM还可以诊断出执行缓慢的SQL语句。很明显,一条Select语句是关键影响因素。  

  SCOM:能够定位到缓慢的方法类及Sql语句:   Application Diagnostics控制台是System Center 2012 - Operations Manager中.NET应用程序性能监视的事件管理系统。用户可以使用Application Diagnostics控制台监视部署的.NET应用程序是否出现减速、故障和失败,并且可以确定问题的来源。   在Application Diagnostics控制台中,可以查看网站APM性能及应用程序的错误,本质就是APM监视网站,提供给应用程序人员来做应用程序的监视。   同OneAPM相似,Application Diagnostics也为两种事件提供监测:一种与应用程序性能相关,一种与应用程序失败和错误(通常为链接或安全性问题)相关。我们这一小节主要简述程序性能,有关应用程序的失败和错误将在下文涉及。   如图所示,打开Application Diagnostics网站,可以查看某个应用的APM性能。   选择其中一个应用后,可以查看该应用下的其中一个请求,可以查看到该请求的耗时体验。SCOM也为用户提供了请求的堆栈信息,为运维人员向下挖掘到堆栈。

  通过这些堆栈信息可以获取到事件发生的顺序,在视图中还可以看到花费时间的概述以及问题的所在,以及提供了代码级别的APM数据。   数据库监控   OneAPM:缓慢的Sql列表及Sql trace   OneAPM不仅提供代码级的Traces,还提供了Database监控,与Web事务监控相似,SQL性能监控为我们提供了不一样的视角。从图中我们可以看到左侧罗列出的SQL语句,OneAPM为我们诊断出了每一个SQL语句的平均响应时间以及它们的吞吐量。

  点击一条你所关心的数据,就会在右侧页面看到它的详细情况。   与Web事务对应的Traces相似,我们同样可以看到某条SQL语句对应的多次慢SQL情况。   点击某一条所关心的SQL情况,就可以看到详情。OneAPM诊断出该条SQL语句的详细信息,包括调用该SQL的URL,方法类,执行计划等。   SCOM:未发现数据库监控功能   目前,笔者暂没发现SCOM提供像OneAPM一样的SQL维度视角的性能监测功能,如果有读者提出异议,非常欢迎指正。   对于Http ERROR的监控   OneAPM:抓取Http ERROR并抓取Error Trace   OneAPM默认监控非404的Http请求错误,通过OneAPM的监测,可以诊断出错误信息的详情。包括发生该错误的URL,代码栈,错误发生时间等信息。如图所示。

  SCOM   上文提到的Application Diagnostics为错误事件提供监测,一般与应用程序失败和错误(通常为链接或安全性问题)相关。打开Application Diagnostics网站,可以查看某个应用的程序错误信息。   框架/平台   基于.NET,两款产品对框架/平台上的支持情况如下:   OneAPM:支持主流   OneAPM支持所有的.NET语系,包含VB.NET、C#和C++/C LI for .NET 2.0及以上版本。   OneAPM支持的主要程序框架,包含MVC 2.0、MVC 3.0、MVC 4.0、ASP .NET WebAPI、ASP .NET Web Forms和SOAP-based Web Services。   OneAPM支持的框架为Microsoft .NET Framework 2.0以上版本。   SCOM:基于Microsoft .NET Framework   SCOM同样支持所有.NET语系,并支持基于Microsoft .NET Framework的应用程序。支持IIS5/6/7/8。   结语   从上述比较来看,我们发现OneAPM似乎更适应本土化用户使用习惯。   从安装的角度看,OneAPM安装更便捷,并且提供免费版,付费版也比SCOM价格低。   从性能的角度看,有很多国内的大中型的企业用户都在使用这个产品。   从核心功能点的角度看,OneAPM与SCOM都有深入诊断应用程序性能的能力,两者都能提供代码级别的应用性能诊断和故障定位,以及详尽的Traces记录和错误诊断,但OneAPM还提供对Database视角分析的性能监测,不仅仅提供Web事务的分析,而且使用上更加直观,简单。对此,SCOM是没有SQL维度的。   从可用性与性能体验方面的角度看,OneAPM和SCOM都有各自的机制为IT运营做决策分析,但OneAPM拥有面向真实用户体验的性能管理,视图更直观易懂,界面更加人性化。


     注:希望读者和小编一起感受OneAPM,小编也是初学者,文档有写的不妥的地方,欢迎指出,我的邮箱是corporation2013@163.com,希望大家一起交流进步!