Sentry提供自託管和基於雲的錯誤監控,幫助全部軟件團隊實時發現、分類和優先處理錯誤。
推薦使用docker進行搭建,操做起來相對方便,咱們把官方提供的項目下下來簡單幾步操做便可完成部署 https://github.com/getsentry/... 筆者目前的版本是 Sentry10.1.0 在後面的版本官方提供了@sentry/browser、@sentry/node 也就再也不使用raven.js了javascript
# clone docker項目 git clone https://github.com/getsentry/onpremise # 執行安裝腳本,結束時會詢問是否建立初始帳號 bash install.sh # 完成後啓動容器 docker-compose up -d
查看容器狀態,項目啓動,訪問9000端口前端
✨ 部署階段完成java
建立一個新的項目,官方提供了多種語言的sdk,照着說明均可以順利完成接入,前端部門我以爲稍微要麻煩點,這裏以就以React爲例,如何在umi等使用webpack打包工程中接入sentry。node
✨項目接入完成了,so easy是否是?@sentry/browser也提供了一些方法用來自定義標籤,用戶信息等,具體移步npm。webpack
前端由於要編譯,所需須要把源碼編譯先後位置相關的sourcemap上傳到sentry,上傳sourcemap能獲取到更多的錯誤信息,有利於和定位問題排查。git
PS:可是要注意最後要將生成的map文件處理掉,不要留在生產環境,這樣作是不安全的。github
上傳sourcemap的方法有不少,能夠利用sentry-cli,webpack也有不少插件,例如@sentry/webpack-pluginweb
new SentryPlugin({ include: './dist', release: process.env.RELEASE_VERSION, configFile: 'sentry.properties', urlPrefix: '~/' })
在umi中可使用webpack的webpack-chain方式docker
// .umirc.js export default { ..., chainWebpack(config, { webpack }) { if (process.env.NODE_ENV === 'production') { config.plugin("sentry").use(SentryPlugin, [{ include: './dist', release: process.env.RELEASE_VERSION, ignore: ['node_modules'], urlPrefix:"~/static" }]) } }, }
urlPrefix是線上看js的完整路徑,必需要設置正確,否則仍是會看不到源碼😼
release是本次構建發佈的版本,取值能夠是{項目名}@{構建的時間},通常初始化的時候都會配置,這裏有幾個思路:npm
1.從package.json的version和name取值。 每次上線更換版本號,打tag,可是實踐起來容易疏忽,能夠配合[release](https://www.npmjs.com/package/release)使用。 2.設置成環境變量 在docker構建時設置環境變量傳入 3.寫入一個常量文件
@sentry/webpack-plugin會用到@sentry/cli這個庫,常常會下不下來,能夠設置下淘寶代理:
sentrycli_cdnurl=https://npm.taobao.org/mirror...
另一個比較推薦的庫:webpack-sentry-plugin 好處是比@sentry/webpack-plugin多一下自定義配置,好比構建完刪除map文件,就比較實用,用@sentry/webpack-plugin能夠在構建完成時寫命令本身刪除。配置基本相似,能夠參照官網。
✨sourcemap上傳完成,當項目發生錯誤時就會觸發sentry告警,也能看到錯誤具體代碼。