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