Sentry 是什么?中文翻译过来是「哨兵」的意思,没错,它是程序的哨兵,它可以监控我们在生产环境中项目的运行状态,一旦某段代码运行报错、或者发生异常,会第一时间将报错的信息:页面路由、异常文件、请求方式等一些非常详细的信息以消息或者邮件的方式通知我们,告诉我们:程序出错了。而我们可以从详细的报错信息中快速分析问题所在,从而快速地修复 Bug。

简介

Sentry 是什么?中文翻译过来是「哨兵」的意思,没错,它是程序的哨兵,它可以监控我们在生产环境中项目的运行状态,一旦某段代码运行报错、或者发生异常,会第一时间将报错的信息:页面路由、异常文件、请求方式等一些非常详细的信息以消息或者邮件的方式通知我们,告诉我们:程序出错了。而我们可以从详细的报错信息中快速分析问题所在,从而快速地修复 Bug。

本文首发于知乎:https://zhuanlan.zhihu.com/p/287941396

为什么是 Sentry?

是的,在市场上有许多供应商提供类似的一体化解决方案,国外有 BugSnagRollBar,国内有 oneapmfundebug,那为什么我们偏偏选择 Sentry 呢?

因为 Sentry 是 100% 开源的,我们可以使用它的 SaaS 版的,除此之外我们也可以私有化部署

另外 Sentry 支持主流的编程语言,可以通过 这里 查看所有支持的语言。

通过下面这张图可以看出,Sentry 在前端的近两年发展趋势,以及与其它竞争者对比:

可以看到 Sentry 的 npm 下载量基本是稳步上升,同时引入 Sentry 包体积还很小,打包后只有 20k:

而如果是在 Nuxt 项目,还可以直接使用 Nuxt 的 Sentry 集成模块,接入到项目极其方便快捷。

如何私有化部署?

Sentry 支持私有化部署,可以使用 Docker、Docker-compose、K8s 的方式部署在自己的服务器上。

关于私有化部署的方法这里给出参考文档,如有需要可以看看:

要注意的是,sentry 的 root url 只支持域名,不能写 path。

则机器上需要部署不止一个服务、并且不想使用端口访问 sentry 时,需要申请多一个(子)域名,使用反向代理一下。

下面是 Nginx 相关配置。

     server {
       listen 443;
       server_name your-domain.com;
       location / {
         proxy_set_header Host $host;
         proxy_set_header X-Real-IP $remote_addr;
         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
         proxy_pass http://localhost:9000;
       }
     }

总结

Sentry 是一个开箱即用、兼容性较好、功能强悍、并且生态圈非常完善的监控工具,你值得拥有。

那还等什么,赶紧行动吧!

参考文档