Vue項(xiàng)目接入Sentry錯(cuò)誤監(jiān)控服務(wù)

Sentry簡介

Sentry 是一個(gè)開源的錯(cuò)誤追蹤工具,可以幫助開發(fā)人員實(shí)時(shí)監(jiān)控和修復(fù)系統(tǒng)中的錯(cuò)誤沧竟。其專注于錯(cuò)誤監(jiān)控以及提取一切事后處理所需的信息;支持幾乎所有主流開發(fā)語言(JS/Java/Python/php)和平臺(tái), 并提供了web來展示輸出錯(cuò)誤。
sentry官網(wǎng):https://sentry.io/

Sentry安裝

Sentry 是一個(gè)開源的工具本今,可以自行搭建誊册。
官方支持兩種安裝和運(yùn)行 Sentry 服務(wù)器的方法,Docker 和 Python茅坛。推薦使用 Docker。
這里建議讓公司的運(yùn)維或者后臺(tái)同學(xué)搭建好则拷,搭建好之后讓他給你賬號(hào)

Sentry 前端部署

創(chuàng)建Vue類型的Sentry并引入到項(xiàng)目中

1.png

創(chuàng)建項(xiàng)目頁面會(huì)自動(dòng)跳轉(zhuǎn)到如何配置vue項(xiàng)目頁面贡蓖。接下來就按照指引在vue代碼里引入 sentry』筒纾可以通過 cdn 或者 npm 引入斥铺。我們采用 npm 引入。引入的時(shí)候需要給init 函數(shù)傳遞一個(gè) dsn 參數(shù)坛善。這個(gè)參數(shù)唯一指定了我們剛才創(chuàng)建的項(xiàng)目晾蜘。如果不傳這個(gè)參數(shù),sentry 不會(huì)發(fā)送錯(cuò)誤。

新版的Sentry并不會(huì)自動(dòng)生成dsn,需要我們自己按照格式拼接
dsn: '協(xié)議://公鑰@服務(wù)器地址/項(xiàng)目ID',

// main.js
import * as Sentry from '@sentry/browser'
import * as Integrations from '@sentry/integrations'
if (process.env.NODE_ENV === 'production') { //只在生產(chǎn)環(huán)境使用
  Sentry.init({
    dsn: 'http://8aac4526a2cdds198723f8d23520ec@127.0.0.1/17',
    integrations: [
      new Integrations.Vue({
        Vue,
        attachProps: true
      })
    ]
  })
}
至此,項(xiàng)目已經(jīng)能夠被Sentry監(jiān)控到了料祠,接下來上傳source-map輔助定位問題

如果不上傳source-map的話,雖然也能監(jiān)控道控制臺(tái)錯(cuò)誤省容,但是由于源文件都被webpack處理混淆壓縮,所以不太好定位到具體原因燎字,因此建議上傳source-map

上傳source-map

上傳的方式有多種腥椒。可以通過 sentry-cli 通過命令行的方式來上傳 source-map候衍,但是需要手動(dòng)上傳笼蛛。也可以采用 webpack-plugin 這個(gè)插件,可以在 build 的同時(shí)自動(dòng)上傳 source-map蛉鹿。這里建議采用自動(dòng)上傳策略滨砍。

1、在項(xiàng)目跟目錄下增加.sentryclirc文件,其中的token可以在左上角頭像里的api keys里面獲取惋戏。

[auth]
token=6e3e03b8c0594d1186db2177d58942eb4132823839294a848593eff31eb712f9

[defaults]
url=服務(wù)器地址
org=你的組織名
project=剛剛創(chuàng)建的項(xiàng)目名

2领追、安裝webpack-plugin 插件并使用,這里給出vue-cli3的配置

npm i @sentry/webpack-plugin -D // 安裝插件

//vue.config.js 
const SentryWebpackPlugin = require('@sentry/webpack-plugin')
module.exports = {
  ...
  productionSourceMap: true,
  configureWebpack: config => {
     if (process.env.NODE_ENV === 'production') { //只在上傳環(huán)境上傳
        config.plugins.push(
          new SentryWebpackPlugin({
            include: './dist',
            release: 'game-center-html@prod',
            urlPrefix: '~/game/', //這個(gè)參數(shù)指定source-map文件的路徑响逢,默認(rèn)服務(wù)器根目錄绒窑,如果路徑錯(cuò)誤將無法定位map文件
            ignoreFile: '.sentrycliignore',
            ignore: ['node_modules', 'webpack.config.js'],
            configFile: 'sentry.properties'
          })
        )
      }
   }
}

urlPrefix參數(shù)重要說明
~/為網(wǎng)站根目錄,后續(xù)路徑須對(duì)應(yīng)source-map
這里的urlPrefix可以通過線上看js文件的完整路徑舔亭,有可能不在根目錄下
比如線上js文件的路徑為http://www.baidu.com/game/js/app.dsds323.js
我們上傳時(shí)文件的urlPrefix就應(yīng)該設(shè)置為 '~/game/'

3些膨、 修改main.js中的配置

// main.js
import * as Sentry from '@sentry/browser'
import * as Integrations from '@sentry/integrations'
if (process.env.NODE_ENV === 'production') { //只在生產(chǎn)環(huán)境使用
  Sentry.init({
    dsn: 'http://8aac4526a2cdds198723f8d23520ec@127.0.0.1/17',
    integrations: [
      new Integrations.Vue({
        Vue,
        attachProps: true
      }),
       new Integrations.RewriteFrames() //<-----新增
    ],
    release: 'game-center-html@prod'  //<-----新增
  })
}

