本文包括Sentry平臺的介紹,以及環境搭建兩部分,更多細節請查閱官方文檔。web
Sentry是一個實時事件的日誌聚合平臺。它專門監測錯誤並提取全部有用信息用於分析,再也不麻煩地依賴用戶反饋來定位問題。redis
Sentry發展多年,幾乎沒有同類產品可與其媲美。它能覆蓋大部分的主流編程語言與框架,很適合應用到實際生產環境中採集異常日誌。docker
最近我在設計持續交付流程過程時,公司一位前輩提到這個工具與用法。簡單搭建並使用以後,基本肯定在CD的灰度發佈環節應用Sentry:若在灰度過程當中獲取到異常則觸發灰度結束,將可能出現的異常由
「上線-客戶發現問題- 反饋問題-運維手動回滾」
變爲
「灰度-Sentry捕獲異常-自動中止灰度」,杜絕了回滾帶來的很差形象,同時也能縮短問題發現的週期。編程
Sentry可使用Python2.7搭建,也能夠利用Docker直接部署。考慮到目前大部分用戶已經使用Python3,直接安裝Sentry可能弄亂Python環境,所以強烈推薦使用Docker搭建Sentry環境!ruby
如下是Docker搭建Sentry平臺的步驟,請保證每一步執行完成:框架
$ docker run -d --name sentry-redis redis
$ docker run -d --name sentry-postgres -e POSTGRES_PASSWORD=secret -e POSTGRES_USER=sentry postgres
$ docker run --rm sentry config generate-secret-key
$ docker run -it --rm -e SENTRY_SECRET_KEY='<secret-key>' --link sentry-postgres:postgres --link sentry-redis:redis sentry upgrade
-p 9000:9000
參數,在啓動後能夠經過訪問http://localhost:9000
或http://host-ip:9000
進入Sentry的web管理頁面:$ docker run -d --name my-sentry -p 9000:9000 -e SENTRY_SECRET_KEY='<secret-key>' --link sentry-redis:redis --link sentry-postgres:postgres sentry
$ docker run -d --name sentry-cron -e SENTRY_SECRET_KEY='<secret-key>' --link sentry-postgres:postgres --link sentry-redis:redis sentry run cron
$ docker run -d --name sentry-worker-1 -e SENTRY_SECRET_KEY='<secret-key>' --link sentry-postgres:postgres --link sentry-redis:redis sentry run worker
進入Web管理頁面後,按照提示配置管理員帳號密碼與其餘信息。注意:URL填寫你所訪問的地址,如http://host-ip:9000
。運維
配置成功後,按順序進入Project-internal-Setting頁面, 選擇右側Release
標籤curl
複製WEBHOOK
中的curl命令,打開終端發送請求,便可在頁面上看到測試的錯誤日誌信息:編程語言