異常監控通常是一件重要而棘手的任務。而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應用中,您打算如何處理異常和異常通知呢?