作者:风禾
链接: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
- 卸载已有的 docker
yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
- 安装 docker 依赖
yum install -y yum-utils device-mapper-persistent-data lvm2
- 安装 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
- 启动 docker 后台服务
service docker start
- 测试运行
docker run hello-world
- 设置开机启动
systemctl enable docker
- 查看 docker 是否启动
systemctl status docker
升级 Python
方法有很多,能正常升级就可以
- 通过 yum 下载最新 python
yum install -y epel-release
yum install -y python36
- 查看 python 相关的二进制文件
ls -l /usr/bin/python*
- 删除默认 python
rm -f /usr/bin/python
- 指向最新
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
- 检查版本
python -V
安装 docker-compose
- 安装
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
- 测试
docker-compose version
安装 Sentry
- 安装 git 已安装,略过这步
yum install -y git
- 下载 onpremise
cd /usr/local/
git clone https://github.com/getsentry/onpremise.git
- 安装
有一些文章是说需要通过命令生成密钥,目前已有 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
- 启动
通过 IP:9000 即可成功访问,用之前创建的账号即可登陆。
docker-compose up -d
邮箱配置
正常情况下通过第一次 IP:9000 访问的时候,界面会有提示让输入邮箱配置信息,写正确的话可以,就可以登陆直接通过这个路由 http://你的服务器IP:9000/manage/status/mail/ 看到邮箱的配置,点击下面的 Test 进行测试是否配置成功
- 坑 (然是有坑的,假如你当时没有申请号邮箱,或者写错了信息,目前是无法在界面上修改的。)
目前我使用成功修改的一种方式是: 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 是可以切换语言
最后
你可以愉快的创建项目,让团队人员用邮箱注册,然后各种探索 sentry 的功能了。
- 邮箱成功发送