官方网址
Sentry 简介
Sentry 是一个开源的实时错误报告工具,支持 web 前后端、移动应用以及游戏,支持 Python、OC、Java、Go、Node、Django、RoR 等主流编程语言和框架 ,还提供了 GitHub、Slack、Trello 等常见开发工具的集成。
Sentry 服务支持多用户、多团队、多应用管理,每个应用都对应一个 PROJECT_ID,以及用于身份认证的 PUBLIC_KEY 和 SECRET_KEY。由此组成一个这样的 DSN:
1 | {PROTOCOL}://{PUBLIC_KEY}:{SECRET_KEY}@{HOST}/{PATH}{PROJECT_ID} |
PROTOCOL 通常会是 http 或者 https,HOST 为 Sentry 服务的主机名和端口,PATH 通常为空。
环境依赖
- Redis 搭建 / RabbitMQ 的搭建
- MySQL / PostgreSQL
- Python 虚拟环境
安装教程
- Redis 的安装
参考文档:
https://linux.cn/article-6719-1.html
http://www.jianshu.com/p/aec247ffbe51 - MySQL 的安装
- 略
- Python 虚拟环境的安装
因为 Sentry 依赖的 Python 库比较多,为了避免对系统环境的污染,与现有的Python有冲突,建议还是将 Sentry 安装在虚拟环境中。
1 | A. Python 库文件: python-setuptools, python-dev, build-essential, python-pip |
- Sentry
在虚拟环境下,直接运行pip install sentry
即可。
这样,安装基本上就结束了。接下来需要配置下 sentry。
配置 Sentry
运行 sentry init
, 会在 $HOME 下生成 .sentry
目录。进入 .sentry 后,需要修改数据库配置(当然,你也可以不改,直接使用 PostgreSQL):
1 | DATABASES = { |
端口和队列等可以自行指定。这里,我指定的是15000。下面是一个配置参考:
1 | # This file is just Python, with a touch of Django which means |
运行 Sentry
- 初始化:
1 | sentry upgrade |
注意,这里可能会出现错误,可以参考下面遇到的坑。初始化的时候,需要设置一个 superuser 角色,直接按提示操作即可。
- 启动 web 进程:
1 | sentry run web |
- 启动 worker 进程:
1 | sentry run worker |
- 这时候,通过 IP:PORT 的形式访问下,填写刚才填写的用户名和密码即可登录。登录后,我们创建一个 project。我这里设置的是 Odeon_Dev,接下来选择项目,我选择的是 Django。这个时候,会弹出一个在项目中配置的教程。我们按照提示操作即可。
测试环境的地址:
1 | http://localhost:5000/sentry/odeon_dev/ |
项目中配置 Sentry
按照上面的操作,Sentry 服务就可以 run 起来了。接下来需要在 Odeon 的项目中配置下 Sentry 环境即可。这里,我们需要引入一个新包: raven。我安装的 是 raven 6.1.0
1 | 安装: |
至此,整个 Sentry 的搭建和项目中需要的配置就完全 OK 了。
当然,也可以更完善一下,比如:
- 利用 Nginx 反向代理使用域名访问服务;
- 利用 supervisor 来起 Sentry 服务等。
接下来,就是按需使用了。
遇到的坑
- sentry默认使用 PostgreSQL。我用的是 mysql。运行 sentry upgrade 的时候,发现运行到 db migration 的时候抛了异常,查阅发现是 db engine 使用的是MyISAM,不支持 transaction 导致的。这里需要注意下,我将 engine 指定为 InnoDB后,执行 migration 的时候错误消失。
- 页面打开后,提示 worker 没有正常运行。发现没有启动 worker。我们手动启动下 worker,启动时,需要在系统中将 C_FORCE_ROOT 设置为 true。详细点击: 参考链接