简介
Sentry 是什么?中文翻译过来是 哨兵 的意思,从字面中可以知道 『站岗、放哨、巡逻、稽查的士兵』,Sentry 是程序的 哨兵 ,它可以监控我们在生产环境中项目的运行状态,一旦某段代码运行报错,或者异常,会第一时间把报错的 路由,异常文件,请求方式 等一些非常详细的信息以消息或者邮件给我们,让我们第一时间知道:程序出错了,然后我们可以从 Sentry 给我们的详细的错误信息中瞬间找到我们需要处理的代码,在老板不知情的情况下悄悄把 Bug 修复调,你肯定不想等着老板来找你吧。
自动化,实时的异常 收集、监控、提醒服务。
你如果试用 Sentry 官方提供给你的服务是需要收费的,不过可以免费试用。试用版有消息条数限制,注意不要超限。Sentry提供了开源版本,你也可以自己搭建 Sentry :自行搭建当然就不收费啦,这一点很赞。你可以查看 文档 自行安装,文档介绍的很详细。文档最下方有两种安装方式一个是 docker 一个是 python。 一般推荐docker,这个方便很多。
解决什么问题
比如服务端开发人员异常日志太多不便于查找,或太多了懒得查找了,或干脆没有记录。
如服务端开发人员没有生产环境主机权限,无法去查看异常日志。
Sentry将异常信息汇总、过滤、通知、图形化、报表展示,便于开发人员发现问题,调试解决问题
Sentry 使用体验
这是 Sentry 的官网 ,当然你也可以自己部署Sentry服务,我们先不管来体验一把,注册一个账号
登录系统后我们要创建一个项目,这个项目要对应我们需要监控异常的的项目。
创建项目时要选择所属语言和框架,基本支持大部分的常见语言和框架。我们以php laravel 项目为例。
项目创建成功后他会提示你如何将异常监控引入你的代码中
文字版:
1、安装sentry/sentry-laravel包
$ composer require sentry/sentry-laravel:1.6.1
注意: If you’re on Laravel 5.5 or later the package will be auto-discovered.
Otherwise you will need to manually configure it in your config/app.php.
我的测试laravel是6.x 版本,跳过了这一步
2、加入sentry代码到laravel异常监控中
public function report(Exception $exception)
{
if (app()->bound('sentry') && $this->shouldReport($exception)) {
app('sentry')->captureException($exception);
}
parent::report($exception);
}
除了如上所示加到异常监控中,我们还可以主动收集信息,在你任意想监控的地方可以通过主动调用上面代码实施监控
3、创建Sentry配置文件
$ php artisan vendor:publish --provider="SentryLaravelServiceProvider"
4、将dsn加入到.env文件
这个dsn相当于远程sentry服务地址
SENTRY_LARAVEL_DSN=https://e92f4e9b81524e89b7qwef64134c57f7@sentry.io/1238517
3、测试
Route::get('/debug-sentry', function () {
throw new Exception('My first Sentry error!');
});
laravel项目中加入以上路由,在浏览器访问一下就会将异常信息推送到Sentry控制台中。
按照以上步骤修改代码后点击底部按钮进入异常监控台:
请求一下laravel项目刚才我们添加的会抛出异常的路由,此时我们就看到了请求的异常信息,并且收到异常监控邮件。上图中我们可以看到异常出现次数、异常出现频率图
点击进入异常详情,如下所示:
此时我们可以看到非常详细的异常信息,包括异常内容、浏览器信息、PHP版本、访问者系统版本、访问路径、请求header、抛出异常用户环境百分比等大量信息。非常便于我们调试代码。
对于异常通知
Sentry在收到异常信息时,默认会给我们注册时填写的邮箱发送异常监控邮件。
除了邮件外Sentry也可以通过HipChat、钉钉等产品进行通知,需要时在研究一下,
End !
参考文章:https://learnku.com/articles/4235/sentry-automation-exception-alert