1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        前端項目接入Sentry監(jiān)控系統(tǒng)

        共 4120字,需瀏覽 9分鐘

         ·

        2022-06-11 17:16

        本文適合項目需要接入錯誤監(jiān)控的小伙伴閱讀

        歡迎關(guān)注前端早茶,與廣東靚仔攜手共同進階~

        作者:廣東靚仔

        一、前言

        場景:我們的項目在本地測試時沒有問題,but在線上運行就遇到各種奇奇怪怪的問題。相信不少小伙伴應(yīng)該都遇到過這樣的情況,為了減少對用戶的影響,引入一個線上監(jiān)控系統(tǒng)是必不可少的。

        方案:對于一些大型的團隊,往往會自研一套監(jiān)控系統(tǒng)。如果團隊資源有限引入個第三方的異常監(jiān)控系統(tǒng)也是一個不錯的方案。

        常用的有:博睿、神策、sentry
        本文我們分享下sentry。

        二、原題

        本文基于:

        https://github.com/getsentry/sentry

        https://github.com/getsentry/sentry-javascript

        https://docs.sentry.io/

        效果預(yù)覽


        文檔預(yù)覽

        可以看出,sdk支持如下語言:

        • JavaScript

        • React-Native

        • Python

        • Ruby

        • PHP

        • Go

        • Rust

        • Java/Kotlin

        • Objective-C/Swift

        • C#/F#

        • C/C++

        • Dart

        • Perl

        • Clojure

        • Elixir

        • Unity

        • Laravel

        • Electron

        what sentry

        Sentry 是跨平臺的應(yīng)用程序監(jiān)控,專注于錯誤報告。

        線上版本發(fā)生異常回立刻會把報錯的路由路徑、錯誤所在文件等詳細信息通知給相關(guān)人員,然后開發(fā)人員就可以利用錯誤信息的堆棧跟蹤快速定位到需要處理的問題。

        環(huán)境搭建

        方式一:

        sentry是開源的,如果我們愿意付費的話,sentry給我們提供了方便。省去了自己搭建和維護 Python 服務(wù)的麻煩事。


        方式二:

        自己搭建的話,Sentry 后端服務(wù)是基于 Python 和 ClickHouse 創(chuàng)建的,需要自己使用物理機進行搭建。


        具體步驟:

        私有化部署官方推薦方式是通過Docker和Docker Compose部署。

        為簡單起見,建議選擇使用 Docker 和 Docker Compose ?,以及基于 bash 的安裝和升級腳本。

        1、安裝Docker

        下載Docker并進行安裝,安裝完成之后,系統(tǒng)會提示登錄輸入dockerid,可以去Docker官網(wǎng)申請一個賬號即可。安裝成功之后,可以正確的獲取版本信息。使用如下命令,即可查看對應(yīng)的版本:

        docker?--version
        docker-compose?--version

        2、獲取sentry

        將Sentry源碼克隆到本地,然后執(zhí)行如下命令:

        git?clone?https://github.com/getsentry/onpremise.git

        3、修改sentry配置

        step1: 修改docker-compose.yml配置來適應(yīng)環(huán)境,創(chuàng)建一個名為volname的數(shù)據(jù)卷,通過-v參數(shù)可以進行創(chuàng)建,如下:

        docker?volume?create?--name=sentry-data?&&?docker?volume?create?--name=sentry-postgres

        step2:??編譯和標記Docker服務(wù):

        docker-compose?build
        step3:?生成密鑰,并將它添加到.env作為SENTRY_SECRET_KEY
        docker-compose?run?--rm?web?config?generate-secret-key
        step4: 將生成的秘密串字符復(fù)制到docker-compose.yml文件對應(yīng)中并保存,然后再將生成的key復(fù)制到docker-compose.yml文件中。
        ?environment:
        ????SENTRY_MEMCACHED_HOST:?memcached
        ????SENTRY_REDIS_HOST:?redis
        ????SENTRY_POSTGRES_HOST:?postgres
        ????SENTRY_EMAIL_HOST:?smtp
        ????#添加如下內(nèi)容
        ????SENTRY_SECRET_KEY?:?'dvw9w+4^%+ypj1z^#e%nt#h8w1i)@it84j+&m1npujr'
        step5:?執(zhí)行如下的命令更新配置
        docker-compose?run?--rm?web?upgrade

        4、啟動服務(wù)

        使用下面的命令啟動所有的服務(wù):
        docker-compose?up?-d

        頁面效果:

        use sentry

        1、設(shè)置語言和時區(qū)
        點擊頭像User settings - Account Details的相應(yīng)菜單設(shè)置,刷新后生效



        2、建個demo


        3、在項目中使用

        本地起一個vue項目

        #?vue?cli創(chuàng)建項目
        $?vue?create?vue-sentry-test
        #?選擇vue-router?vue2.x?
        #?按照文檔安裝插件

        $?yarn?add?@sentry/vue?@sentry/tracing

        配置sentry

        //?main.js?加入配置
        import?*?as?Sentry?from?'@sentry/vue'
        import?{?BrowserTracing?}?from?'@sentry/tracing'

        Sentry.init({
        ??Vue,
        ??dsn:?'https://[email protected]/4',
        ??integrations:?[
        ????new?BrowserTracing({
        ??????routingInstrumentation:?Sentry.vueRouterInstrumentation(router),
        ??????tracingOrigins:?['localhost',?'my-site-url.com',?/^\//],
        ????}),
        ??],
        ??tracesSampleRate:?1.0,
        ??release:?process.env.SENTRY_RELEASE,
        })

        #?新建env用于保存release版本號
        $?touch?.env
        $?cat?>?.env
        $?SENTRY_RELEASE="0.0.1"

        然后就可以到后臺查看我們報錯的內(nèi)容了。


        為了方便查看具體的報錯內(nèi)容,我們需要上傳sourceMap到sentry平臺。

        一般有兩種方式 sentry-cli sentry-webpack-plugin方式,這里為了方便采用webpack方式。



        #?如果要上傳源碼需安裝webpack插件
        $?yarn?add?@sentry/webpack-plugin?-D
        $?touch?.sentryclirc
        #?寫入配置
        $?cat?>?.sentryclirc
        [auth]
        token=XXX

        [defaults]
        url=https://sentry.hanyuan.vip/
        org=sentry
        project=vue-sentry-test
        #?webpack配置
        $?touch?vue.config.js
        //?vue.config.js
        const?SentryCliPlugin?=?require('@sentry/webpack-plugin')
        module.exports?=?{
        ??configureWebpack:?{
        ????plugins:?[
        ??????new?SentryCliPlugin({
        ????????include:?'./dist/js',?//?只上傳js
        ????????ignore:?['node_modules'],
        ????????configFile:?'sentry.properties',
        ????????release:?process.env.SENTRY_RELEASE,?//?對應(yīng)main.js版本號
        ????????cleanArtifacts:?true,?//?先清理再上傳
        ??????}),
        ????],
        ??},
        }

        執(zhí)行 $ yarn build 上傳后并驗證


        在react項目中使用也大同小異,我們按需修改即可。

        Tips

        如何上傳后刪除sourcemap, 三種方式:

        1、命令刪除

        "scripts":?{
        ???"build":?"vue-cli-service?build?&&?rimraf?./dist/js/*.map"
        ?}

        2、單獨生成map

        //?vue.config.js
        configureWebpack(config)?{
        ?????config.output.sourceMapFilename('sourceMap/[name].[chunkhash].map.js')
        ?????config.plugin('sentry').use(SentryCliPlugin,?[{
        ????????include:?'./dist/sourceMap',?//?只上傳js
        ????????ignore:?['node_modules'],
        ????????configFile:?'sentry.properties',
        ????????release:?process.env.SENTRY_RELEASE,?//?對應(yīng)main.js版本號
        ????????cleanArtifacts:?true,?//?先清理再上傳
        ????}])
        }

        3、webpack插件清理

        $?yarn?add?webpack-delete-sourcemaps-plugin?-D
        //?vue.config.js
        const?{?DeleteSourceMapsPlugin?}?=?require('webpack-delete-sourcemaps-plugin')
        ...?//?plugin
        new?DeleteSourceMapsPlugin(),?//?清理sourcemap
        ...


        面試題庫推薦


        ??百度某部門面試原題
        ??某中型公司面試原題
        ??【精品】前端知識梳理

        三、最后

        在我們做技術(shù)方案的時候,最好結(jié)合團隊的實際情況,然后做出取舍,選擇最符合實際的方案。

        關(guān)注我,一起攜手進階

        歡迎關(guān)注前端早茶,與廣東靚仔攜手共同進階~

        瀏覽 217
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            制服丝袜大香蕉 | 天天做天天爱天天高潮 | 日韩人妻一区二区三区蜜桃视频密 | 欧美大鸡吧操逼 | 最新国产一级片 | 男同桌上课狂揉我下边 | 非洲黄片儿 | 毛片,免费基地欧美毛片 | 性综合影院 | 在线观看免费黄 |