【轉】Sentry 入門實戰


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
    3
    docker-compose build
    docker-compose run --rm web upgrade
    docker-compose up -d

然后可以測試一下郵件發送。登陸超級用戶下點擊左上角頭像選擇 Admin 進入到管理員界面,選擇 mail(郵箱)菜單,看到更新后的郵箱設置:

郵箱配置

點擊最下方的 發送測試郵件 到當前用戶的郵箱上,即可測試郵件發送功能是否配置成功。

Sentry 使用演示

這里簡單演示一下 Sentry 的使用流程。

首先創建一個新的項目:

添加項目

這里我們選擇創建一個 Rust 項目 example:

創建項目

然后得到一些關於 SDK 的使用說明:

SDK 說明

接下來我們創建一個簡單的 Rust 項目使用 SDK 測試一下:

1
2
3
4
5
6
7
extern crate sentry;

fn main() {
let _guard = sentry::init("http://fb828b85f28f4db08a1f6e0b5f17b56b@192.168.219.129:9001/2");
sentry::capture_message("Hello World!", sentry::Level::Info);
// println!("Hello, world!");
}

實時在 Sentry 的 dashboard 的 Project 頁面上看到提交過來的異常信息:

異常界面一

異常界面二

 

轉自http://sinhub.cn/2019/07/getting-started-guide-of-sentry/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM