liaochaowu 2020-03-28
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
注意:当前分析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 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
docker run --rm sentry config generate-secret-key
n8ntkj(u3z5(o18tm*wprg^sqp2)z%(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%(e86v67g*ut‘ --link sentry-postgres:postgres --link sentry-redis:redis sentry upgrade
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%(e86v67g*ut‘ --link sentry-redis:redis --link sentry-postgres:postgres --restart=always sentry
docker run -d --name sentry-cron -e SENTRY_SECRET_KEY=‘n8ntkj(u3z5(o18tm*wprg^sqp2)z%(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%(e86v67g*ut‘ --link sentry-postgres:postgres --link sentry-redis:redis sentry run worker
http://ip:9000/
注意:认证账户就是初始化的邮箱及密码
reference: