良玉的博客 点点滴滴,积水成河_良玉的博客_页游、手游linux运维工程师之路

集中式日志管理系统Sentry

Sentry是一个集中式日志管理系统。它具备以下优点:


多项目,多用户


界面友好


可以配置异常出发规则,例如发送邮件


支持主流语言接口



安装和快速上手

Sentry支持部署到本地服务器,具体可以参考以下文档:


https://docs.sentry.io/server...

但作为大多数个人开发者和中小企业,我更建议使用Sentry官网(https://sentry.io/)提供的云服务,你只需要注册一个Sentry账号,就可以快速享受到集中处理异常日志的服务。


Sentry免费版可以:


每月10k 错误日志上限

支持所有平台和语言,功能无缩水

无限项目数量,仅单用户访问,不提供团队功能

具体的价格表可以看这里:


https://sentry.io/pricing/

开始配置DSN

你可以认为 DSN(Data Source Name)是Sentry 管理项目需要的PROJECT_ID,每个应用都需要对应一个 PROJECT_ID,以及用于身份认证的 PUBLIC_KEY 和 SECRET_KEY。由此组成一个这样的 DSN:


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

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


在你登入Sentry后台之后,你可以新建一个项目,之后就可以得到类似于下面这样一个DSN。


https://e055040d5@sentry.io/12345

有了DSN以后,你就可以在客户端中将错误日志上传到Sentry了。


配置客户端

这里我主要以Python为例,其他编程语言的客户端配置可以参考官网文档,步骤大同小异。


https://docs.sentry.io/quicks...

首先通过pip安装Sentry SDK。


pip install raven --upgrade

然后初始化客户端。


from raven import Client


DSN = 'https://****@sentry.io/****'

client = Client(DSN)

最后,在你需要记录异常的代码为止调用client.captureException()即可。


try:

    1 / 0

except ZeroDivisionError:

    client.captureException()

很多时候我们的异常信息应该包含更多的上下文信息,这样对于我们做后续分析会有更多帮助,那么你可以在Sentry捕获异常前加入这些上下文。


try:

    processing(user, data)


except:

    client.user_context({

        'user': user.email,

        'data': json.dumps(data)

    })

    client.captureException()


作者:良玉 分类:Linux 浏览:197 评论:0
留言列表
发表评论
来宾的头像