柚子快報激活碼778899分享:CentOS安裝sentry
柚子快報激活碼778899分享:CentOS安裝sentry
Sentry介紹
Sentry 是一套開源的實時的異常收集、追蹤、監(jiān)控系統(tǒng)。這套解決方案由對應(yīng)各種語言的 SDK 和一套龐大的數(shù)據(jù)后臺服務(wù)組成,通過 Sentry SDK 的配置,還可以上報錯誤關(guān)聯(lián)的版本信息、發(fā)布環(huán)境。同時 Sentry SDK 會自動捕捉異常發(fā)生前的相關(guān)操作,便于后續(xù)異常追蹤。異常數(shù)據(jù)上報到數(shù)據(jù)服務(wù)之后,會通過過濾、關(guān)鍵信息提取、歸納展示在數(shù)據(jù)后臺的 Web 界面中
●?Github:?https://github.com/getsentry/sentry
●?文檔?Sentry Docs | Application Performance Monitoring & Error Tracking Software
支持如下語言
sentry功能架構(gòu)
sentry核心架構(gòu)
Sentry私有化部署
Sentry 的管理后臺是基于 Python Django 開發(fā)的。這個管理后臺由背后的 Postgres 數(shù)據(jù)庫(管理后臺默認的數(shù)據(jù)庫)、ClickHouse(存數(shù)據(jù)特征的數(shù)據(jù)庫)、relay、kafka、redis 等一些基礎(chǔ)服務(wù)或由 Sentry 官方維護的總共 23 個服務(wù)支撐運行。可見的是,如果獨立的部署和維護這 23 個服務(wù)將是異常復(fù)雜和困難的。幸運的是,官方提供了基于 docker 鏡像的一鍵部署實現(xiàn)?getsentry/onpremise
sentry 本身是基于 Django 開發(fā)的,而且也依賴到其他的如 Postgresql、 Redis 等組件,所以一般有兩種途徑進行安裝:通過 Docker 或用 Python 搭建
環(huán)境準備
●?Docker 19.03.6+
●?Docker-Compose 2.19.0+
●?4 CPU Cores
●?16 GB RAM
●?20 GB Free Disk Space
安裝 Docker
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum -y install docker-ce-20.10.9 docker-ce-cli-20.10.9
啟動docker
systemctl start docker
systemctl enable docker
安裝 Docker-Compose
通過訪問?https://github.com/docker/compose/releases/latest?得到最新的 docker-compose 版本(例如:1.23.2),然后執(zhí)行一下命令安裝 docker-compose
# 下載最新版本的 docker-compose 到 /usr/bin 目錄下?
curl -L https://github.com/docker/compose/releases/download/v2.27.1/docker-compose-`uname -s`-`uname -m` -o /usr/bin/docker-compose
# 給 docker-compose 授權(quán)?
chmod +x /usr/bin/docker-compose
查詢docker-compose版本
docker-compose -v
部署Sentry
部署
yum -y install git
git clone https://github.com/getsentry/onpremise
cd onpremise/
./install.sh
選擇n,繼續(xù)安裝,中間需要設(shè)置管理員帳號和密碼,這里設(shè)置的帳號和密碼要記住,后面登錄需要用到。安裝過程比較慢,要多等一會。
安裝結(jié)束后,執(zhí)行下面命令啟動服務(wù),啟動也比較慢。
docker-compose up -d
? Setting up GeoIP integration ...
Setting up IP address geolocation ...
Installing (empty) IP address geolocation database ... done.
IP address geolocation is not configured for updates.
See https://develop.sentry.dev/self-hosted/geolocation/ for instructions.
Error setting up IP address geolocation.
啟動成功后,訪問9000端口,輸入剛才設(shè)置的帳號和密碼登錄。
如果想停止sentry服務(wù),執(zhí)行:
docker-compose down
設(shè)置語言
登錄之后,點開用戶設(shè)置,可以設(shè)置語言為中文。
小結(jié)
如果不想自己部署,可以到sentry saas平臺注冊一個帳號,不過只能免費試用30天。
新建前端項目
前端項目集成sentry
Vue 項目引入 Sentry
Vue | Sentry for Vue
項目創(chuàng)建完成后,會跳轉(zhuǎn)至Vue配置的說明文檔,主要是Vue項目如何引入Sentry的一些內(nèi)容,內(nèi)容如下所示:
1.??安裝依賴
# Using yarn
yarn add @sentry/vue @sentry/tracing
# Using npm
npm install --save @sentry/vue @sentry/tracing
2.??在main.js里引入
import Vue from "vue";
import * as Sentry from "@sentry/vue";
import { Integrations } from "@sentry/tracing";
Sentry.init({
Vue,
dsn: "http://cd7f733c2e1e4641bdeb11ba0811d9aa@123.11.22.133:211/12",
integrations: [new Integrations.BrowserTracing()],
// Set tracesSampleRate to 1.0 to capture 100%
// of transactions for performance monitoring.
// We recommend adjusting this value in production
tracesSampleRate: 1.0,
// 上報console異常信息
logErrors: true
});
此時,只要項目正常部署在線上,打開項目,然后打開瀏覽器控制臺,查看Network列表,會發(fā)現(xiàn)很多類似這樣的請求,并沒有報錯,這就意味著當前已經(jīng)正常上報到 Sentry 系統(tǒng)了,如下所示:
?sentry_key=cd7f733c2e1e4641bdeb11ba0811d9aa&sentry_version=7
異常報錯示例
為了真實驗證Sentry的功能,現(xiàn)以一個真實場景來演示,在項目中添加一個按鈕,然后設(shè)置點擊事件之后,觸發(fā)打印console,sentryTest并未定義,所以會報錯,代碼如下所示:
在項目頁面,我們可以看到,在瀏覽器控制臺,確實有報錯信息生成,如下圖所示:
然后,我們到Sentry在線系統(tǒng)查看,確實有收到報錯信息,如下圖所示:
里面指明了報錯原因是sentryTest is not defined,然后還提交了用戶的IP、瀏覽器版本以及版本號、平臺系統(tǒng)等等信息,便于分析異常錯誤。
上傳 SourceMap 文件
通常Sentry在線系統(tǒng)上面的信息,也是可以排查解決BUG的,比如sentryTest is not defined,我們只需要在項目中搜索sentryTest就可以定位到代碼報錯的位置,但是如果是一些比較通用的,或者信息比較含糊的,是沒辦法精準定位代碼位置的,這個時候,就可能有想法了,怎么讓才能在Sentry在線系統(tǒng)看到,到底是執(zhí)行到哪一步的時候,報錯了呢?
這就是本節(jié)所需要實現(xiàn)功能,這就需要SourceMap文件,什么是SourceMap文件呢?
因為使用webpack打包之后,所有代碼都壓縮在一起,很難從中定位到異常代碼的位置,而SourceMap就是源碼,有了它,就可以定位到具體位置,所以需要提供SourceMap文件到Sentry在線系統(tǒng)。
首先,需要將vue項目下config/index.js里的productionSourceMap設(shè)置為true,然后運行npm run build命令,在生成的dist/static/js里就會發(fā)現(xiàn)很多后綴為.map的文件,如下圖所示:
然后我們需要把.map文件上傳到Sentry在線系統(tǒng),具體步驟如下:
1.??登錄Sentry在線系統(tǒng),在終端輸入如下:
sentry-cli --url http://123.11.22.133:211/ login
然后會提示輸入token,如下所示:
dstweihao@weihao-mac-mini vue % sentry-cli --url http://123.11.22.133:211/ login
This helps you signing in your sentry-cli with an authentication token.
If you do not yet have a token ready we can bring up a browser for you
to create a token now.
Sentry server: 123.11.22.133
Open browser now? [y/n] n
Enter your token:
token是在Sentry在線系統(tǒng)生成的,如下圖所示:
這時,只要復(fù)制token到終端,就可以完成登錄流程了,如下所示,就是成功登錄了Sentry在線系統(tǒng):
Enter your token: 4e6488262fb849ef93c6217ac8bc8e9a2d635572eb584fa3b69b859e0edc5104
Valid token for user test001
Stored token in /Users/weihao/.sentryclirc
dstweihao@weihao-mac-mini vue %
上傳SourceMap到Sentry在線系統(tǒng)
登錄成功之后,就需要將 SourceMap 文件上傳到 Sentry 在線系統(tǒng),首先,需要在項目里新建一個.sentryclirc文件,里面的內(nèi)容,如下所示:
[defaults]
url=http://123.11.22.133:211/
org=dst
project=test
[auth]
token=4e6488262fb849ef93c6217ac8bc8e9a2d635572eb584fa3b69b859e0edc5104
然后使用以下命令:
sentry-cli releases -o dst -p test files test@1.0.0 upload-sourcemaps './dist/static/js/' --url-prefix '~/test/js'
這里需要對該命令一些參數(shù)說明一下:
●?dst:組織名
●?test:項目名
●?1.0.0:版本號,需和 main.js 里的release: 'test@1.0.0'一致
●?./dist/static/js/:項目打包生成的dist里.map文件所在目錄
●?~/test/js:如果部署在服務(wù)器上面,不是部署在主目錄,而是在 test 文件夾下面,那就需要加上
在終端顯示如下,就表示已經(jīng)上傳成功:
dstweihao@weihao-mac-mini vue % sentry-cli releases -o dst -p test files 1.0.0 upload-sourcemaps './dist/static/js/' --url-prefix '~/test/js'
> Found 20 release files
> Analyzing 20 sources
> Analyzing completed in 0.238s
> Rewriting sources
> Rewriting completed in 0.252s
> Adding source map references
> Bundling files for upload... ~/test/js/vendor.331b4cf7bdabb46a7655.js.map
> Bundling completed in 0.373s
> Optimizing completed in 0.01s
> Uploading completed in 0.337s
> Uploaded release files to Sentry
> Processing completed in 0.114s
> File upload complete (processing pending on server)
Source Map Upload Report
Minified Scripts
~/test/js/0.5578cfbb7e2e6688ddf5.js (sourcemap at 0.5578cfbb7e2e6688ddf5.js.map)
~/test/js/1.08ce936a2efe46fada3a.js (sourcemap at 1.08ce936a2efe46fada3a.js.map)
~/test/js/2.21a7baf07c2e2f7e0e2e.js (sourcemap at 2.21a7baf07c2e2f7e0e2e.js.map)
~/test/js/3.31b60f7af161be6ebdd9.js (sourcemap at 3.31b60f7af161be6ebdd9.js.map)
~/test/js/4.fb6e7da7da26fad2df3a.js (sourcemap at 4.fb6e7da7da26fad2df3a.js.map)
~/test/js/5.ee4c344db81fc2458f9c.js (sourcemap at 5.ee4c344db81fc2458f9c.js.map)
~/test/js/6.9079b1090416a666a327.js (sourcemap at 6.9079b1090416a666a327.js.map)
~/test/js/app.ad01bb777553f9efe703.js (sourcemap at app.ad01bb777553f9efe703.js.map)
~/test/js/manifest.380384094e7763635655.js (sourcemap at manifest.380384094e7763635655.js.map)
~/test/js/vendor.331b4cf7bdabb46a7655.js (sourcemap at vendor.331b4cf7bdabb46a7655.js.map)
Source Maps
~/test/js/0.5578cfbb7e2e6688ddf5.js.map
~/test/js/1.08ce936a2efe46fada3a.js.map
~/test/js/2.21a7baf07c2e2f7e0e2e.js.map
~/test/js/3.31b60f7af161be6ebdd9.js.map
~/test/js/4.fb6e7da7da26fad2df3a.js.map
~/test/js/5.ee4c344db81fc2458f9c.js.map
~/test/js/6.9079b1090416a666a327.js.map
~/test/js/app.ad01bb777553f9efe703.js.map
~/test/js/manifest.380384094e7763635655.js.map
~/test/js/vendor.331b4cf7bdabb46a7655.js.map
zlgweihao@zlgweihao-mac-mini vue %
此時,我們可以在 Sentry 在線系統(tǒng)上面查看到上傳的 sourcemap 文件,如下圖所示:
sourceMap 只需上傳到 sentry,不需要上傳到線上環(huán)境
可以根據(jù)打包和發(fā)布的時機,在發(fā)布到線上前,將 sourceMap 文件刪除?;蛘呱蟼鞯椒?wù)器時,過濾掉 .map 文件。
對于上面遇見的問題,其實仔細閱讀文檔都可以避免。開發(fā)時,可以參考并借鑒寫得比較好的同事的代碼,但不能太過盲目,需要有自己的見解和想法。同時也需要在使用過后,好好地去了解一下它的具體實現(xiàn)。做得好,看能否做得更好。
以上如有不到之處,歡迎發(fā)消息一起交流探討。
小程序集成sentry
Sentry 小程序 SDK | 微信開放社區(qū)
柚子快報激活碼778899分享:CentOS安裝sentry
相關(guān)鏈接
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點和立場。
轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。