当前位置 > it书童 > laravel > 正文

搭建sentry追踪laravel生产环境bug

laravel it书童 2019-10-05 10:49:15 0赞 0踩 649阅读 0评论

未上线的代码无论再测试,也不可能保证全无 bug ,很多 bug 一直隐藏在某个阴暗的角落,邪恶又猥琐地等着你将其部署上线,然后在某个条件的触发下,开始兴风作浪...

在线上调试是程序员的恶梦,对于初级程序员来说更是如此。相当于给正在飞行的飞机更换重要零件,而且还不能让旅客有所感知。

这时候,就需要有一款 bug 监控系统,能在第一时间将各种异常捕获,并发送邮件提醒。你能看到异常的详细信息,能在客户,尤其是老板感知之前把 bug 先处理了。营造一种现世安好,天下太平的现象,毕竟,稳稳的幸福,是每个人的追求。

Sentry, 就是这样一款工具。

安装

对于 sentry 不了解的同学,先到官网看下 demo 演示,官方也提供免费服务,只是每月的异常提醒次数有限,仅作为体验。

此外由于是国外服务器,由于众所周知的原因,访问并不方便,幸好这是开源产品,我们可以在自己的服务器搭建

官方推荐用 docker 搭建,详细版见 官方文档

首先要安装 docker ,详情见 centos搭建docker及docker-compose

然后下载 sentry 仓库

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

构建 sentry

$ cd onpremise
$ ./install.sh

构建过程中会提示你输入账号密码,用你的邮箱作为账号,以后该邮箱也用于接收邮件,奇怪的是,在构建时可以用 qq 邮箱,后面在项目中邀请成员却不能用,因此建议统一不用 qq 邮箱,可以用 163 或者 foxmail 等

安装完成后,执行以下命令让 sentry 服务在后台运行

$ docker-compose up -d

浏览器访问:http://你的服务器ip:9000

sentry

邮件设置

邮件发送的设置,以腾讯企业邮箱为例,在目录下的 docker-compose.yml 添加配置:

SENTRY_EMAIL_HOST: smtp.exmail.qq.com
SENTRY_EMAIL_USER: 你的邮箱地址
SENTRY_EMAIL_EMAIL: 你的邮箱地址
SENTRY_EMAIL_PASSWORD: 授权码
SENTRY_EMAIL_USE_TLS: 'true'
SENTRY_EMAIL_PORT: 587

重启 sentry 服务

docker-compose down && docker-compose up -d

新建 laravel 项目,按 sentry 所指示的进行配置即可

项目配置

安装扩展

$ composer require sentry/sentry-laravel:1.1.0

修改 app/Exceptions/Handler.phpreport 方法:

public function report(Exception $exception)
{
    if (app()->bound('sentry') && $this->shouldReport($exception)){
        app('sentry')->captureException($exception);
    }

    parent::report($exception);
}

发布资源

$ php artisan vendor:publish --provider="Sentry\Laravel\ServiceProvider"

将 dns 加入环境变量

SENTRY_LARAVEL_DSN=http://e7de32........

验证

在路由文件中新增

Route::get('/debug-sentry', function () {
    throw new Exception('My first Sentry error!');
});

浏览器访问 http://*****/debug-sentry,到 sentry 以及邮件中查看是否能收到异常

转载须注明出处:https://www.itshutong.com/articles/261/set-up-sentry-to-track-laravel-production-environment-bugs
关于我
一个文科出身的程序员,追求做个有趣的人,传播有价值的知识,微信公众号主要分享读书思考心得,不会有代码类文章,非程序员的同学请放心订阅
发表评论
我有句话,不知当讲不当讲?
要讲之前请先 登录