背景:项目上线之后怎么能保障正常运行,并且在出现问题的时候在第一时间找到错误,根据错误去解决,为客户提供有保障的服务呢?

psutil监控性能 sentry 性能监控_sentry搭建

Why Sentry

我们需要一个成熟的监控系统,Sentry 就是一个这样的工具。

Sentry – 正如其名「哨兵」,可以实时监控生产环境上的系统运行状态,一旦发生异常会第一时间把报错的路由路径、错误所在文件等详细信息以邮件形式通知我们,并且利用错误信息的堆栈跟踪快速定位到需要处理的问题。

选择 Sentry 作为前端监控系统,还因为下几点:

  • 开源
  • 对各种前端框架的友好支持 (Vue、React、Angular)
  • 支持 SourceMap

准备工作

接下来我们就以docker为例在本地从零开始创建一个sentry服务

环境搭建

Sentry可以使用Python2.7搭建,也可以利用Docker直接部署,那么小编就直接利用自己的Python2.7环境进行搭建。

以下就是Sentry搭建的过程,请保证每一步的操作正确。

  • 1.启动一个 Redis 容器
$ docker run -d --name sentry-redis redis
  • 2.启动一个 Postgres 容器
$ docker run -d --name sentry-postgres -e POSTGRES_PASSWORD=secret -e POSTGRES_USER=sentry postgres
  • 3.生成一个密钥,用于在后面所有sentry容器之间握手
$ docker run --rm sentry config generate-secret-key
  • 4.连接Redis、Postgres和Sentry,运行后会自动执行初始化操作
$ docker run -it --rm -e SENTRY_SECRET_KEY='<secret-key>' --link sentry-postgres:postgres --link sentry-redis:redis sentry upgrade

初始化操作过程中需要创建本地用户,可以输出进行创建!!

psutil监控性能 sentry 性能监控_sentry_02

  • 5.启动 Sentry Server,同时添加端口映射。Sentry的端口为9000,可以使用 -p 9000:9000 参数,在启动后可以通过访问http://localhost:9000或http://host-ip:9000进入Sentry的web管理页面
$ docker run -d --name my-sentry -p 9000:9000 -e SENTRY_SECRET_KEY='<secret-key>' --link sentry-redis:redis --link sentry-postgres:postgres sentry
  • 6.默认配置中需要Celery,因此启动一个Celery 主节点与执行节点(worker节点可按需多启几个)
$ docker run -d --name sentry-cron -e SENTRY_SECRET_KEY='<secret-key>' --link sentry-postgres:postgres --link sentry-redis:redis sentry run cron
$ $ docker run -d --name sentry-worker-1 -e SENTRY_SECRET_KEY='<secret-key>' --link sentry-postgres:postgres --link sentry-redis:redis sentry run worker

Sentry的使用

  • 登录
    通过连接http://localhost:9000打开sentry管理页面,按照配置的邮箱和密码登录账户
  • 根据数字提示,创建项目
  • 完成上步操作后,需要前端项目进行配置,用来达到错误上报的目的
  • 首先进行安装
$ yarn add @sentry/browser
$ yarn add @sentry/integrations
  • 接下来,进行代码配置
import Vue from 'vue'
import * as Sentry from '@sentry/browser';
import * as Integrations from '@sentry/integrations';

Sentry.init({
  dsn: 'http://170d6b79e8d24984b73b3b2cf8834327@localhost:9000/1',
  integrations: [new Integrations.Vue({Vue, attachProps: true})],
});
  • 报错查看
    Sentry统计的信息包含以下多点:
  • 报错统计次数活跃度
  • 浏览器版本、header等信息
  • 报错时间、文件、以及错误信息等

psutil监控性能 sentry 性能监控_报错捕捉_03


这样我们就能通过可视化的页面分析更高效的解决用户的问题,给用户带来更优的体验。