Sentry簡介
Sentry是一個實時事件的日志聚合平台。它專門監測錯誤並提取所有有用信息用於分析,不再麻煩地依賴用戶反饋來定位問題。
Sentry發展多年,幾乎沒有同類產品可與其媲美。它能覆蓋大部分的主流編程語言與框架,很適合應用到實際生產環境中采集異常日志。
最近我在設計持續交付流程過程時,公司一位前輩提到這個工具與用法。簡單搭建並使用之后,基本確定在CD的灰度發布環節應用Sentry:若在灰度過程中獲取到異常則觸發灰度結束,將可能出現的異常由
“上線-客戶發現問題- 反饋問題-運維手動回滾”
變為
“灰度-Sentry捕獲異常-自動停止灰度”,杜絕了回滾帶來的不好形象,同時也能縮短問題發現的周期。
環境搭建
1.啟動一個Redis容器:
$ docker run -d --name sentry-redis redis
2.啟動一個Postgres容器
$ docker run -d --name sentry-postgres -e POSTGRES_PASSWORD=secret -e POSTGRES_USER=sentry postgres
3.生成一個密鑰,用於后面所有sentry容器之間握手。請記住這串密鑰,在后面的docker命令中,密鑰需要以環境變量形式傳入
$ docker run --rm sentry config generate-secret-key
4.連接Redis、Postgres和Sentry,運行后會自動執行初始化操作:
$ docker run -it --rm -e SENTRY_SECRET_KEY='<secret-key>' --link sentry-postgres:postgres --link sentry-redis:redis sentry upgrade
此處執行過程中會提示創建賬號和密碼,如果此處不想創建,等所有步驟執行完成后,再運行命令來創建: docker exec -it my-sentry /bin/sh ==> sentry createuser
5.啟動Sentry Server,同時添加端口映射。Sentry的端口為9000,可以使用 -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
6.默認配置中需要Celery,因此啟動一個Celery主節點與執行節點(worker節點可按需多啟幾個):
$ 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
然后直接訪問即可