Sentry錯誤日誌監控你會用了嗎?
- 2019 年 10 月 3 日
- 筆記
無論作為新手還是老手程式設計師在程式的開發過程中,程式碼運行時難免會拋出異常,而且項目在部署到測試、生產環境後,我們便不可能像在開發時那樣容易的及時發現處理錯誤了。一般我們都是在錯誤發生一段時間後,錯誤資訊才會傳遞到開發人員那裡,然後一頓操作查看程式運行的日誌,就熟練使用awk和grep去分析日誌,但是往往我們會因為日誌中缺少上下文關係,導致很難分析真正的錯誤是什麼。
Sentry由此應運而生成為了解決這個問題的一個很好的工具,設計了諸多特性幫助開發者更快、更方面、更直觀的監控錯誤資訊。
關於日誌管理
隨著不斷的開發應用變得越來越複雜,輸出日誌五花八門,有print的,有寫stdout的,有寫stderr的, 有寫logging的,也有自定義xxx.log的。那麼這將導致平台應用日誌分布在各個地方,無法統一管理。而且可能用的還不止一種開發語言,想規範和統一日誌不是一件容易的事。所以這也是我們為什麼使用Sentry的原因,
Sentry的優點
Sentry是一個集中式日誌管理系統。它具備以下優點:
- 多項目,多用戶
- 介面友好
- 可以配置異常觸發規則,例如監控到程式出現異常後發送郵件
- 支援主流語言介面,本篇部落格值介紹在python中的應用,其他語言自行閱讀官方文檔
Sentry目前支援的語言眾多,下面展示一部分:
安裝和使用
Sentry支援部署到本地伺服器,本博文不做過多介紹,可參照官方文檔進行部署:
對於大所屬個人和小型企業推薦使用Sentry官方提供的雲服務,進行快速搭建屬於自己的錯誤日誌監控系統,只需要去官網進行註冊一個Sentry帳號即可
1、註冊新帳號
Sentry免費版可用功能:
- 每月10k 錯誤日誌上限
- 支援所有平台和語言,功能無縮水
- 無限項目數量,僅單用戶訪問,不提供團隊功能
如果想享受更多功能和服務可以看這裡:付費版價格策略
2、安裝SDK
Sentry通過在應用程式運行時中使用SDK來捕獲數據。這些是特定於平台的,允許Sentry深入了解您的應用程式的工作方式。
使用pip
以下命令安裝Python SDK :
pip install --upgrade sentry-sdk==0.10.2
3、配置SDK
在Sentry中完成項目設置後,您將獲得一個我們稱之為DSN或數據源名稱的值。它看起來很像標準URL,但它實際上只是Sentry SDK所需配置的表示。它由幾部分組成,包括協議,公鑰,伺服器地址和項目標識符。
在應用程式的設置中儘早導入並初始化Sentry SDK:
import sentry_sdk sentry_sdk.init("https://[email protected]/我的") # 註冊帳號後在文檔中自動生成
4、捕捉你的第一個異常
您可以通過在應用程式中插入除以零表達式來導致Python錯誤:
division_by_zero = 1 / 0
在雲監控系統中顯示的錯誤資訊:
5、在django中的使用
安裝:sentry-sdk
pip install --upgrade 'sentry-sdk==0.10.2'
要配置SDK,請在settings.py
文件中使用Django集成對其進行初始化:
import sentry_sdk from sentry_sdk.integrations.django import DjangoIntegration sentry_sdk.init( dsn="https://[email protected]/我的", integrations=[DjangoIntegration()] )
您可以通過創建觸發錯誤的路由輕鬆驗證Sentry安裝:
from django.urls import path def trigger_error(request): division_by_zero = 1 / 0 urlpatterns = [ path('sentry-debug/', trigger_error), # ... ]
訪問此路由將觸發程式將捕獲的錯誤。
一旦你完成上面的配置,以後系統發生的所有錯誤異常都會被自動記錄到Sentry,通過錯誤日誌監控平台就可以看到對應的日常,並且一旦發生異常會發送郵件到你的郵箱,同樣可以看到異常的錯誤描述資訊,更多詳細使用教程你請參照官網文檔。