正如以前所说,Rails 缺少用于管理和监控应用程序的生命周期的专业套件。随着行业第一个Rails 企业管理套件(RM-Install 和RM-Manage)的发布,FiveRuns 成为首先涉足这一领域的公司之一。该套件以管理Rails 应用全生命周期为目的,涵盖了从自动创建及维护一个完整的Rails 开发环境,到确保Rails 应用在生产中良好运行。
RM-Install是一个免费的、多平台测试过的、为企业准备的 Rails 堆栈,它能使公司马上着手开发和部署其 Rails 应用程序。
RM-Manager与 FiveRuns 企业管理平台无缝地集成在一起,来监控和管理 Rails 应用内以下框架领域的产品性能:
- Controller 和 Action 性能——通过分析和统计来帮助识别应用程序时间开销在哪儿
- ActiveRecord 交互——看哪个 model 被调用的次数最多及哪次交互最慢
- View 性能和分析——关于全局和单个 View 调用和展示性能的详细信息
- 缓存有效性——分析及报告片段和页面缓存
- 数据库连接使用情况——应用的数据库连接使用详细分析
- 事务分析——详细显示事务概览图(Transaction Profile)和统计数据
随后还有三个附加产品将帮助:Rails 应用投入产品使用前期(Pre-production)的性能测试、发布和端到端可视化。监控套件的一个局限是只能作为托管服务(Hosted Service——SaaS)来用,而不能作为单独应用使用。
InfoQ 有机会就 Rails、RM-Manage 和 FiveRuns 公司本身等问题采访了 FiveRuns 团队。感谢 Joshua Dilworth、Oliver Schmelzle 和 Olivier Thierry 在百忙之中接受采访!
关于 RM-Manage,你们说:“Rails 中没有 Hooks 或 API,可以被作为收集器来查看它的性能”。Stefan Kaes 所提供的 BleakHouse 或 RailsBench 是怎样的工具呢?
使用 RM-Manage,我们开始创建一个解决方案,以允许管理员和开发者在真实的产品环境中监控他们的 Rails 应用。我们相信我们是第一个提供该解决方案的公司。 为达到这一目标,我们必须创建一个仪器层和通信基础设施来实时搜集所有重要的 Rails 信息,同时还不能影响产品应用的性能。我们还必须考虑多处理器、多机器上的典型分布式 Rails 应用的因素(即,跨多服务器的 Mongrel 包)。我们认为监控你的产品级 Rails 应用还需要了解你的程序整体运行环境的性能状态,包括操作系统、Web 服务器和数据库。这就是为什么 RM-Manage 是与 FiveRuns 管理平台直接集成在一起的原因。
我们认为 BleakHouse 和 RailsBench 对开发者来说是非常有用的工具。可是它们的关注点不同,用于产品环境就显得不够广泛和典型了。BleakHouse 是帮助发现 Rails 应用内存泄露的,但不能提供其它性能察看功能。而且它显著地减慢了单实例 Rails 应用的运行速度。RailsBench 是帮助针对目标 Rails 应用创建一个非实际环境下的加载。以允许为特定交易模式下的所有应用程序性能建立基准。但是,它不能直接提供实际产品部署环境下 Rails 应用的性能察看功能。
你们对最近 Twitter 团队所提出的用 DTrace 方法来跟踪 CPU 使用情况的方式有什么看法?你们认为 RM-Manage 也能监控像 Twitter 这样的应用吗?
DTrace 是一个不可思议的内核级工具,用来调试低级别的特定类型性能问题。对于 Twitter 的情况,我们了解到他们把 Ruby 解释器源码内嵌到了所谓的 DTrace 探测器中。这使得它们能更好的了解 Ruby 解释器是如何运转的以及它(Ruby 解释器)是怎样影响 Rails 框架的。 这种低级别的跟踪信息对 Ruby 解释器的开发者,以及在一定程度上对 Rails 核心团队来说是有用的。可是,一个典型的 Rails 应用的开发者将会被 DTrace 所提供的大量数据所淹没。
我们发现我们的客户想要了解的是许多实际的应用程序信息:哪个 Controller 执行得最慢?哪个 Action 被调用得最多?哪个 ActiveRecord 类对数据库造成了最多负载?
这些恰恰是 RM-Manage 的优势且 RM-Manage 提供了所有必要的信息——通过一个灵活的、基于 Web 的界面呈现给用户。DTrace 日志文件不能解决上述问题。
你们怎样去监视系统?你们正在用弱对象空间(Weak ObjectSpace)吗?你们使用被改良过的 RubyVM 吗?你们能监控 JROR(JRuby on Rails) 吗?
RM-Manage 仪器层被打包成 Rails 插件(plugin),而且 100% 用 Ruby 编写的。它不需要被改良的 Ruby 解释器或使用 ObjectSpace。由于该层是用 Ruby 编写的,因此也可以跑在像 JRuby 这样的其它 Ruby 实现上(前提是它们的解释器实现了所有 Ruby1.8.6 的功能)。但我们的仪器层还没有在 JRuby 上测试过。
为什么 RM-Manage 只能作为 SaaS(托管服务)使用?
对我们来说,SaaS 分发模式和认购定价(Subscription Pricing)是系统管理的方向。FiveRuns 管理平台提供了广泛的监控能力:覆盖到了操作系统、应用服务器、Web 服务器和数据库。对我们的客户来说易用性且基于 web 是很重要的。而且这也能使我们很快与其他竞争产品区分开。
你们有把它作为一个独立应用卖出去或开源的计划吗?
该 Rails 插件只对我们的智能客户端可用,而智能客户端又依次被我们的企业管理平台使用。该智能客户端 Rails 插件使得 Rails 应用性能信息和可用信息得以搜集,并最终显示在 RM-Manager 应用上。现在还没有开源仪器层(封装为 Rails 插件)的计划。
在波特兰的 RailsConf 上, FiveRuns 在 Rails 社区展示了他们的东西,并由 CEO Steven Smith 发表演说(“企业不是四个字母组成的单词”),他们还打出了引人注目的标题“如果V 代表烦恼:用于视图瘦身的模式”。Fiveruns 有14 个职员从事Rails 和Rico。他们的短期目标包括增加更详细的对Rails 栈其它部分的监控,例如Mongre 和PostgreSQL。长期目标,他们正在进化出一个全面的Rails 管理套件。
评论