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
评论