NewRelic RPM是Ruby on Rails领域中非常流行的性能监控解决方案。近日最新版的RPM 2发布了,该版本将RPM的特性带到了Java 应用中。
\InfoQ有幸采访了NewRelic的Lew Cirne以了解该最新版的相关信息。
\InfoQ:NewRelic RPM的Java支持的工作方式是怎样的?
\新版Relic RPM可以从不同源中收集信息。由于其主要用作产品监控以及深层诊断,所以我们要确保其所搜集的信息具有相关性,同时还要保证信息的监控和收集不会增加应用本身的性能负担。\\举个例子吧,JMX提供了极佳的概要度量,但对于深层次的问题诊断来说还是显得无能为力。我们使用官方API并通过字节码instrumentation的方式来补充这些数据,从而获得了能够快速解决问题的深层次信息。比如,RPM可以自动为缓慢的数据库查询收集SQL说明信息,这对于那些负责监控并诊断数据库相关性能问题的团队来说极具价值。
InfoQ:对于字节码instrumentation你有何经验?在使用其他相关程序库时遇到过问题么?
\我们使用了官方API,还通过字节码instrumentation向应用服务器中插入特定的方法。RPM在加载期对类进行instrument,因此与其他修改字节码的工具(比如AOP程序库)没有什么依赖关系。\
InfoQ:RPM的Java支持可以运行在哪些平台和系统之上?
\新的Relic RPM支持很多框架,包括Spring、Grails以及JEE。RPM可以监控标准的JEE组件,如Servlet、EJB、JDBC、Hibernate、Web Services调用、POJO、JSP等等不一而足。它还能监控部署在Spring之上的应用。\\除此以外,RPM还可以监控部署在WebSphere、WebLogic、JBoss、Tomcat、Jetty以及Glassfish之上的Web应用。
InfoQ:第三方可以扩展NewRelic来支持新的Web框架么?
\RPM在设计之初就考虑到了与第三方工具的集成,而这种集成是非常简单方便的。通过RPM API,用户可以集成来自于其他源的数据。我们还提供了一个REST API,这样用户和第三方软件供应商就可以将RPM应用性能数据集成到自己的解决方案中。像Rightscale等公司已经在使用该API了。\
InfoQ:除了MRI以外,NewRelic现在也支持对JRuby应用的监控了,为何要支持JRuby,有必要么?
\JRuby支持是相当直接的。对于Ruby和JRuby方法来说有些细小的差别,而RPM利用这种差异性来收集信息。一旦我们搞定了这些差别,假如架构够灵活,那对于RPM来说,自动化的instrumentation就是非常直接的事情了。\
InfoQ:JRuby与Java支持有关联性么?
\RPM在众多的应用性能管理工具中是独树一帜的,因为它提供了监控Ruby/JRuby以及Java的统一界面。一般来说Ruby/JRuby agent与Java agent是不同的,而RPM基本是以同样的方式工作,如前所述,都将数据发送到相同的控制台上。\\对于运行JRuby on Rails应用的用户来说,我们推荐他们使用Ruby agent,它完全兼容于该环境并提供了一套相关的度量集。
InfoQ:NewRelic还支持Ruby 1.9,在你的客户当中有使用Ruby 1.9的么?
\我们所用的SaaS方式的一个好处在于可以看到数千产品应用,这样我们就能了解客户所使用的平台和运行时版本等信息。我们会不定期地在RailsLab站点( http://railslab.newrelic.com/2009/06/11/the-state-of-the-stack-a-ruby-on-rails-benchmarking-report-10-june-2009)上的“State of the Stack”文章中与大家分享主要的观测资料。\\根据以上论述,我们发现使用Ruby 1.9的用户少之又少,然而我们还是愿意支持Ruby 1.9。当用户升级其平台或运行时后(比如Ruby、JRuby、Java、Rails、Spring、Grails等发布),我们会尽最大努力在新平台或运行时普及前提供对其的支持。
NewRelic RPM根据不同的版本具有不同的定价,其中RPM Lite是免费的。EngineYard与RightScale用户可以享受到特别的待遇。
\在了解了NewRelic RPM的特性之后,我想问各位读者一个问题:你当前使用何种工具监控Java应用的性能呢?
\查看英文原文:NewRelic RPM 2 Adds Java Support for Performance Monitoring