Sentry 入门实战

知识标签: php/mysql/apache docker Sentry

Sentry 是一个开源的实时错误追踪系统,可以帮助开发者实时监控并修复异常问题。它主要专注于持续集成、提高效率并且提升用户体验。Sentry 分为服务端和客户端 SDK,前者可以直接使用它家提供的在线服务,也可以本地自行搭建;后者提供了对多种主流语言和框架的支持,包括 React、Angular、Node、Django、RoR、PHP、Laravel、Android、.NET、JAVA 等。同时它可提供了和其他流行服务集成的方案,例如 GitHub、GitLab、bitbuck、heroku、slack、Trello 等。目前公司的项目也都在逐步应用上 Sentry 进行错误日志管理。


使用 docker-compose 搭建

Sentry 本身是基于 Django 开发的,而且也依赖到其他的如 Postgresql、 Redis 等组件,所以一般有两种途径进行安装:通过 Docker 或用 Python 搭建。官网下分别有以下的两个介绍:


通过 Docker 安装

通过 Python 安装

如果你选择了通过 Docker 进行安装,其实还有更加便捷的方式 —— docker-compose 。在 github 上有一个开源项目用于部署 Sentry ,我们可以直接使用该项目进行部署,首先是克隆该项目:


git clone https://github.com/getsentry/onpremise.git

注意,通过 Docker 本地搭建 Sentry 的时候,需要 docker 版本为 1.10.0 以上,docker-compose 版本为 1.17.0 以上,同时要求最低有 3GB 的可用内存。


如果并没有特殊要求或者额外的组件配置的话(比如说使用已有的 Postgresql 和 redis),可以直接运行 ./install.sh 将 Sentry 及其依赖都通过 docker 安装。


如果不使用 install.sh 进行部署的话,可以采用如下步骤(注意以下操作都在项目目录下进行):


根据 .env.example 自定义环境变量文件 .env (一开始只要 cp 一份重命名为 .env 即可)


根据需要修改 docker-compose.yml (比方说 Sentry 的 Web 默认使用 9000 端口,而我这边这个端口分配给了 portainer,所以需要修改 web 的 port '9000:9000' 为 '9001:9000')


使用 docker-compose 构建镜像


docker-compose build --pull

生成 Sentry 密钥,并将这个值填到 .env 的 SENTRY_SECRET_KEY 配置上


docker-compose run --rm web config generate-secret-key

进行 Web 服务迁移


docker-compose run --rm web upgrade

注意在这个过程中 *nix 系统会通过交互式窗口询问你是否创建超级用户,如果确定,则输入邮箱和密码。但在 Windows 上没有这个步骤,因此如果在没有创建用户的情况下运行 Sentry 会一直报 500 错误,因此在此命令执行完之后要先创建超级用户,具体的 issue 和步骤可以查看 这里。


运行 sentry


docker-compose up -d

之后可以访问你的 Sentry 了(注意对 Mac 或使用 ToolBox 的 docker 用户来说,应该是其 VirtualBox 虚拟机的网络地址),如下图所示,使用你创建的超级用户即可登陆


登陆界面


若是首次登陆,之后会需要你配置具体的域名信息和邮箱信息,邮箱信息这一块下一节会具体详述,现在可以先随便填。配置完之后就会看到 dashboard 界面。


仪表盘界面


Sentry 的邮件配置

Sentry 支持邮件发送的功能非常重要,当 Sentry 捕获事件之后,可以将此捕获的事件发送到你的个人邮箱(针对 Sentry 管理员账号)。要修改目前的邮件配置是不能在界面上操作的,需要进行以下步骤:


修改 .env 文件,补充以下环境变量


SENTRY_SERVER_EMAIL 邮件的发送地址

SENTRY_EMAIL_HOST smtp 服务器主机地址

SENTRY_EMAIL_USER smtp 服务器用户

SENTRY_EMAIL_PASSWORD smtp 服务器密码

SENTRY_EMAIL_PORT smtp 服务器端口

SENTRY_EMAIL_USE_TLS 是否使用 TLS,默认为 false

修改 docker-compose.yml ,注释掉 SENTRY_EMAIL_HOST 配置,因为这个配置默认为 smtp ,会导致 .env 文件中的相同配置失效。


配置修改后 update 一下 Sentry 并重启


docker-compose build

docker-compose run --rm web upgrade

docker-compose up -d

然后可以测试一下邮件发送。登陆超级用户下点击左上角头像选择 Admin 进入到管理员界面,选择 mail(邮箱)菜单,看到更新后的邮箱设置:


邮箱配置


点击最下方的 发送测试邮件 到当前用户的邮箱上,即可测试邮件发送功能是否配置成功。


Sentry 使用演示

这里简单演示一下 Sentry 的使用流程。


首先创建一个新的项目:


添加项目


这里我们选择创建一个 Rust 项目 example:


创建项目


然后得到一些关于 SDK 的使用说明:


SDK 说明


接下来我们创建一个简单的 Rust 项目使用 SDK 测试一下:


extern crate sentry;


fn main() {

    let _guard = sentry::init("http://fb828b85f28f4db08a1f6e0b5f17b56b@192.168.219.129:9001/2");

    sentry::capture_message("Hello World!", sentry::Level::Info);

    // println!("Hello, world!");

}

实时在 Sentry 的 dashboard 的 Project 页面上看到提交过来的异常信息:


异常界面一


异常界面二


就这样 Sentry 的入门使用到此为止。


本文作者: SinHub

本文链接: http://sinhub.cn/2019/07/getting-started-guide-of-sentry/

版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!


沪ICP备09053415号 © 赶知识网