Sentry 是一個開源的實時錯誤追蹤系統,可以幫助開發者實時監控並修復異常問題。它主要專注於持續集成、提高效率並且提升用戶體驗。Sentry 分為服務端和客戶端 SDK,前者可以直接使用它家提供的在線服務,也可以本地自行搭建;后者提供了對多種主流語言和框架的支持,包括 React、Angular、Node、Django、RoR、PHP、Laravel、Android、.NET、JAVA 等。同時它可提供了和其他流行服務集成的方案,例如 GitHub、GitLab、bitbuck、heroku、slack、Trello 等。目前公司的項目也都在逐步應用上 Sentry 進行錯誤日志管理。
使用 docker-compose 搭建
Sentry 本身是基於 Django 開發的,而且也依賴到其他的如 Postgresql、 Redis 等組件,所以一般有兩種途徑進行安裝:通過 Docker 或用 Python 搭建。官網下分別有以下的兩個介紹:
如果你選擇了通過 Docker 進行安裝,其實還有更加便捷的方式 —— docker-compose 。在 github 上有一個開源項目用於部署 Sentry ,我們可以直接使用該項目進行部署,首先是克隆該項目:
1 |
git clone https://github.com/getsentry/onpremise.git |
注意,通過 Docker 本地搭建 Sentry 的時候,需要 docker 版本為 1.10.0 以上,docker-compose 版本為 1.17.0 以上,同時要求最低有 3GB 的可用內存。
如果並沒有特殊要求或者額外的組件配置的話(比如說使用已有的 Postgresql 和 redis),可以直接運行 ./install.sh
將 Sentry 及其依賴都通過 docker 安裝。
如果不使用 install.sh 進行部署的話,可以采用如下步驟(注意以下操作都在項目目錄下進行):
- 根據 .env.example 自定義環境變量文件 .env (一開始只要
cp
一份重命名為 .env 即可) - 根據需要修改 docker-compose.yml (比方說 Sentry 的 Web 默認使用 9000 端口,而我這邊這個端口分配給了 portainer,所以需要修改 web 的 port
'9000:9000'
為'9001:9000'
) -
使用 docker-compose 構建鏡像
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 管理員賬號)。要修改目前的郵件配置是不能在界面上操作的,需要進行以下步驟:
- 修改 .env 文件,補充以下環境變量
SENTRY_SERVER_EMAIL
郵件的發送地址SENTRY_EMAIL_HOST
smtp 服務器主機地址SENTRY_EMAIL_USER
smtp 服務器用戶SENTRY_EMAIL_PASSWORD
smtp 服務器密碼SENTRY_EMAIL_PORT
smtp 服務器端口SENTRY_EMAIL_USE_TLS
是否使用 TLS,默認為 false
- 修改 docker-compose.yml ,注釋掉
SENTRY_EMAIL_HOST
配置,因為這個配置默認為smtp
,會導致 .env 文件中的相同配置失效。 -
配置修改后 update 一下 Sentry 並重啟
1
2
3docker-compose build
docker-compose run --rm web upgrade
docker-compose up -d
然后可以測試一下郵件發送。登陸超級用戶下點擊左上角頭像選擇 Admin 進入到管理員界面,選擇 mail(郵箱)菜單,看到更新后的郵箱設置:
郵箱配置
點擊最下方的 發送測試郵件 到當前用戶的郵箱上,即可測試郵件發送功能是否配置成功。
Sentry 使用演示
這里簡單演示一下 Sentry 的使用流程。
首先創建一個新的項目:
添加項目
這里我們選擇創建一個 Rust 項目 example:
創建項目
然后得到一些關於 SDK 的使用說明:
SDK 說明
接下來我們創建一個簡單的 Rust 項目使用 SDK 測試一下:
1 |
extern crate sentry; |
實時在 Sentry 的 dashboard 的 Project 頁面上看到提交過來的異常信息:
異常界面一
異常界面二