Sentry 是一个开源的实时错误追踪系统,能够帮助开发者实时监控并修复异常问题。它主要专一于持续集成、提升效率而且提高用户体验。Sentry 分为服务端和客户端 SDK,前者能够直接使用它家提供的在线服务,也能够本地自行搭建;后者提供了对多种主流语言和框架的支持,包括 React、Angular、Node、Django、RoR、PHP、Laravel、Android、.NET、JAVA 等。同时它可提供了和其余流行服务集成的方案,例如 GitHub、GitLab、bitbuck、heroku、slack、Trello 等。目前公司的项目也都在逐步应用上 Sentry 进行错误日志管理。python
Sentry 自己是基于 Django 开发的,并且也依赖到其余的如 Postgresql、 Redis 等组件,因此通常有两种途径进行安装:经过 Docker 或用 Python 搭建。官网下分别有如下的两个介绍:git
若是你选择了经过 Docker 进行安装,其实还有更加便捷的方式 —— docker-compose 。在 github 上有一个开源项目用于部署 Sentry ,咱们能够直接使用该项目进行部署,首先是克隆该项目:github
1 |
git clone https://github.com/getsentry/onpremise.git |
注意,经过 Docker 本地搭建 Sentry 的时候,须要 docker 版本为 1.10.0 以上,docker-compose 版本为 1.17.0 以上,同时要求最低有 3GB 的可用内存。web
若是并无特殊要求或者额外的组件配置的话(好比说使用已有的 Postgresql 和 redis),能够直接运行 ./install.sh
将 Sentry 及其依赖都经过 docker 安装。redis
若是不使用 install.sh 进行部署的话,能够采用以下步骤(注意如下操做都在项目目录下进行):sql
cp
一份重命名为 .env 便可)'9000:9000'
为 '9001:9000'
)使用 docker-compose 构建镜像docker
1 |
docker-compose build --pull |
生成 Sentry 密钥,并将这个值填到 .env 的 SENTRY_SECRET_KEY
配置上服务器
1 |
docker-compose run --rm web config generate-secret-key |
进行 Web 服务迁移网络
1 |
docker-compose run --rm web upgrade |
注意在这个过程当中 *nix 系统会经过交互式窗口询问你是否建立超级用户,若是肯定,则输入邮箱和密码。但在 Windows 上没有这个步骤,所以若是在没有建立用户的状况下运行 Sentry 会一直报 500 错误,所以在此命令执行完以后要先建立超级用户,具体的 issue 和步骤能够查看 这里。框架
运行 sentry
1 |
docker-compose up -d |
以后能够访问你的 Sentry 了(注意对 Mac 或使用 ToolBox 的 docker 用户来讲,应该是其 VirtualBox 虚拟机的网络地址),以下图所示,使用你建立的超级用户便可登录
登录界面
如果首次登录,以后会须要你配置具体的域名信息和邮箱信息,邮箱信息这一块下一节会具体详述,如今能够先随便填。配置完以后就会看到 dashboard 界面。
仪表盘界面
Sentry 支持邮件发送的功能很是重要,当 Sentry 捕获事件以后,能够将此捕获的事件发送到你的我的邮箱(针对 Sentry 管理员帐号)。要修改目前的邮件配置是不能在界面上操做的,须要进行如下步骤:
SENTRY_SERVER_EMAIL
邮件的发送地址SENTRY_EMAIL_HOST
smtp 服务器主机地址SENTRY_EMAIL_USER
smtp 服务器用户SENTRY_EMAIL_PASSWORD
smtp 服务器密码SENTRY_EMAIL_PORT
smtp 服务器端口SENTRY_EMAIL_USE_TLS
是否使用 TLS,默认为 falseSENTRY_EMAIL_HOST
配置,由于这个配置默认为 smtp
,会致使 .env 文件中的相同配置失效。配置修改后 update 一下 Sentry 并重启
1 |
docker-compose build |
而后能够测试一下邮件发送。登录超级用户下点击左上角头像选择 Admin 进入到管理员界面,选择 mail(邮箱)菜单,看到更新后的邮箱设置:
邮箱配置
点击最下方的 发送测试邮件 到当前用户的邮箱上,便可测试邮件发送功能是否配置成功。
这里简单演示一下 Sentry 的使用流程。
首先建立一个新的项目:
添加项目
这里咱们选择建立一个 Rust 项目 example:
建立项目
而后获得一些关于 SDK 的使用说明:
SDK 说明
接下来咱们建立一个简单的 Rust 项目使用 SDK 测试一下:
1 |
extern crate sentry; |
实时在 Sentry 的 dashboard 的 Project 页面上看到提交过来的异常信息:
异常界面一
异常界面二