【轉】Sentry 入門實戰

Sentry 是一個開源的實時錯誤追蹤系統,能夠幫助開發者實時監控並修復異常問題。它主要專一於持續集成、提升效率而且提高用戶體驗。Sentry 分爲服務端和客戶端 SDK,前者能夠直接使用它家提供的在線服務,也能夠本地自行搭建;後者提供了對多種主流語言和框架的支持,包括 React、Angular、Node、Django、RoR、PHP、Laravel、Android、.NET、JAVA 等。同時它可提供了和其餘流行服務集成的方案,例如 GitHub、GitLab、bitbuck、heroku、slack、Trello 等。目前公司的項目也都在逐步應用上 Sentry 進行錯誤日誌管理。python

使用 docker-compose 搭建

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

  • 根據 .env.example 自定義環境變量文件 .env (一開始只要 cp 一份重命名爲 .env 便可)
  • 根據須要修改 docker-compose.yml (比方說 Sentry 的 Web 默認使用 9000 端口,而我這邊這個端口分配給了 portainer,因此須要修改 web 的 port '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 管理員帳號)。要修改目前的郵件配置是不能在界面上操做的,須要進行如下步驟:

  • 修改 .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/

相關文章
相關標籤/搜索