從零構(gòu)建Sentry v10 進(jìn)行異常上報(bào)

簡介

Sentry 是一個(gè)開源的實(shí)時(shí)錯(cuò)誤追蹤系統(tǒng)梯刚,可以幫助開發(fā)者實(shí)時(shí)監(jiān)控并修復(fù)異常問題缤沦。它主要專注于持續(xù)集成橙喘、提高效率并且提升用戶體驗(yàn)挑庶。

下面是Sentry官網(wǎng)支持的產(chǎn)品

image

使用官網(wǎng)服務(wù)

作為大多數(shù)個(gè)人開發(fā)者和中小企業(yè),可以直接使用Sentry官網(wǎng))提供的云服務(wù)什往,你只需要注冊一個(gè)Sentry賬號扳缕,就可以快速享受到集中處理異常日志的服務(wù)。

本地安裝Sentry服務(wù)

官網(wǎng)支持dockerpython安裝兩種方式别威,這里采用docker的方式
具體有什么疑問可以查看官網(wǎng)https://docs.sentry.io/server/installation/

安裝docker

具體可以看之前記錄的文章重頭開始學(xué)Docker

安裝docker-compose

  • 安裝wget
yum -y install wget
  • 安裝pip
# 如果使用 wget下載https開頭的網(wǎng)址域名 時(shí)報(bào)錯(cuò)躯舔,你需要加上 --no-check-certificate (不檢查證書)選項(xiàng)
wget https://bootstrap.pypa.io/get-pip.py --no-check-certificate  # 下載文件

python get-pip.py #執(zhí)行安裝

pip -V #查看pip版本

  • 安裝docker-compose
sudo pip install docker-compose # 安裝 docker-compose
docker-compose -v #查看docker-compose 版本

注意這里我在安裝docker-compose報(bào)了這個(gè)錯(cuò)誤

image

執(zhí)行如下命令

sudo pip install --ignore-installed requests

安裝完成之后再安裝docker-compose

參考至:https://blog.csdn.net/guoshaoliang789/article/details/96878731

構(gòu)建Sentry

  • github上拉取源碼
git clone https://github.com/getsentry/onpremise.git

注意你需要保證你的Docker 17.05.0+ Compose 1.19.0+ 同時(shí)還需要擁有least 2400MB RAM

image

下載完成之后進(jìn)入該目錄。查看文件如下

image
  • 開始構(gòu)建鏡像
docker-compose build --pull

但是出了個(gè)問題,問題描述說是倉庫不存在或可能需要“docker登錄”:拒絕:請求訪問的資源被拒絕

image

嘗試解決問題:先執(zhí)行登錄操作

docker login
image

登錄成功之后再次執(zhí)行之前的命令省古,發(fā)現(xiàn)還是報(bào)錯(cuò)粥庄,我們搜索一下Docker網(wǎng)站上關(guān)于sentry-onpremise-local鏡像,我們手動去pull

執(zhí)行如下命令

docker image pull viitanener/sentry-onpremise-local
image

拉取成功之后豺妓,再次執(zhí)行之前的命令飒赃。

參考至https://www.cnblogs.com/meloncodezhang/p/11229778.html

最后發(fā)現(xiàn)還是沒用,但是在github issues中發(fā)現(xiàn)了同樣的問題

這是問題鏈接https://github.com/getsentry/onpremise/issues/278

image

執(zhí)行如下命令

docker-compose build --pull --force-rm web
docker-compose build --force-rm
image

發(fā)現(xiàn)build成功

  • 生成秘鑰

進(jìn)入sentry文件夾科侈,將默認(rèn)的config.example.ymlsentry.conf.example.py重命名為config.ymlsentry.conf.py。執(zhí)行如下命令

cp config.example.yml config.yml
cp sentry.conf.example.py sentry.conf.py

執(zhí)行如下命令生成秘鑰

docker-compose run --rm web config generate-secret-key

將生成的秘鑰添加到config.ymlsystem.secret-key字段上

image
  • 進(jìn)行 Web 服務(wù)遷移

執(zhí)行如下命令開始服務(wù)遷移

docker-compose run --rm web upgrade
image
image

正常情況下是會出現(xiàn)輸入賬號密碼的步驟的炒事,如果不可以請?jiān)敿?xì)查閱這個(gè)issue

執(zhí)行以下命令

 docker-compose run --rm web createuser
  • 運(yùn)行 sentry
docker-compose up -d
image
  • 注意:錯(cuò)誤解決