release說明
必須保證 vue.config.jsmain.js 兩個(gè)配置中的 release 版本號(hào)相同,這樣的話 Sentry 才能將source-map文件一一對(duì)應(yīng)上,每次修改都會(huì)在后臺(tái)生產(chǎn)一個(gè)新的版本钦铺。

至此订雾,每次執(zhí)行npm run build都會(huì)生產(chǎn)source-map并上傳到Sentry

回到Senrtry控制臺(tái),就能在版本中看到和release同名的版本,新的錯(cuò)誤監(jiān)控將能夠看到源代碼

刪除項(xiàng)目中的map文件

由于我們?cè)?code>vue.config.js中開啟了productionSourceMap,所以每次npm run build都會(huì)生產(chǎn)map文件矛洞,這就會(huì)導(dǎo)致打包體積很大洼哎,并且如果map文件被上傳到線上,可能存在安全隱患沼本,所以建議在打包之后刪除map文件噩峦,因?yàn)閳?zhí)行npm run build之后已經(jīng)將source-map上傳到了Sentry,本地打包出來的map文件已經(jīng)沒有用了擅威,所以是可以刪除的
1、手動(dòng)刪除
2冈钦、構(gòu)建命令刪除

完結(jié)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末郊丛,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子瞧筛,更是在濱河造成了極大的恐慌厉熟,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,635評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件较幌,死亡現(xiàn)場離奇詭異揍瑟,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)乍炉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門绢片,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人岛琼,你說我怎么就攤上這事底循。” “怎么了槐瑞?”我有些...
    開封第一講書人閱讀 168,083評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵熙涤,是天一觀的道長。 經(jīng)常有香客問我,道長祠挫,這世上最難降的妖魔是什么那槽? 我笑而不...
    開封第一講書人閱讀 59,640評(píng)論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮等舔,結(jié)果婚禮上骚灸,老公的妹妹穿的比我還像新娘。我一直安慰自己软瞎,他們只是感情好逢唤,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,640評(píng)論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著涤浇,像睡著了一般鳖藕。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上只锭,一...
    開封第一講書人閱讀 52,262評(píng)論 1 308
  • 那天著恩,我揣著相機(jī)與錄音,去河邊找鬼蜻展。 笑死喉誊,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的纵顾。 我是一名探鬼主播伍茄,決...
    沈念sama閱讀 40,833評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼施逾!你這毒婦竟也來了敷矫?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,736評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤汉额,失蹤者是張志新(化名)和其女友劉穎曹仗,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蠕搜,經(jīng)...
    沈念sama閱讀 46,280評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡怎茫,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,369評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了妓灌。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片轨蛤。...
    茶點(diǎn)故事閱讀 40,503評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖虫埂,靈堂內(nèi)的尸體忽然破棺而出俱萍,到底是詐尸還是另有隱情,我是刑警寧澤告丢,帶...
    沈念sama閱讀 36,185評(píng)論 5 350
  • 正文 年R本政府宣布枪蘑,位于F島的核電站损谦,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏岳颇。R本人自食惡果不足惜照捡,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,870評(píng)論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望话侧。 院中可真熱鬧栗精,春花似錦、人聲如沸瞻鹏。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,340評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽新博。三九已至薪夕,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間赫悄,已是汗流浹背原献。 一陣腳步聲響...
    開封第一講書人閱讀 33,460評(píng)論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留埂淮,地道東北人姑隅。 一個(gè)月前我還...
    沈念sama閱讀 48,909評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像倔撞,于是被迫代替她去往敵國和親讲仰。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,512評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容

  • 感謝 感謝計(jì)蒜客俞總提出的寶貴的意見感謝Vue Land聊天室中Andreas大神的支持 前言 在項(xiàng)目中痪蝇,我們使用...
    MrJia1997閱讀 15,485評(píng)論 1 8
  • 1.前言 目前我主要負(fù)責(zé)的是公司的營銷活動(dòng)類項(xiàng)目鄙陡,基本都是直接面向用戶端的,并且JS也沒有如后端一樣有完善的日志系...
    max_wwwwww閱讀 56,902評(píng)論 6 39
  • 開發(fā)一個(gè)項(xiàng)目霹俺,采用什么語言都可以柔吼,主要能熟練高效的開發(fā)都是合理的毒费,這次我們采用vue來開發(fā)一個(gè)團(tuán)隊(duì)項(xiàng)目丙唧。在開...
    MsgSS閱讀 2,941評(píng)論 3 9
  • A不吃雞蛋,每次發(fā)了雞蛋都給B觅玻。一開始B還挺感謝的想际。有一次A將雞蛋給了C。B就不高興了溪厘。 用法律約束別人胡本,用道德約...
    BonnieYan閱讀 213評(píng)論 0 0
  • 你從遠(yuǎn)方來 我到遠(yuǎn)方去 遙遠(yuǎn)的路程經(jīng)過這里 千分之一秒的不經(jīng)意 促成了我們的相遇 沒有多么在意 只是臉上浮現(xiàn)了笑意...
    緋紅色的天空閱讀 149評(píng)論 0 0