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)控

        共 3496字,需瀏覽 7分鐘

         ·

        2021-08-20 20:50

        前言

        今早偶爾讀到方神發(fā)表了一篇 sentry(一)初探 的文章,正是我最近需要的,于是自己動手豐衣足食,搭建了一個屬于自己的基于Sentry的前端監(jiān)控平臺。

        為什么要做前端監(jiān)控?

        相信每個前端開發(fā)人員都會遇見到下面這種情況!

        客戶:為什么我這個頁面看不到數(shù)據(jù)??
        我:(急忙打開網(wǎng)站),我這邊數(shù)據(jù)顯示正常!
        客戶:沒有啊!我這邊看不到!
        我:(語無倫次),可我...我這邊正常的呀
        客戶:BALABALA

        自己開發(fā)機(jī)器明明正常,到了用戶那邊卻一大堆問題,這就導(dǎo)致了定位問題非常困難,總不能在用戶端打開F12查看控制臺有什么錯誤吧!

        Sentry簡介

        Sentry 是一個開源的實(shí)時錯誤監(jiān)控的項(xiàng)目,它支持很多端的配置,包括 web 前端、服務(wù)器端、移動端及其游戲端。支持各種語言,例如 python、oc、java、node、javascript 等。也可以應(yīng)用到各種不同的框架上面,如前端框架中的vue 、angular 、react 等最流行的前端框架。Sentry可以幫助我們完成以下工作:例如,線上有一個bug,代碼的某處邏輯的NullPointerException造成了這個問題,Sentry會立即發(fā)現(xiàn)錯誤,并通過郵件或其他基于通知規(guī)則的集成通知到相關(guān)責(zé)任人員,這個通知可以把我們引入到一個指示板,這個指示板為我們提供了快速分類問題所需的上下文,如:頻率、用戶影響、代碼那一部分受到影響以及那個團(tuán)隊(duì)可能是問題的所有者。

        Sentry原理

        Sentry到底是如何實(shí)現(xiàn)實(shí)時日志監(jiān)控報警的呢?首先,Sentry是一個C/S架構(gòu),我們需要在自己應(yīng)用中集成Sentry的SDK才能在應(yīng)用發(fā)生錯誤是將錯誤信息發(fā)送給Sentry服務(wù)端。根據(jù)語言和框架的不同,我們可以選擇自動或自定義設(shè)置特殊的錯誤類型報告給Sentry服務(wù)端。

        而Sentry的服務(wù)端分為web、cron、worker這幾個部分,應(yīng)用(客戶端)發(fā)生錯誤后將錯誤信息上報給web,web處理后放入消息隊(duì)列或Redis內(nèi)存隊(duì)列,worker從隊(duì)列中消費(fèi)數(shù)據(jù)進(jìn)行處理。

        Sentry 服務(wù)部署

        官方推薦使用Docker進(jìn)行部署

        環(huán)境依賴:

        Docker 17.05.0+
        Compose 1.23.0+
        至少需要2400MB RAM

        1. 拉取鏡像

        docker pull sentry 
        docker pull redis
        docker pull postgres

        2. 啟動服務(wù)

        docker run -d --name sentry-redis --restart=always redis 
        docker run -d --name sentry-postgres -e POSTGRES_PASSWORD=secret -e POSTGRES_USER=sentry --restart=always postgres

        3. 生成sentry秘鑰

        docker run --rm sentry config generate-secret-key

        4. 數(shù)據(jù)庫及賬戶初始化及

        docker run -it --rm -e SENTRY_SECRET_KEY='(om)y06(q=hf--s3(8922*m01n@t@ldcmgucr-!8!nn*kmq(72' --link sentry-postgres:postgres --link sentry-redis:redis sentry upgrade

        5. 啟動sentry的web服務(wù)

        docker run -d -p 9000:9000 --name my-sentry -e SENTRY_SECRET_KEY='(om)y06(q=hf--s3(8922*m01n@t@ldcmgucr-!8!nn*kmq(72' --link sentry-redis:redis --link sentry-postgres:postgres --restart=always sentry

        6.啟動sentry-cron/work服務(wù)

        docker run -d --name sentry-cron -e SENTRY_SECRET_KEY='(om)y06(q=hf--s3(8922*m01n@t@ldcmgucr-!8!nn*kmq(72' --link sentry-postgres:postgres --link sentry-redis:redis sentry run cron

        docker run -d --name sentry-worker-1 -e SENTRY_SECRET_KEY='(om)y06(q=hf--s3(8922*m01n@t@ldcmgucr-!8!nn*kmq(72' --link sentry-postgres:postgres --link sentry-redis:redis sentry run worker

        7. 登陸sentry后臺

        http://ip:9000/

        安裝SDK上報數(shù)據(jù)

        1. 創(chuàng)建項(xiàng)目

        登陸后我們會進(jìn)入我們的監(jiān)控項(xiàng)目的界面,如:

        點(diǎn)擊右上角的  add new project ,我們可以創(chuàng)建一個新的項(xiàng)目。

        選擇Vue,再做簡單設(shè)置,project創(chuàng)建成功后會跳轉(zhuǎn)到SDK安裝方法。

        2. SDK引用與配置

        npm i @sentry/browser @sentry/integrations
        import Vue from 'vue'
        import * as Sentry from '@sentry/browser';
        import * as Integrations from '@sentry/integrations';

        Sentry.init({
          dsn'http://[email protected]:9000/3',
          integrations: [
            new Integrations.Vue({ 
                Vue, 
                attachPropstrue 
            }
          )]
        })

        3. 寫段業(yè)務(wù)代碼看看效果

        寫一個Vue 異常代碼:

        我們再進(jìn)入sentry看看監(jiān)控的效果:

        進(jìn)去有錯誤明細(xì)與用戶的操作時間軌跡(這一點(diǎn)非常方便)

        客戶端詳細(xì)的信息:

        總結(jié)

        基于Sentry的前端監(jiān)控搭建部署完成后,我們就可以實(shí)時收集前端JS運(yùn)行中的錯誤以及具體詳情,分析后排查問題,對于生產(chǎn)中偶遇的BUG很有用,初識篇先介紹到這里,后續(xù)會介紹sentry的更多特性,敬請期待。

        end


        瀏覽 101
        點(diǎn)贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點(diǎn)贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報
        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>
            色哟哟AV | 在线观看国产黄色视频 | 国产精品久久久久久久久费观看 | 中文字幕久久人妻无码精品蜜桃 | 性强烈的老熟女 | 天堂色 | 欧美成人色视频 | 特级西西444WWW高清大视频 | 国产色无码视频在线观看 | 岛国精品在线播放 |