前言
Sentry
是一個開源的實時錯誤報告工具,支持前后端、其他后端語言以及主流框架等。既然是開源,那么我們可以在自己的服務器上搭建,本文記錄搭建的過程以及搭建過程中遇到的一些問題,也可以跟著這個教程來搭建一遍
部署環境
Ubuntu 16.04
官網提供了兩種部署方式
1、 docker
2、 python
這里我使用的是 docker
的方式來安裝,比較快捷
先更新下 apt-get包(這個過程可能需要點時間)
apt-get update && apt-get upgrade
復制代碼
1、安裝docker
wget -qO- https://get.docker.com/ | sh// 查看 docker 是否安裝成功
docker -v
// Docker version 18.09.5
證明docker安裝成功
復制代碼
由于 docker
鏡像都在國外,因此下載會比較慢,這里用 Docker加速器 運行下面命令即可
curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://4031ebb7.m.daocloud.io
復制代碼
2、安裝 pip
執行下面命令安裝(注意沒有安裝 python
的話需要安裝)
wget https://bootstrap.pypa.io/get-pip.py --no-check-certificate # 下載文件 python get-pip.py #執行安裝 pip -V #查看pip版本
// pip 19.0.3 from /usr/local/lib/python3.5/dist-packages/pip (python 3.5)
復制代碼
3、安裝 docker-compose
這里使用 pip
管理工具來安裝 docker-compose
sudo pip install docker-composedocker-compose --version // 查看版本是否安裝成功
復制代碼
上述步驟之后就可以著手搭建 sentry
4、 搭建 sentry
首先從github上拉取 sentry
,運行
git clone https://github.com/getsentry/onpremise.git
復制代碼
拉取下來后,進入目錄 onpremise
,可以看到里面有份README.MD
,按照這份說明文檔步驟安裝就行(這份當時拉下來的操作文檔,具體有更新的話以拉取下來的最新說明文檔為準)
docker volume create --name=sentry-data && docker volume create --name=sentry-postgres
- Make our local database and sentry volumes Docker volumes have to be created manually, as they are declared as external to be more durable.cp -n .env.example .env
- create env config filedocker-compose build
- Build and tag the Docker servicesdocker-compose run --rm web config generate-secret-key
- Generate a secret key. Add it to.env
asSENTRY_SECRET_KEY
.docker-compose run --rm web upgrade
- Build the database. Use the interactive prompts to create a user account.docker-compose up -d
- Lift all services (detached/background mode).- Access your instance at
localhost:9000
!
5、 實踐
搭建完成之后打開 localhost:9000
端口,可以看到登錄界面,輸入上面搭建時候設置的郵箱和密碼
注意!!!!
輸入賬號密碼登錄之后,會進入一個初始化的界面,要填寫 ROOT URL
,如果遇到填寫完成之后點擊保存一直提示 保存錯誤 的時候,按照下面方法來操作就可以解決
編輯文件 config.yml
,添加下面這一段
auth.allow-registration: false
beacon.anonymous: true
mail.from: ""
mail.host: ""
mail.password: ""
mail.port: 465
mail.use-tls: true
mail.username: ""
system.admin-email: ""
system.url-prefix: ""
復制代碼
然后設置下 sentry
的版本,如下命令,CONTAINER
換成你 docker 容器里面 web 的 name,可以使用 docker ps
命令看下,我的是 onpremise_web_1
docker exec CONTAINER sentry config set sentry:version-configured '9.1.0'
復制代碼
執行第一次的時候我情況是報錯了,再執行一次就行
這時候刷新下頁面,你可能會發現還是停留在了這個初始化設置頁面,一般等一兩個小時再刷新下就進去了,具體原因我也不清楚,好像是因為 docker 運行緩存問題?
打開進入之后可以點擊右上角添加新的項目 add project
,選擇語言或者框架
6、 遇到問題
按照客戶端教程下載相關庫之后需要填 DSN
,在項目的 settings
里面找到 DSN
發現是空的并且不能填,然后上網找了下發現 DSN
是由下面格式組成的
http://pubilckey:secretkey@localhost:9000/<project>
復制代碼
按照這個格式填寫到客戶端的 DSN
之后嘗試下觸發錯誤,可以看到界面會顯示具體的錯誤詳細信息
7、 小結
搭建完后按照教程集成到 vue
和 flask
中,發現效果還不錯,觸發錯誤后可以看到具體的錯誤詳細信息,具體到哪一行,觸發這個錯誤的終端的詳細信息,但 vue
目前大部分是混淆壓縮過的,因此得上傳 sourcemap
才可以看到具體錯誤在那個組件,這個我還在研究當中。