張皓南?譚文豪?何林鴻
摘要:在如今的網絡時代,如何保持應用的質量和穩定性,單憑開發人員的素質很難避免一些BUG,但是BUG的產生是多方面的原因:瀏覽器的版本、用戶所處的網絡環境、操作時間等等因素都可能產生不一樣的BUG。并且,由于經用戶反饋的BUG,會因為專業術語不通、表達不清晰等原因,也難以復現BUG。因此我們需要一個能遠程收集客戶端錯誤的方案,快速定位問題并解決,這就是Sentry。
一、簡介
Sentry 是一個實時的事件日志和聚合平臺,基于 Django 構建。Sentry 可以幫助你將 Python 程序的所有 exception 自動記錄下來,然后在一個好用的 UI 上呈現和搜索。處理 exception 是每個程序的必要部分,所以 Sentry 也幾乎可以說是所有項目的必備組件。
Sentry的優點是十分明顯的,它可以多平臺支持(如web、mobile)多語言(JS、PHP、JAVA)支持。且其開源的特點也為使用者可以省去很多麻煩事。此外,Sentry為不同語言提供完整的復現上下文,方便定位 BUG;方便協同工作,可指定處理人員。并且它的配置過程也是較為簡單方便的,其大概流程為以下:DNS的配置、客戶端的配置。DSN是連接客戶端(項目)與sentry服務端,讓兩者能夠通信的鑰匙;每當我們在sentry服務端創建一個新的項目,都會得到一個獨一無二的DSN,也就是密鑰。在客戶端初始化時會用到這個密鑰,這樣客戶端報錯,服務端就能抓到你對應項目的錯誤了。Sentry 還有有很多亮點,比如敏感信息過濾, release 版本跟蹤,關鍵字查找,受影響用戶統計,權限管理等。對我們來說最大的便利就是利用日志進行錯誤發現和排查的效率變高了。
二、使用方式
使用流程即是首先的注冊與登錄(可以直接用github賬號登錄),在登錄后創建一個新的項目,然后開始獲取項目的DSN,最后進行前端配置,引入初始化。以上便是Sentry的基本用法了。
當然,我們不可能在每處可能發生異常的代碼為止都調用Sentry,也不可能去修補過去的代碼將Sentry一一植入,一個好的建議是,無論何時,你的程序都有統一的異常處理機制,最好是全局的。這樣的話,你只要將Sentry寫在全局的異常處理器即可。另外Sentry還對流行的開發框架提供了特別的支持,比如Flask,Django等等,在這些應用中你只要配置就行,不需要你去寫什么全局的異常處理。
一旦你完成上面的配置,以后系統發生的所有錯誤異常都會被自動記錄到Sentry,查看報告就是一件輕松愉快的事情了。一旦你完成上面的配置,以后系統發生的所有錯誤異常都會被自動記錄到Sentry,查看報告就是一件輕松愉快的事情了。
Sentry還提供了異常信息的聚合,同樣的錯誤有可能在多處拋出,傳統的日志統計起來就不是很方便,在Sentry一目了然。另外你還可以針對異常問題進行分配和跟蹤,例如指派團隊的某個成員去處理某一類問題,對于長時間沒有再發生的問題自動標記為解決等等。
對于每一個項目,我們都沒辦法保證代碼零BUG,零報錯,即便是經歷過測試,在上線后也會出現一些你預料不到的問題,而這種情況下,廣大的用戶其實才是最好的測試者。
而Sentry就扮演著一個錯誤收集的角色,將你的項目和Sentry結合起來,無論誰在項目使用中報錯,Sentry都會第一次時間通知開發者,出現了什么錯誤,錯誤出現在哪,幫你記錄錯誤,便于你解決問題,這就是Sentry。
參考文獻:
[1]匡曉旸,高雪松.微機控制Sentry 10測試系統的實現[J].微電子技術,2002(6):55-58.
[2]徐健,潘茂強.Sentry G3振動監測保護系統在硫酸裝置透平機中的應用[J].化工自動化及儀表,2014(3):339-340.
[3]新技術:Sentry監視器[J].國際水力發電,1998(9):59-59.
[4]王軍.ASG-SENTRY的二次開發[J].電腦編程技巧與維護,2008(16):50-51.
[5]鄭強.SENTRY GB-200無線測溫系統在超高壓壓縮機上的應用[J].化工管理,2019(9):157-157.
作者簡介:何林鴻(2000-),男,漢族,四川廣元人,本科,研究方向:數字媒體。
張皓南(2000-),男,漢族,河南焦作人,本科,研究方向:數字媒體。
譚文豪(2001-)男,漢族,重慶云陽人,本科,研究方向:移動互聯網。