1. 程式人生 > 實用技巧 >基於 CentOS 7 搭建異常監控 Sentry

基於 CentOS 7 搭建異常監控 Sentry

作者:風禾
連結:https://juejin.im/post/6844904061466640398
來源:掘金

背景

隨著公司專案量越來越大,專案上線後不可避免出現一些問題,為了第一時間發現問題,而不是等著客戶反饋後,感嘆為時晚矣。目前後端有辦法捕獲介面 500 錯誤,而前端是通過程式碼 try catch 或者基於框架提供 API 來手動加入異常監控程式碼來呼叫傳送郵件介面進行通知到人的反饋。但缺點顯而易見,例如無法通過圖表形式展示異常量,無法進行異常型別分析,分配 bug,更重要是解決完 bug 反饋機制還需完善等等,

目的

我們需要一個工具幫助我們自動收集並管理各種錯誤日誌資訊(介面、JS 事件、DOM、語法)等等,本文主要介紹 在阿里雲伺服器(CentOS)下通過 Docker 安裝

Sentry

環境

  • CentOS 7

需要確保本文是基於 CentOS 7,而不是Ubunto,怎麼檢查伺服器版本

[root@webtest ~]# lsb_release -a
LSB Version:    :core-4.1-amd64:core-4.1-noarch
Distributor ID: CentOS
Description:    CentOS Linux release 7.0.1406 (Core) 
Release:        7.0.1406
Codename:       Core
複製程式碼
  • 記憶體需要大於 2400 MB,如何檢視伺服器記憶體
[root@webtest ~]# dmidecode -t memory | grep Size: | grep -v "No Module Installed" 
Size: 4096 MB

[root@webtest ~]# free -m
             total       used       free     shared    buffers     cached
Mem:          3792       3609        182        244        117        200
-/+ buffers/cache:       3292        499
Swap:            0          0          0
複製程式碼

安裝 Docker

  1. 解除安裝已有的 docker
sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine
複製程式碼
  1. 安裝 docker 依賴
sudo yum install -y yum-utils \
  device-mapper-persistent-data \
  lvm2
複製程式碼
  1. 安裝 docker-ce
sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.rep
    
sudo yum install docker-ce docker-ce-cli containerd.io
複製程式碼
  1. 啟動 docker 後臺服務
service docker start
複製程式碼
  1. 測試執行
 docker run hello-world
複製程式碼
  1. 設定開機啟動
sudo systemctl enable docker
複製程式碼
  1. 檢視 docker 是否啟動
systemctl status docker
複製程式碼

可直接看官網

升級 Python

方法有很多,能正常升級就可以

  1. 通過 yum 下載最新 python
yum install epel-release
yum install python36
複製程式碼
  1. 檢視 python 相關的二進位制檔案
ls -l /usr/bin/python*
複製程式碼
  1. 刪除預設 python
rm /usr/bin/python 
複製程式碼
  1. 指向最新
ln -s /usr/bin/python3.6 /usr/bin/python
複製程式碼
  1. 檢查版本
python -V
複製程式碼

安裝 docker-compose

  1. 安裝
sudo curl -L "https://github.com/docker/compose/releases/download/1.25.3/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

chmod +x /usr/local/bin/docker-compose

複製程式碼
  1. 測試
docker-compose version
複製程式碼

可直接看官網

安裝 Sentry

  1. 安裝 git 已安裝,略過這步
yum install git
複製程式碼
  1. 下載onpremise
 git clone https://github.com/getsentry/onpremise.git
複製程式碼
  1. 安裝

有一些文章是說需要通過命令生成金鑰,目前已有 install.sh 指令碼,所以簡化了配置過程,不需要手動調整金鑰,這一步時間比較長,我是大概用半個小時,快結束的時候會讓你輸入 郵箱+密碼,來作為登陸 sentry 的管理員賬號。

 cd onpremise
 
 ./install.sh
複製程式碼
  1. 啟動

通過 IP:9000 即可成功訪問,用之前建立的賬號即可登陸。

docker-compose up -d
複製程式碼

郵箱配置

正常情況下通過第一次IP:9000訪問的時候,介面會有提示讓輸入郵箱配置資訊,寫正確的話可以,就可以登陸直接通過這個路由http://你的伺服器IP:9000/manage/status/mail/看到郵箱的配置,點選下面的 Test 進行測試是否配置成功

  • 坑 (然是有坑的,假如你當時沒有申請號郵箱,或者寫錯了資訊,目前是無法在介面上修改的。)

目前我使用成功修改的一種方式是: onpremise 下有 .env 檔案中新增(對於使用QQ郵箱的使用者,值得注意的是 PORT 用465,郵箱事發時不成功的,會出現 TiMEOUT,目前修改成 587正常)

SENTRY_EMAIL_HOST=smtp.qq.com
[email protected]
[email protected]
SENTRY_EMAIL_PASSWORD=替換成你的
SENTRY_EMAIL_USE_TLS=true
SENTRY_EMAIL_PORT=587
SENTRY_EVENT_RETENTION_DAYS=90
複製程式碼

提醒

在使用者設定中 Usersettings進行修改

  • 時區記得更改成國內,否則統計異常的時候,時間不是國內時間
  • sentry 是可以切換語言

最後

你可以愉快的建立專案,讓團隊人員用郵箱註冊,然後各種探索 sentry 的功能了。

  • 郵箱成功傳送