Sentry異常捕獲平台

2022-06-05 04:18:08 字數 2263 閱讀 8886

本文包括sentry平台的介紹,以及環境搭建兩部分,更多細節請查閱官方文件。

sentry是乙個實時事件的日誌聚合平台。它專門監測錯誤並提取所有有用資訊用於分析,不再麻煩地依賴使用者反饋來定位問題。

sentry發展多年,幾乎沒有同類產品可與其媲美。它能覆蓋大部分的主流程式語言與框架,很適合應用到實際生產環境中採集異常日誌。

最近我在設計持續交付流程過程時,公司一位前輩提到這個工具與用法。簡單搭建並使用之後,基本確定在cd的灰度發布環節應用sentry:若在灰度過程中獲取到異常則觸發灰度結束,將可能出現的異常由

「上線-客戶發現問題- 反饋問題-運維手動回滾」

變為「灰度-sentry捕獲異常-自動停止灰度」,杜絕了回滾帶來的不好形象,同時也能縮短問題發現的週期。

sentry可以使用python2.7搭建,也可以利用docker直接部署。考慮到目前大部分使用者已經使用python3,直接安裝sentry可能弄亂python環境,因此強烈推薦使用docker搭建sentry環境

以下是docker搭建sentry平台的步驟,請保證每一步執行完成:

啟動乙個 redis 容器:

$ docker run -d --name sentry-redis redis

啟動乙個 postgres 容器

$ docker run -d --name sentry-postgres -e postgres_password=secret -e postgres_user=sentry postgres

生成乙個金鑰,用於在後面所有sentry容器之間握手。請記住這串金鑰,在後面的docker命令中,金鑰需要以環境變數形式傳入。

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

連線redis、postgres和sentry,執行後會自動執行初始化操作:

$ docker run -it --rm -e sentry_secret_key='' --link sentry-postgres:postgres --link sentry-redis:redis sentry upgrade

啟動 sentry server,同時新增埠對映。sentry的埠為9000,可以使用-p 9000:9000引數,在啟動後可以通過訪問http://localhost:9000http://host-ip:9000進入sentry的web管理頁面:

$ docker run -d --name my-sentry -p 9000:9000 -e sentry_secret_key='' --link sentry-redis:redis --link sentry-postgres:postgres sentry

預設配置中需要celery,因此啟動乙個celery 主節點與執行節點(worker節點可按需多啟幾個):

$ docker run -d --name sentry-cron -e sentry_secret_key='' --link sentry-postgres:postgres --link sentry-redis:redis sentry run cron

$ docker run -d --name sentry-worker-1 -e sentry_secret_key='' --link sentry-postgres:postgres --link sentry-redis:redis sentry run worker

配置成功後,按順序進入project-internal-setting頁面, 選擇右側release標籤

選擇release

複製webhook中的curl命令,開啟終端傳送請求,即可在頁面上看到測試的錯誤日誌資訊:

捕獲到的異常詳情

mysql異常捕獲 MySql中捕獲異常的方法

下面是程式設計之家 jb51.cc 通過網路收集整理的 片段。mysql中是否能有sqlserver的 error變數呢,或者如c 中的try catch語法呢。答案是肯定的,例項 如下 code drop procedure if exists sp call jobs create proced...

關於異常捕獲

你可以查一下你的sdk,裡面有很多的exception的定義,其基類其實都是system.exception一樣。但system.exception只提供了一些一般異常的處理。更多的需要專業的來處理。比如找不到檔案,你必須捕捉system.io.filenotfoundexception這個異常。在...

python異常捕獲

python的異常處理如c c 的結構一樣。python用try.except.c c 則用try.catch.並不難理解。在對具體錯誤的獲取則有點不同,主要是語法的差異上。c 在catch後可生成相應乙個異常的類,然後可通過類物件獲取相關的錯誤資訊。而python則不同,它在獲取錯誤資訊有點奇怪,...