Sentry 是一個開源的實時錯誤追蹤系統,能夠幫助開發者實時監控並修復異常問題。它主要專一於持續集成、提升效率而且提高用戶體驗。Sentry 分爲服務端和客戶端 SDK,前者能夠直接使用它家提供的在線服務,也能夠本地自行搭建;後者提供了對多種主流語言和框架的支持,包括 React、Angular、Node、Django、RoR、PHP、Laravel、Android、.NET、JAVA 等。同時它可提供了和其餘流行服務集成的方案,例如 GitHub、GitLab、bitbuck、heroku、slack、Trello 等。目前公司的項目也都在逐步應用上 Sentry 進行錯誤日誌管理。python
Sentry 自己是基於 Django 開發的,並且也依賴到其餘的如 Postgresql、 Redis 等組件,因此通常有兩種途徑進行安裝:經過 Docker 或用 Python 搭建。官網下分別有如下的兩個介紹:git
若是你選擇了經過 Docker 進行安裝,其實還有更加便捷的方式 —— docker-compose 。在 github 上有一個開源項目用於部署 Sentry ,咱們能夠直接使用該項目進行部署,首先是克隆該項目:github
1 |
git clone https://github.com/getsentry/onpremise.git |
注意,經過 Docker 本地搭建 Sentry 的時候,須要 docker 版本爲 1.10.0 以上,docker-compose 版本爲 1.17.0 以上,同時要求最低有 3GB 的可用內存。web
若是並無特殊要求或者額外的組件配置的話(好比說使用已有的 Postgresql 和 redis),能夠直接運行 ./install.sh
將 Sentry 及其依賴都經過 docker 安裝。redis
若是不使用 install.sh 進行部署的話,能夠採用以下步驟(注意如下操做都在項目目錄下進行):sql
cp
一份重命名爲 .env 便可)'9000:9000'
爲 '9001:9000'
)使用 docker-compose 構建鏡像docker
1 |
docker-compose build --pull |
生成 Sentry 密鑰,並將這個值填到 .env 的 SENTRY_SECRET_KEY
配置上服務器
1 |
docker-compose run --rm web config generate-secret-key |
進行 Web 服務遷移網絡
1 |
docker-compose run --rm web upgrade |
注意在這個過程當中 *nix 系統會經過交互式窗口詢問你是否建立超級用戶,若是肯定,則輸入郵箱和密碼。但在 Windows 上沒有這個步驟,所以若是在沒有建立用戶的狀況下運行 Sentry 會一直報 500 錯誤,所以在此命令執行完以後要先建立超級用戶,具體的 issue 和步驟能夠查看 這裏。框架
運行 sentry
1 |
docker-compose up -d |
以後能夠訪問你的 Sentry 了(注意對 Mac 或使用 ToolBox 的 docker 用戶來講,應該是其 VirtualBox 虛擬機的網絡地址),以下圖所示,使用你建立的超級用戶便可登錄
如果首次登錄,以後會須要你配置具體的域名信息和郵箱信息,郵箱信息這一塊下一節會具體詳述,如今能夠先隨便填。配置完以後就會看到 dashboard 界面。
Sentry 支持郵件發送的功能很是重要,當 Sentry 捕獲事件以後,能夠將此捕獲的事件發送到你的我的郵箱(針對 Sentry 管理員帳號)。要修改目前的郵件配置是不能在界面上操做的,須要進行如下步驟:
SENTRY_SERVER_EMAIL
郵件的發送地址SENTRY_EMAIL_HOST
smtp 服務器主機地址SENTRY_EMAIL_USER
smtp 服務器用戶SENTRY_EMAIL_PASSWORD
smtp 服務器密碼SENTRY_EMAIL_PORT
smtp 服務器端口SENTRY_EMAIL_USE_TLS
是否使用 TLS,默認爲 falseSENTRY_EMAIL_HOST
配置,由於這個配置默認爲 smtp
,會致使 .env 文件中的相同配置失效。配置修改後 update 一下 Sentry 並重啓
1 |
docker-compose build |
而後能夠測試一下郵件發送。登錄超級用戶下點擊左上角頭像選擇 Admin 進入到管理員界面,選擇 mail(郵箱)菜單,看到更新後的郵箱設置:
點擊最下方的 發送測試郵件 到當前用戶的郵箱上,便可測試郵件發送功能是否配置成功。
這裏簡單演示一下 Sentry 的使用流程。
首先建立一個新的項目:
這裏咱們選擇建立一個 Rust 項目 example:
而後獲得一些關於 SDK 的使用說明:
接下來咱們建立一個簡單的 Rust 項目使用 SDK 測試一下:
1 |
extern crate sentry; |
實時在 Sentry 的 dashboard 的 Project 頁面上看到提交過來的異常信息: