sentry概述
Sentry是程序的哨兵,它可以監控我們在生產環境中項目的運行狀態,一旦某段代碼運行報錯或者異常,會第一時間把報錯的路由異常文件,請求方式 等一些非常詳細的信息以消息或者郵件給我們,讓我們第一時間知道:程序出錯了,然后我們可以從 Sentry 給我們的詳細的錯誤信息中瞬間找到我們需要處理的代碼,及時解決異常!
官方地址:
https://github.com/getsentry/onpremise //安裝部署
https://github.com/getsentry/sentry
https://github.com/docker-library/docs/tree/master/sentry //dockerhub官方鏡像 v9.1.2
sentry架構
注意:當前分析v9.1.2
Sentry到底是如何實現實時日志監控報警的呢?首先,Sentry是一個C/S架構,我們需要在自己應用中集成Sentry的SDK(支持前后端語言)才能在應用發生錯誤是將錯誤信息發送給Sentry服務端。根據語言和框架的不同,我們可以選擇自動或自定義設置特殊的錯誤類型報告給Sentry服務端。
Sentry的服務端分為web、cron、worker這幾個部分,應用(客戶端)發生錯誤后將錯誤信息上報給web,web處理后放入消息隊列或Redis內存隊列,worker從隊列中消費數據進行處理,postgresql對數據持久化。
my-sentry:sentry的web服務
sentry-cron:sentry的定時任務,活性檢測
sentry-worker:業務處理,數據持久化,報警
部署docker/docker-compose
部署sentry
拉取鏡像
docker pull sentry ###目前最新版本9.1.2
docker pull redis
docker pull postgres
啟動服務
docker run -d --name sentry-redis --restart=always redis ###保證了,異常自動拉起
docker run -d --name sentry-postgres -e POSTGRES_PASSWORD=secret -e POSTGRES_USER=sentry --restart=always postgres
生成sentry秘鑰
docker run --rm sentry config generate-secret-key
n8ntkj(u3z5(o18tm*wprg^sqp2)z%980f@upd7(e86v67g*ut ###打印出secret-keys
數據庫及賬戶初始化及
注意:過程中需要你創建用戶和密碼
During the upgrade, you will be prompted to create the initial user which will act as the superuser.
docker run -it --rm -e SENTRY_SECRET_KEY='n8ntkj(u3z5(o18tm*wprg^sqp2)z%980f@upd7(e86v67g*ut' --link sentry-postgres:postgres --link sentry-redis:redis sentry upgrade
啟動sentry的web服務
The web interface needs to expose port 9000 into the container. This can just be done with –publish 9000:9000:
You should now be able to test the web service by visiting http://localhost:9000/
docker run -d -p 9000:9000 --name my-sentry -e SENTRY_SECRET_KEY='n8ntkj(u3z5(o18tm*wprg^sqp2)z%980f@upd7(e86v67g*ut' --link sentry-redis:redis --link sentry-postgres:postgres --restart=always sentry
啟動sentry-cron/work服務
docker run -d --name sentry-cron -e SENTRY_SECRET_KEY='n8ntkj(u3z5(o18tm*wprg^sqp2)z%980f@upd7(e86v67g*ut' --link sentry-postgres:postgres --link sentry-redis:redis sentry run cron
docker run -d --name sentry-worker-1 -e SENTRY_SECRET_KEY='n8ntkj(u3z5(o18tm*wprg^sqp2)z%980f@upd7(e86v67g*ut' --link sentry-postgres:postgres --link sentry-redis:redis sentry run worker
登錄測試效果
http://ip:9000/
注意:認證賬戶就是初始化的郵箱及密碼
reference: