异常监控通常是一件重要而棘手的任务。而 Rails 插件
ExceptionNotifier 通过提供一个 mailer 对象和一组在 Rails 应用发生错误时发送邮件提醒的缺省模版,让这一切变得更加容易。 两家公司(
Hoptoad )则更进一步,提供了一个第三方服务来拦截异常并将其显示在 web 形式的界面上。当然,用户也可以选择继续使用通过邮件或短消息的传统通知方式。
我们采访了 Exceptional 公司的 Eoghan McCabe 和 Hoptoad 公司的 Matt Jankowski。
两家技术顾问公司的这一想法来自于所从事的对于内部以及外部 Rails 应用的维护经验:
Hoptoad - 在过去的六个月中,我们已经在所维护的很多公司内部和客户的应用中使用这一服务,并且很高兴得看到我们的异常捕获服务从开始到现在一直在不断的完善壮大。
Eoghan 则代表 Expceptional 发言:
Exceptional - 在我们为客户构造应用时,我们非常重视监控性能、负载和异常。长时间以来,我们一直在使用 ExceptionNotifier 和 Logged_Exceptions 插件,它们确实非常有用。但我们希望能扩展这些插件,以使得它们能更好的适应我们的工作环境。我们想避免因为通知手段 唯一而造成的邮件泛滥,使我们能够通过多种方式获取通知,通过协作查研异常,从整体上对我们所管理的所有应用中出现的异常有足够的控制力。
Exceptional 和 Hoptoad 都推出不久(Exceptional 仍处于 beta 版阶段)。这两个服务都在不断推出新功能。从正式发布以来,Hoptoad 已经捕获了超过 300000 个外部应用的异常。
从技术方面,Eoghan 列出了 Exceptional 所使用的 Rails 插件:
- UltraSphinx – 提供了非常稳定的搜索索引
- WillPaginate – 几乎所有的 Rails 工程都需要这一插件
- hubahuba – 为基本类提供了令人称道的扩展
- rspec
Matt 也列出了 Hoptoad 所使用的插件列表:
- 一个原始的 Rails 应用(如果我们要考虑规模问题,我们会将“错误捕获部分”与应用的其他部分相分离,并且 / 或增加服务器)
- Hoptoad 自己开发的测试工具(shoulda + factory girl)
- Intridea 的 subdomain_fu 插件,以及 DHH 的 openid 插件
- 为整个应用使用的 Firstly HAML
- EngineYard 提供的部署托管
在安装后 Exceptional 或 Hoptoad 后,应用中的异常将会被拦截下来,并报告给 Exceptional 界面。您可以根据自己的偏好决定 Exceptional 界面的具体形式,比如 Email 通知或手机短消息(短消息这一功能只有 Exceptional 提供)。异常的发生路径会被自动追踪,其状态也可以转换为“已解决”,“已关闭”或“已忽略”。 Exceptional 当被问及相对于竞争对手,其各自应用有什么 killer 级特性时,二者的回答看起来有些类似。Eoghan 给出了 Exceptional 一些看起来优于 Hoptoad 的特性:
Exceptional 所专有特性的重要性已经被我们的用户所验证,包括注释,与 Lighthouse 的集成,与 Campfire 的集成,短消 息通知等。我们还可以处理 404 类的异常并计划提供一个比较优雅的界面来管理这类异常。而 Hoptoad 则会忽略 404 类的异常,正如 ExceptionNotifier 那样。
此外,Exceptional 专注于服务 Rails 应用,而 Hoptoad 则并不特定于某种框架:
我们专注于 Rails,所以我们可以让我们的服务更加贴近 Rails,帮助 Rails 应用的开发者解决他们特定的问题。
在 Web 应用中,您打算如何处理异常和异常通知呢?
评论