基于 CentOS 7 搭建异常监控 Sentry

3,541 阅读4分钟

背景

随着公司项目量越来越大,项目上线后不可避免出现一些问题,为了第一时间发现问题,而不是等着客户反馈后,感叹为时晚矣。目前后端有办法捕获接口 500 错误,而前端是通过代码 try catch 或者基于框架提供 API 来手动加入异常监控代码来调用发送邮件接口进行通知到人的反馈。但缺点显而易见,例如无法通过图表形式展示异常量,无法进行异常类型分析,分配 bug,更重要是解决完 bug 反馈机制还需完善等等,

目的

我们需要一个工具帮助我们自动收集并管理各种错误日志信息(接口、JS 事件、DOM、语法)等等,本文主要介绍 在阿里云服务器(CentOS)下通过 Docker 安装 Sentry

环境

  • CentOS 7

需要确保本文是基于 CentOS 7,而不是 Ubunto,怎么检查服务器版本

[root@webtest ~]# lsb_release -a
LSB Version:    :core-4.1-amd64:core-4.1-noarch
Distributor ID: CentOS
Description:    CentOS Linux release 7.0.1406 (Core) 
Release:        7.0.1406
Codename:       Core
  • 内存需要大于 2400 MB,如何查看服务器内存
[root@webtest ~]# dmidecode -t memory | grep Size: | grep -v "No Module Installed" 
Size: 4096 MB

[root@webtest ~]# free -m
             total       used       free     shared    buffers     cached
Mem:          3792       3609        182        244        117        200
-/+ buffers/cache:       3292        499
Swap:            0          0          0

安装 Docker

  1. 卸载已有的 docker
sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine
  1. 安装 docker 依赖
sudo yum install -y yum-utils \
  device-mapper-persistent-data \
  lvm2
  1. 安装 docker-ce
sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.rep
    
sudo yum install docker-ce docker-ce-cli containerd.io
  1. 启动 docker 后台服务
service docker start
  1. 测试运行
 docker run hello-world
  1. 设置开机启动
sudo systemctl enable docker
  1. 查看 docker 是否启动
systemctl status docker

可直接看官网

升级 Python

方法有很多,能正常升级就可以

  1. 通过 yum 下载最新 python
yum install epel-release
yum install python36
  1. 查看 python 相关的二进制文件
ls -l /usr/bin/python*
  1. 删除默认 python
rm /usr/bin/python 
  1. 指向最新
ln -s /usr/bin/python3.6 /usr/bin/python
  1. 检查版本
python -V

安装 docker-compose

  1. 安装
sudo curl -L "https://github.com/docker/compose/releases/download/1.25.3/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

chmod +x /usr/local/bin/docker-compose

  1. 测试
docker-compose version

可直接看官网

安装 Sentry

  1. 安装 git 已安装,略过这步
yum install git
  1. 下载 onpremise
 git clone https://github.com/getsentry/onpremise.git
  1. 安装

有一些文章是说需要通过命令生成密钥,目前已有 install.sh 脚本,所以简化了配置过程,不需要手动调整密钥,这一步时间比较长,我是大概用半个小时,快结束的时候会让你输入 邮箱+密码,来作为登陆 sentry 的管理员账号。

 cd onpremise
 
 ./install.sh
  1. 启动

通过 IP:9000 即可成功访问,用之前创建的账号即可登陆。

docker-compose up -d

欢迎来到 Sentry

邮箱配置

正常情况下通过第一次 IP:9000 访问的时候,界面会有提示让输入邮箱配置信息,写正确的话可以,就可以登陆直接通过这个路由 http://你的服务器IP:9000/manage/status/mail/ 看到邮箱的配置,点击下面的 Test 进行测试是否配置成功

image.png

  • 坑 (然是有坑的,假如你当时没有申请号邮箱,或者写错了信息,目前是无法在界面上修改的。)

目前我使用成功修改的一种方式是: onpremise 下有 .env 文件中新增(对于使用QQ邮箱的用户,值得注意的是 PORT 用 465,邮箱事发时不成功的,会出现 TiMEOUT,目前修改成 587正常)

SENTRY_EMAIL_HOST=smtp.qq.com
SENTRY_EMAIL_USER=XXXXXX@qq.com
SENTRY_SERVER_EMAIL=XXXXX@qq.com
SENTRY_EMAIL_PASSWORD=替换成你的
SENTRY_EMAIL_USE_TLS=true
SENTRY_EMAIL_PORT=587
SENTRY_EVENT_RETENTION_DAYS=90

提醒

在用户设置中 User settings 进行修改

  • 时区记得更改成国内,否则统计异常的时候,时间不是国内时间
  • sentry 是可以切换语言

image.png

最后

你可以愉快的创建项目,让团队人员用邮箱注册,然后各种探索 sentry 的功能了。

image.png

image.png

  • 邮箱成功发送

image.png

推荐阅读