基于 CentOS 7 搭建异常监控 Sentry

作者:风禾
链接:https://juejin.im/post/6844904061466640398
来源:掘金

和原文中区别

  • 修改了个别错别字,升级python后,需要修改yum相关的配置

  • 想修改默认的9000端口,在运行./install.sh之前可以找出所有的9000做替换

背景

随着公司项目量越来越大,项目上线后不可避免出现一些问题,为了第一时间发现问题,而不是等着客户反馈后,感叹为时晚矣。目前后端有办法捕获接口 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
yum remove docker 
                  docker-client 
                  docker-client-latest 
                  docker-common 
                  docker-latest 
                  docker-latest-logrotate 
                  docker-logrotate 
                  docker-engine
 
  1. 安装 docker 依赖
yum install -y yum-utils device-mapper-persistent-data lvm2
  1. 安装 docker-ce
yum-config-manager --add-repo 
    https://download.docker.com/linux/centos/docker-ce.repo
    
yum install -y docker-ce docker-ce-cli containerd.io
 
  1. 启动 docker 后台服务
service docker start
  1. 测试运行
 docker run hello-world
  1. 设置开机启动
systemctl enable docker
 
  1. 查看 docker 是否启动
systemctl status docker
 

可直接看官网

升级 Python

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

  1. 通过 yum 下载最新 python
yum install -y epel-release
yum install -y python36
 
  1. 查看 python 相关的二进制文件
ls -l /usr/bin/python*
 
  1. 删除默认 python
rm -f /usr/bin/python 
 
  1. 指向最新
ln -s /usr/bin/python3.6 /usr/bin/python
顺带把yum的配置也改掉,不然有问题
sed -i '1d' /usr/bin/yum
sed -i '1i#!/usr/bin/python2.7' /usr/bin/yum
sed -i '1d' /usr/libexec/urlgrabber-ext-down
sed -i '1i#!/usr/bin/python2.7' /usr/libexec/urlgrabber-ext-down
 
  1. 检查版本
python -V

安装 docker-compose

  1. 安装
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 -y git
 
  1. 下载 onpremise
cd /usr/local/ 
git clone https://github.com/getsentry/onpremise.git


  1. 安装

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


 默认是9000端口,如果需要替换成其他的端口,可以事先把nginx 的docker端口映射- '9000:80/tcp' 修改为如 - '80:80/tcp'
 替换掉
cd onpremise
grep -rn '9000' ./

 sentry邮件smtp错误的坑,提前说

需要在/usr/local/onpremise/sentry目录下的config.yml中添加类似如下的几行

mail.backend: 'smtp'  # Use dummy if you want to disable email entirely
mail.host: 'smtp.gmail.com'
mail.port: 587
mail.username: 'account@gmail.com'
mail.password: '********'
mail.use-tls: true
# The email address to send on behalf of
mail.from: 'account@gmail.com'

准备就绪后,返回/usr/local/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
原文地址:https://www.cnblogs.com/faberbeta/p/13564711.html