23- vue django restful framework

作者: 天涯明月笙 | 来源:发表于2018-03-26 22:43 被阅读630次

    Django2.0.2(Django-rest-framework)以及前端vue开发的前后端分离的商城网站

    线上演示地址: http://vueshop.mtianyan.cn/
    github源代码地址: https://github.com/mtianyan/VueDjangoFrameWorkShop

    本小节: 通过docker实现sentry搭建错误日志监控系统

    sentry介绍

    sentry也是通过drf开发的一款错误日志监控系统。

    它的服务器是用drf做的,但是目前的最主流语言都是可以集成进来的。

    官方文档中也宣传过这个。

    crash收集。它是一个服务,它是一个用django写的网站

    错误日志,上线之后是很重要的。

    logging日志,可以记录错误栈。

    • 必须登录到服务器查看文件
    • 我们需要主动去查询,web系统
    • 收邮件。一个bug被很多用户遇到,邮件很多。
    • 集中管理bug jira(由测试来提bug)页面上能看到的bug

    分配bug > bobby

    项目管理。5个项目。分项目bug管理。

    sentry是一个server,我们要像sentry发送错误消息就需要sdk

    进入sentry的官网,注册一个账号进来。

    sentry是分为收费版和免费版的一般是我们自己去搭建我们的sentry服务器

    小项目可以直接使用sentry的服务,注册账号就行了。

    安装sentry

    通过python & 通过 docker

    依赖服务特别多

    17年3月之后,企业社区版本。

    • 运行命令进行卸载
    sudo yum remove docker \
    docker-common \
    docker-selinux \
    docker-engine
    
    • 安装依赖包
    sudo yum install -y yum-utils device-mapper-persistent-data lvm2
    
    • 添加docker的稳定源
    sudo yum-config-manager \
        --add-repo \
        https://download.docker.com/linux/centos/docker-ce.repo
    
    • 安装docker ce
    1. 更新yum包
    sudo yum makecache fast
    
    1. 安装docker ce
    sudo yum install docker-ce
    
    1. 启动docker
    sudo systemctl start docker
    
    1. 测试docker
    sudo docker run hello-world
    docker --version
    

    安装方法2:

    下载安装包https://download.docker.com/linux/centos/7/x86_64/stable/Packages/

    下载rpm包

    sudo yum install docker.rpm
    

    安装docker-compose

    sudo yum install epel-release
    sudo yum install -y python-pip
    sudo pip install docker-compose
    

    sentry

    sentry依赖组件比较多,包括redis postgresql outboundemail

    安装sentry前确保docker版本大于1.10

    1. 安装git
    sudo yum install git
    
    1. 下载docker镜像

    https://github.com/getsentry/onpremise

    运行readme中的命令如下

    ~: mkdir -p data/{sentry,postgres}
    

    克隆项目

    ~:git clone https://github.com/getsentry/onpremise.git
    cd onpremise/
    

    下面这个命令是要使用我们克隆下来的项目中的docker-compose.yml的。

    docker-compose run --rm web config generate-secret-key
    
    #生成secret-key
    

    下载了很多的镜像,redis memcache postgresql smtp等

    最后执行完成之后会给我们生成一个secret-key

    需要将这个key填入到docker-compose.yml文件中

    里面有一个变量叫做sentry_secret_key

    SENTRY_SECRET_KEY: 'key'
    

    填进来之后我们就可以执行下面的命令

    docker-compose run --rm web upgrade
    

    它会将我们的数据表建好。让我们新建一个用户,其实就是django的create superuser

    询问我们是否创建一个user account 输入y

    按住ctrl+回退才能执行回退。

    输入邮箱 用户名 密码 是否超级管理 y

    docker-compose up -d
    

    运行起我们所有的服务。

    docker ps
    

    就可以看到运行的服务。

    全部启动之后就可以访问。9000端口不在允许范围内。阿里云修改安全策略。

    加载比较慢。ctrl + f5强制刷新。

    是否允许注册。admin email是可以切换的。root url设置为当前地址

    http://remote_ip:9000/
    

    直接进入管理台页面。

    sentry的功能

    如何使用sentry来完成错误日志的监控。

    dashboard主页面

    projects team 概念

    虽然是错误日志的收集,也是按team 来组织的。

    新注册到sentry的用户叫做member,可以注册也可以邀请用户进入。
    用户可以加入相应的team team主要是属于projects的。

    stats 关于bug的统计。

    分配。出现bug可以将该bug分配给系统中的某一个用户。

    新建项目

    new project。mtianyan生鲜超市

    可以通过项目将组织中的事件细分至具体应用。项目创建好了。

    获取项目的DSN。写python代码连接sentry最重要的url。
    流行的框架的支持。

    新建一个目录test包。目录下新建一个sentry的脚本

    pip install raven --upgrade
    
    # encoding: utf-8
    __author__ = 'mtianyan'
    __date__ = '2018/3/15 0015 22:15'
    
    from raven import Client
    
    client = Client('dsn')
    
    try:
        1 / 0
    except ZeroDivisionError:
        client.captureException()
    

    同样的错误只会在后面添加events的数量,不会新建一条。

    bug的管理员可以把这个错误分配给某个人。

    解决了之后,点击resolve,标记为错误已解决。

    也可以重新标记为未解决。

    忽略ignore。已知错误。标记设置删除。筛选,打tag。

    错误栈。排除bug。

    project_settings对于项目进行设置,项目名称,项目的team。
    权限管理。group的功能。

    项目是组管理的。sentry是默认的组,我们也可以新建组(team)。

    发送邮件。当某一个错误首次发送给我们发邮件。

    设置邮件的prefix前缀。事件的设定。允许的域名。

    报警: roles配置邮件发送的规则。

    发送邮件的规则: 防止过度。满足条件才发送。默认配置为第一次发生发邮件。

    客户端密钥DSN。现有系统的集成。JIRA进行集成。github gitlab的集成。

    api 的接口。接口文档。

    如何将sentry集成到django的restframework中

    • 将错误栈显示出来

    • 发送邮件的功能

    左下角账号: 外观里面默认是utc的时间。搜索上海。

    通知是设置接收哪些消息。

    测试邮件发送功能: 工作流接收消息。

    多个邮箱都收到邮件。账户里修改邮箱。

    管理,才能看到管理。

    阿里云发送哟偶见问题:

    docker-compose.yml中设置host等。

    #  SENTRY_EMAIL_HOST
    #  SENTRY_EMAIL_PORT
    #  SENTRY_EMAIL_USER
    #  SENTRY_EMAIL_PASSWORD
    #  SENTRY_EMAIL_USE_TLS
    

    运行之前的命令

    docker-compose up -d
    

    刷新页面。

    SENTRY_SERVER_EMAIL
    

    这个值和我们的user保持一致。重新启动。

    docker-compose up -d
    

    阿里云对于25端口进行了限制。 25端口禁用,465 ssl

    阿里云强制ssl 当时sentry不支持ssl。只支持TLS

    阿里云服务器,sentry 邮件端口设置为587,TLS 设置为true,邮箱功能可以正常发送

    一个很大的坑,关闭重启修改过好几次。

    启动顺序的不一致:

    找到重要的三个进程 worker web cron

    docker stop 这三个的id

    一个一个启动按顺序

    docker  start worker
    docker start cron
    docker start web
    

    项目点击项目设置: 设置中有一个警报。

    点击规则,当第一次发生这个错误。

    配置到django当中。

    https://docs.sentry.io/clients/python/integrations/django/

    install_app中添加

    'raven.contrib.django.raven_compat',
    

    settings文件

    import os
    import raven
    
    RAVEN_CONFIG = {
        'dsn': 'https://<key>:<secret>@sentry.io/<project>',
        # If you are using git, you can also automatically configure the
        # release based on the git info.
        'release': raven.fetch_git_sha(os.path.abspath(os.pardir)),
    }
    

    不用git集成就可以把release删除掉。

    运行消息测试

    python manage.py raven test
    
    markmark

    可以看到我们成功的接收到了邮件。

    会将get的请求,以及是哪个用户出了错。哪个ip过来的等。

    前后端分离的技术可以跨语言跨平台。

    相关文章

      网友评论

      • python_yu:您好, 在使用vue django restful framework 打造生鲜超市 这个项目时候遇到过 登录xadmin 提示 请输入一个正确的 用户名 和密码. 注意他们都是大区分大小写的 但是我的账号密码是对的 谢谢
      • 772eff1fd8f2:感谢楼主。pycrypto-2.6.1.tar.gz 竟然安装不了,在python 3.7 环境
      • TcAlan:楼主你好,感谢你的精心付出,我按照教程已经完成了sentry本地服务器的搭建,有个小问题,我想把这个集成到我们公司的项目中,但是公司项目比较多,他这个默认用的是本地数据库,postgresql数据库,redis等也都是用本机的,这样一来当项目多的时候就会存不下,是否能把数据库或者修改到其他数据库地址,尝试了修改postgres没能成功。
        天涯明月笙:@TcAlan 这几天在忙,抱歉哈。你这个可能没法使用这种封装好的docker image,需要自己改配置之类,我没有弄过,😂你自己加油
      • Cinque_Peng:苦恼啊苦恼,sentry安装时候不提示创建超级用户就完成了,现在不知道咋卸载或者修改😭
        天涯明月笙:@U_Wer 后端部署上去就ok了,最终代码已经把前端也打包进了后端template目录了
        Cinque_Peng:@天涯明月笙 弄好了,请问下,这个项目前后端要怎么部署啊?后端能部署,前端不知道咋办😂
        天涯明月笙:@U_Wer 杀掉运行的端口,删除docker中的image,重新来过
      • IT人故事会:楼主的心血啊!谢谢博主
        天涯明月笙:@IT人故事会 😂谢谢鼓励

      本文标题:23- vue django restful framework

      本文链接:https://www.haomeiwen.com/subject/ynxccftx.html