• 基于 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
  • 相关阅读:
    E
    C. Connect Three(构造)
    判断矩形相交的方法
    字典树&&01字典树专题&&对字典树的理解
    J
    kmp专题
    Python 字典 popitem() 方法
    Python 字典 pop() 方法
    Python 字典(Dictionary) values()方法
    Python 字典(Dictionary) update()方法
  • 原文地址:https://www.cnblogs.com/faberbeta/p/13564711.html
Copyright © 2020-2023  润新知