執(zhí)行之后發(fā)現(xiàn)如下問題臀栈,判斷可能是docker沒有啟動的問題

image

執(zhí)行如下命令

service docker status  # 查看docker服務(wù)是否啟動
systemctl start docker # 啟動docker
image

再次執(zhí)行安裝

又發(fā)生如下錯(cuò)誤

image

執(zhí)行如下命令

dig @114.114.114.114 registry-1.docker.io
image

將上訴幾個(gè)地址寫入hosts文件后再次安裝

  • 部署Sentry成功

打開瀏覽器輸入ip:9000,如下圖說明安裝成功

image

注意,如果沒有打開挠乳,請檢查服務(wù)器防火墻與安全組是否開放9000端口

image
  1. Root URL:默認(rèn)為部署的地址权薯,后面會用到,sentryclirc文件里的url屬性
  2. Admin Email 管理員郵箱
  3. Email From 郵件的發(fā)送地址息睡扬,填郵箱服務(wù)商的地方比如smtp.qq.com
  4. SMTP PORT Smtp服務(wù)的端口默認(rèn)25,使用tls就是567
  5. SMTP username 用戶名 qq郵箱賬號
  6. SMTP password 密碼 qq郵箱授權(quán)碼(不是密碼)
  • 修改郵箱設(shè)置

打開sentry/config.yml文件盟蚣,編輯如下信息:

具體配置查看這里https://docs.sentry.io/server/config/#mail

image

注意要將服務(wù)器防火墻與服務(wù)器安全組的郵箱端口放開,

注意:如果使用Sentry10的話 使用tsl郵箱端口必須為567不然會報(bào)錯(cuò)

重新執(zhí)行以下命令

docker-compose build --pull --force-rm web
docker-compose build --force-rm
docker-compose run --rm web upgrade
docker-compose up -d
image

可以看到郵箱信息已經(jīng)修改掉了卖怜,下面我們發(fā)送一封測試郵件屎开,點(diǎn)擊下方的Test Settings

image

至此,郵箱服務(wù)也修改完成

Sentry使用

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

  • 開始創(chuàng)建马靠,選擇Project->React->Create Project
image
  • SDK的使用
image
  • DSN地址
image
  • org組織名稱


    image
  • project項(xiàng)目名稱


    image
  • Create Token創(chuàng)建token


    image

務(wù)必勾選project:write

image

image

前端進(jìn)行使用

安裝webpack插件

npm install @sentry/webpack-plugin -S

添加.sentryclirc文件

[defaults]
url=sentry 服務(wù)的url #比如安裝的是192.168.0.1:9000
project = 項(xiàng)目名字
org= 項(xiàng)目組織 上面有寫在哪可以取到

[auth]
token=api token # 登錄控制臺獲取
  • 關(guān)于url:就是你部署Sentry的地址
  • 關(guān)于project:
  • 關(guān)于org:
  • 關(guān)于token:

修改.umirc.js文件

const SentryPlugin = require('@sentry/webpack-plugin');
export default {
  chainWebpack(config, { webpack }){
    // 拿不到process.env.RELEASE_VERSION
    if (process.env.UMI_ENV == 'prod'){
      config.plugin("sentry").use(SentryPlugin, [{
        ignore: ['node_modules'],
        include: './dist', //上傳dist文件的js
        configFile: './sentryclirc', 
        release:release, // 版本號
        deleteAfterCompile: true,
        urlPrefix: '~/static/' //靜態(tài)資源路徑前綴
       }])
    }
  },
 }
  • 關(guān)于urlPrefix如果你的靜態(tài)資源是htps://cdn.xxx.com/static/那么該值就是~/static/奄抽,自動省去協(xié)議與主機(jī)地址

安裝@sentry/browser

使用的時(shí)候需要結(jié)合這個(gè)包使用

npm i @sentry/browser -S

使用

  • 在項(xiàng)目的根文件下使用
import * as Sentry from '@sentry/browser';

const SENTRYSDK = '就是Sentry配置的DSN'

Sentry.init({dsn:SENTRYSDK,release: process.env.RELEASE_VERSION,debug: true,});
  • 結(jié)合React的生命周期使用
componentDidCatch(error, errorInfo) {
    Sentry.withScope((scope) => {
      scope.setExtras(errorInfo);
      const eventId = Sentry.captureException(error);
      this.setState({ eventId });
    });
}
  • 主動上報(bào)
