使用效果

在项目中部署了sentry之后,当线上项目报错时,错误信息会第一时间发送至钉钉群内,并且会@项目负责人
项目负责人的电脑与手机均会出现钉钉醒目提醒。

  • PC端提示
    PC端提醒

  • 手机端钉钉内提示
    钉钉提醒

  • 手机通知栏提示
    状态栏提醒

部署步骤

必备环境

  • Golang 环境,用以打包编辑了阿里云密钥服务的serverless模块
  • Linux 环境,由于阿里云FC云函数BUG,serverless必须在linux中打包。在windows中打包即便修改了GOOS也会报错。
  • 若无法使用Golang环境,可等待作者开发Python版本的serverless模块(大概)
  • 阿里云OSS拥有一个私有读写权限的Bucket,用以保存提供给serverless的伪接口。可以与其他服务公用Bucket,本项目仅在Bucket中占用api文件夹。
  • 阿里云开启FC云函数服务,用以部署serverless服务

本项目消耗的OSSFC云函数资源每月月末基本都会抹零。

创建 Sentry 账号

访问 Sentry官网,创建一个账号。

克隆项目

1
git clone git@github.com:CuratorC/sentry-white.git

配置伪接口

  • sentry-white文件夹中打开命令行模式,运行以下命令
1
./sentry-white-go.exe
  • 浏览器会自动打开HTML页面,在此页面配置阿里云 OSS信息。

项目设置

  • 进入负责人界面,将相关项目负责人添加到系统中。

  • 进入组织信息界面,将刚才创建的Sentry账号视作一个组织新建出来。

创建云函数

  • sentry-white文件夹中的sentry-white-serverless文件夹复制至GOPATH中,打开main.go文件,将阿里云相关的四条参数填写至文件头的变量中。

  • linux环境中将sentry-white-serverless打包。相关命令如下

    1
    2
    3
    4
    5
    6
    7
    // 修改 Go 环境参数
    go env -w GOOS=linux
    go env -w CGO_ENABLED=0
    // 打包项目
    go build main.go
    // 压缩项目
    zip sentry-white-serverless.zip main
  • 将打包出来的sentry-white-serverless.zip复制出来备用。

  • 进入阿里云函数计算FC-服务及函数-创建服务

    • 创建函数,选择从零开始创建
      • 运行环境选择Go 1.X
      • 函数触发方式选择通过 HTTP 请求触发
      • 实例类型选择弹性实例,内存规格选择128M
    • 创建成功后选择上传代码,将sentry-white-serverless.zip上传上去。
    • 上传完成后点击测试函数,当运行成功并看到部署成功后,sentry-white已完成部署。
    • 选择触发器管理,复制公网访问地址备用。此地址之后每次配置项目都需要使用。

项目接入

Sentry

  • Sentry中创建需要监控的项目,按照Sentry官网或者『ThreeParty』Sentry 接入指引将脚本加入项目中。

    建议采用『ThreeParty』Sentry 接入指引接入,因为官网指引缺乏项目环境方面的配置。

  • 开启Webhooks功能
    • 在项目设置中找到Alerts(从上往下第三条),打开后找到WEBHOOKS配置。
    • 将阿里云函数计算FC中的公网访问地址填入Callback URLs点击Save Changes
  • 开启消息通知
    • 继续在本页面点击右上角的View Alert Rules按钮。
    • 新页面继续点击右上角的Create Alert按钮。
    • 新页面点击中间偏下的Set Conditions按钮。
    • 按照下图提示配置好消息通知。其中蓝框内都是需要修改的地方。
      Alters 配置

钉钉

  • 在钉钉中创建一个群,将相关项目负责人拉入群内。
    • 群设置-智能群助手-添加机器人-自定义-添加
    • 安全设置中选择自定义关键词,输入详情点完成。
    • 添加成功后会给个Webhook地址,复制出来可见此地址为一个固定地址加access_token参数组成。复制access_token等待稍后使用。

sentry-white

  • 点击组织的查看项目,点击新建创建需要监控的项目。

    • 项目名(中文)指项目中文代称,方便浏览。
    • 项目名(英文)指项目文件夹名称/git仓库名/sentry上填写的项目名等。
    • 项目负责人选择项目报错后需要通知的人。当选择了多个人之后,报错发生时每个人都会被艾特到。
  • 编辑机器人信息

    • 钉钉群名称access_token参数填入,并保存。

项目设计思路

思维导图