随着.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,希望大家一起交流进步!