异常监控通常是一件重要而棘手的任务。而Rails插件ExceptionNotifier通过提供一个mailer对象和 一组在Rails应用发生错误时发送邮件提醒的缺省模版,让这一切变得更加容易。 两家公司 (Exceptional和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
Hoptoad
当被问及相对于竞争对手,其各自应用有什么killer级特性时,二者的回答看起来有些类似。
Eoghan给出了Exceptional一些看起来优于Hoptoad的特性:
Exceptional所专有特性的重要性已经被我们的用户所验证,包括注释,与Lighthouse的集成,与 Campfire的集成,短消 息通知等。我们还可以处理404类的异常并计划提供一个比较优雅的界面来管理这 类异常。而Hoptoad则会忽略404类的异常,正如 ExceptionNotifier那样。
此外,Exceptional专注于服务Rails应用,而Hoptoad则并不特定于某种框架:
我们专注于Rails,所以我们可以让我们的服务更加贴近Rails,帮助Rails应用的开发者解决他们特定 的问题。
这两个服务都是免费的。
在Web应用中,您打算如何处理异常和异常通知呢?
思想如钻子,必须集中在一点钻下去才有力量