zoukankan      html  css  js  c++  java
  • 【转】Sentry介绍

    Sentry 是一个开源的实时错误报告工具,支持 web 前后端、移动应用以及游戏,支持 Python、OC、Java、Go、Node、Django、RoR 等主流编程语言和框架 ,还提供了 GitHub、Slack、Trello 等常见开发工具的集成

    基本概念

    Sentry 是什么

    通常我们所说的 Sentry 是指 Sentry 的后端服务,由 Django 编写。8.0 版本使用了 React.js 构建前端 UI。使用 Sentry 前还需要在自己的应用中配置 Sentry 的 SDK —— 通常在各语言的包管理工具中叫做 Raven。

    当然,Sentry 还可以是其公司所提供的 Sentry SaaS 服务。

    如果你正在寻找国内类似的服务,不妨试用一下Fundebug!Fundebug目前支持前端JavaScript、微信小程序、后端Nodejs的bug监控。以SaaS的形式服务,并提供基础的免费版本。

    DSN(Data Source Name)

    Sentry 服务支持多用户、多团队、多应用管理,每个应用都对应一个 PROJECT_ID,以及用于身份认证的 PUBLIC_KEY 和 SECRET_KEY。由此组成一个这样的 DSN:

    '{PROTOCOL}://{PUBLIC_KEY}:{SECRET_KEY}@{HOST}/{PATH}{PROJECT_ID}'
    

    PROTOCOL 通常会是 http 或者 https,HOST 为 Sentry 服务的主机名和端口,PATH 通常为空。

    部署 Sentry 服务

    安装

    由于 Sentry 依赖众多,建议在独立的 Virtualenv 中安装。Sentry 依赖 Unix 兼容系统、Python 2.7、 PostgreSQL 以及 Redis,确保你已经安装好了这些依赖。考虑到 Python WSGI 应用的部署, 你可能还需要 Nginx 或者 Apache 2 作为前端服务器,以及 supervisor 管理应用。

    有了这些以后,Sentry 的安装就非常简单:pip install sentry

    配置

    启动

    我自己写了个简单的 Supervisor配置文件,可供参考。

    使用 Sentry SDK

    Sentry 的 SDK 通常在各语言的包管理器中成为 Raven,使用起来也非常简单。以 Python 为例:

    from raven import Client
    client = Client('https://<key>:<secret>@app.getsentry.com/<project>')
    
    try:
        1 / 0
    except ZeroDivisionError:
        client.captureException()
    

    这样就可以使用 client 对象向 Sentry 服务器中提交日志信息了。

    当然 Sentry 还为知名 web 框架提供了便捷的封装,以 Python Flask 框架为例:

    sentry = Sentry(dsn='http://public_key:secret_key@example.com/1')
    
    def create_app():
        app = Flask(__name__)
        sentry.init_app(app, logging=True, level=logging.ERROR)
        return app
    

    添加上下文信息

    为了解决问题,通常还会需要上下文信息重现当时的问题,以及快速了解影响的范围。

    client.user_context({
        'email': request.user.email
    })
    

    使用 Sentry web 服务

    搜索

    Sentry 的搜索支持 token:value 语法,例如:

    is:resolved user.username:"Jane Doe" server:web-8 example error
    

    支持的 token 包括:

    • is:问题状态(resolved, unresolved, muted)
    • assigned:问题的分配状态(用户 ID、用户 Email 或者 me
    • release:指定发布版本中出现的问题
    • user.id
    • user.email
    • user.username
    • user.ip

    通知

    合并&样本

    数据过滤

    和其它服务集成

    和 GitLab 集成

    和 Trello 集成

    参考:

    - [Sentry Python 文档](https://docs.getsentry.com/on-premise/clients/python)

    来源:https://blog.csdn.net/scdxmoe/article/details/53539216
  • 相关阅读:
    java对redis的基本操作(一)
    Android RelativeLayout 属性
    查看jdk的位数
    Java简单文件传输 socket简单文件传输示例
    Java使用socket实现两人聊天对话
    Java观察者设计模式
    Java装饰设计模式的例子
    php邮件发送 phpmailer
    php smarty 缓存和配置文件的基本使用方法
    php smarty insert用法
  • 原文地址:https://www.cnblogs.com/curationFE/p/what_is_sentry.html
Copyright © 2011-2022 走看看