Sentry.captureMessage('Hello, world!'); // 上報(bào)信息
Sentry.captureException(new Error('Good bye')); // 上報(bào)異常
Sentry.captureEvent({ // 上報(bào)事件
  message: 'Manual',
  stacktrace: [
    // ...
  ],
});

關(guān)于

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市甩鳄,隨后出現(xiàn)的幾起案子逞度,更是在濱河造成了極大的恐慌,老刑警劉巖妙啃,帶你破解...
    沈念sama閱讀 223,207評論 6 521
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件档泽,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)馆匿,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,455評論 3 400
  • 文/潘曉璐 我一進(jìn)店門抑胎,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人甜熔,你說我怎么就攤上這事圆恤。” “怎么了腔稀?”我有些...
    開封第一講書人閱讀 170,031評論 0 366
  • 文/不壞的土叔 我叫張陵盆昙,是天一觀的道長。 經(jīng)常有香客問我焊虏,道長淡喜,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,334評論 1 300
  • 正文 為了忘掉前任诵闭,我火速辦了婚禮炼团,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘疏尿。我一直安慰自己瘟芝,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,322評論 6 398
  • 文/花漫 我一把揭開白布褥琐。 她就那樣靜靜地躺著锌俱,像睡著了一般。 火紅的嫁衣襯著肌膚如雪敌呈。 梳的紋絲不亂的頭發(fā)上贸宏,一...
    開封第一講書人閱讀 52,895評論 1 314
  • 那天,我揣著相機(jī)與錄音磕洪,去河邊找鬼吭练。 笑死,一個(gè)胖子當(dāng)著我的面吹牛析显,可吹牛的內(nèi)容都是我干的鲫咽。 我是一名探鬼主播,決...
    沈念sama閱讀 41,300評論 3 424
  • 文/蒼蘭香墨 我猛地睜開眼谷异,長吁一口氣:“原來是場噩夢啊……” “哼浑侥!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起晰绎,我...
    開封第一講書人閱讀 40,264評論 0 277
  • 序言:老撾萬榮一對情侶失蹤寓落,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后荞下,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體伶选,經(jīng)...
    沈念sama閱讀 46,784評論 1 321
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡史飞,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,870評論 3 343
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了仰税。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片构资。...
    茶點(diǎn)故事閱讀 40,989評論 1 354
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖陨簇,靈堂內(nèi)的尸體忽然破棺而出吐绵,到底是詐尸還是另有隱情,我是刑警寧澤河绽,帶...
    沈念sama閱讀 36,649評論 5 351
  • 正文 年R本政府宣布己单,位于F島的核電站,受9級特大地震影響耙饰,放射性物質(zhì)發(fā)生泄漏纹笼。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,331評論 3 336
  • 文/蒙蒙 一苟跪、第九天 我趴在偏房一處隱蔽的房頂上張望廷痘。 院中可真熱鬧,春花似錦件已、人聲如沸笋额。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,814評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽鳞陨。三九已至,卻和暖如春瞻惋,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背援岩。 一陣腳步聲響...
    開封第一講書人閱讀 33,940評論 1 275
  • 我被黑心中介騙來泰國打工歼狼, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人享怀。 一個(gè)月前我還...
    沈念sama閱讀 49,452評論 3 379
  • 正文 我出身青樓羽峰,卻偏偏與公主長得像,于是被迫代替她去往敵國和親添瓷。 傳聞我的和親對象是個(gè)殘疾皇子梅屉,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,995評論 2 361

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

  • sentry官方推薦docker方式安裝,使用到了docker-compose鳞贷,docker至少是1.10.3以上...
    雄柱閱讀 928評論 0 0
  • 一坯汤、Docker-Compose簡介 ??Docker-Compose項(xiàng)目是Docker官方的開源項(xiàng)目,負(fù)責(zé)實(shí)現(xiàn)對...
    無劍_君閱讀 886評論 0 1
  • 上篇文章中搀愧,主要介紹了Odoo中加入Sentry來跟蹤日志記錄惰聂。由于國內(nèi)的原因疆偿。使用Sentry官方提供的在線服務(wù)...
    F4A3閱讀 12,583評論 1 4
  • 思考 前面我們使用 Docker 的時(shí)候,定義 Dockerfile 文件,然后使用 docker build、d...
    千鋒陳老師閱讀 1,038評論 0 0
  • 一搓幌、簡介 Docker-Compose項(xiàng)目是Docker官方的開源項(xiàng)目杆故,負(fù)責(zé)實(shí)現(xiàn)對Docker容器集群的快速編排。...
    夜醉夢紅塵閱讀 593評論 0 0