因爲最近在整理前端異常監控相關內容,因此本身在虛擬機搭建部署了一下Sentry,把搭建過程及一些本身踩得坑整理以下javascript
Sentry搭建有兩種方式:html
我本地是用Docker進行搭建的。前端
yum install docker -y
// 查看版本信息
docker info
或者
docker -v
複製代碼
// 在linux中使用wget時,若報-bash: wget: command not found,則代表沒有安裝wget,須要安裝,安裝命令以下:-->
yum -y install wget
複製代碼
# 若是使用 wget下載https開頭的網址域名 時報錯,你須要加上 --no-check-certificate (不檢查證書)選項
wget https://bootstrap.pypa.io/get-pip.py --no-check-certificate # 下載文件
python get-pip.py #執行安裝
pip -V #查看pip版本
複製代碼
sudo pip install docker-compose # 安裝 docker-compose
docker-compose -v #查看docker-compose 版本
複製代碼
安裝git教程地址java
更新:sentry 有更新,參考readme文件內容以下,具體以官方爲準python
------------------如下爲更新前操做步驟-----------------react
git clone https://github.com/getsentry/onpremise.git
cd onpremise
#根據onpremise目錄中的README.md 內容來操做:
cat README.md
---------
1. `mkdir -p data/{sentry,postgres}` - Make our local database and sentry config directories.
This directory is bind-mounted with postgres so you don't lose state! 2. `docker-compose build` - Build and tag the Docker services 3. `docker-compose run --rm web config generate-secret-key` - Generate a secret key. Add it to `docker-compose.yml` in `base` as `SENTRY_SECRET_KEY`. 4. `docker-compose run --rm web upgrade` - Build the database. Use the interactive prompts to create a user account. 5. `docker-compose up -d` - Lift all services (detached/background mode). 6. Access your instance at `localhost:9000`! ---------- 複製代碼
mkdir -p data/{sentry,postgres}
docker-compose build # 必定執行,否則報錯,而後再生成key
複製代碼
這個過程很漫長,可能中間會卡,或者出現一些錯誤,多執行幾回就行了linux
docker-compose run --rm web config generate-secret-key
生成的密匙相似這樣:41dvtnqzc#g(*s8ichpp8r@gqzu(p4h(+l6qi(d9+f9ue2u+j9
複製代碼
vim docker-compose.yml
複製代碼
過程當中會讓咱們填寫郵箱和密碼webpack
docker-compose run --rm web upgrade
複製代碼
docker-compose up -d
複製代碼
使用第 5) 步的用戶名密碼進行登陸便可 git
進入後進行簡單配置,而後右上角能夠點擊 New Project
建立,選擇須要項目類型,根據提示進行配置github
docker-compose run --rm web upgrade
時報錯。
忘記執行 docker-compose build
複製代碼
docker-compose up -d
報錯,關閉 docker
再從新打開。關閉docker: systemctl stop docker
啓動docker: systemctl start docker
複製代碼
docker-compose run --rm web upgrade
若是忘記設置用戶名或者設置錯誤,部署完後不能登陸則從新安裝數據庫。刪除 /var/lib/docker/volumes 下的 onpremise_sentry-postgres 文件夾。
從新執行命令 docker-compose run --rm web upgrade
複製代碼
docker composer
啓動docker
集羣時報錯:# ERROR: Couldn't connect to Docker daemon at http+docker://localunixsocket - is it running?
應該是docker後臺服務沒有開啓
執行:systemctl start docker
複製代碼
docker
經常使用的一些操做#查看全部容器:
docker ps -a
#查看運行容器:
docker ps
#停用全部容器:
docker stop $(docker ps -q)
#刪除全部容器:
docker rm $(docker ps -aq)
#停用和刪除全部容器:
docker stop $(docker ps -q) & docker rm $(docker ps -aq)
複製代碼
npm i -g @sentry/cli
sentry-cli -V // 檢查版本
複製代碼
點擊頭像左下角,選擇API,生成token,勾選project:write權限
$ sentry-cli --url https://myserver/ login
# 回車後輸入上一步得到的 token 便可
複製代碼
sentry-cli releases -o 組織 -p 項目 new staging@1.0.1
# 這裏的 staging@1.0.1 就是咱們指定的版本號.
# -o -p能夠經過頁面左上角能夠看到。如今咱們能夠經過建立多個版本號來進行異常分類。 同時,也能夠經過頁面中"Releases"查看是否建立成功
複製代碼
# 安裝raven-js
npm install raven-js --save
# 回到前端項目中,在config添加對應的release,指定版本後,每次上報的異常就會分類到該版本下。
import Raven from 'raven-js';
Raven.config(DSN, {
release: 'staging@1.0.1'
}).install()
複製代碼
sentry-cli releases -o 組織 -p 項目 delete staging@1.0.1
# 注意 刪除某個release時須要將其下的異常處理掉,並將該版本的sourcemap文件清空
# 完成上面兩步可能還要等待2小時才能刪除,否則會報錯:該版本還有其它依賴。
複製代碼
目前來講,前端項目基本都會壓縮混淆代碼,這樣致使Sentry捕捉到的異常堆棧沒法理解。
咱們但願在Sentry直接看到異常代碼的源碼時就須要上傳對應的source和map。
sentry-cli releases -o 組織 -p 項目 files staging@1.0.1 upload-sourcemaps js文件所在目錄 --url-prefix 線上資源URI
複製代碼
PS: 記得別把map文件傳到生產環節了,又大又不安全…
PS: 免費服務的文件上限爲40MB。
sentry-cli releases files staging@1.0.1 delete --all
複製代碼
也能夠選擇在 版本>工件 裏點擊一個個刪除。。。。
# 安裝webpack-sentry-plugin
npm i -D webpack-sentry-plugin
複製代碼
var SentryPlugin = require('webpack-sentry-plugin');
plugins: [
//...
new SentryPlugin({
// Sentry options are required
baseSentryURL: 'https://sentry.mycorp.com/api/0', # 若是是內網使用須要加
organization: 'sentry',
project: 'react',
apiKey: process.env.SENTRY_API_KEY,
// Release version name/hash is required
release: process.env.GIT_SHA,
deleteAfterCompile: true,
suppressErrors: true,
filenameTransform: function (filename) {
return 'http://xxx.com/' + filename
}
})
]
複製代碼
參考文獻: