目录
一、Sentry简介
Sentry(哨兵)是一款应用错误跟踪系统,对软件系统运行过程中产生的错误日志进行收集从而实现监控告警。通过对应用的错误进行实时追踪并统一跟进,提高对错误的治理能力。让业务场景下自己发现Bug的速度快于用户报告Bug的速度。
使用场景描述:线上应用程序触发了一个bug,Sentry会立即发现错误,并通过邮件或其他基于通知规则的集成通知到相关责任人员,这个通知可以把我们引入到这个报错的Dashboard,为我们提供了快速分类问题所需的上下文,如:频率、用户影响、代码那一部分受到影响以及哪个团队可能是问题的所有者。进入报错详情会显示帮助我们调试的详细信息,比如堆栈跟踪、堆栈本地信息、前面的事件、可能导致问题的提交以及在错误发生时捕获的定制数据。我们还可以在JIRA或GitLab Issue等项目管理工具中自动开始跟踪问题。
那么,Sentry的原理是怎么样的呢?首先,应用要集成Sentry的SDK,然后在应用发生错误是将错误信息发送给Sentry服务端。Sentry的服务端分为web、cron、worker这几个部分,应用(客户端)发生错误后将错误信息上报给web,web处理后放入消息队列或Redis内存队列,worker从队列中消费数据进行处理,总体架构如下:
根据语言和框架的不同,我们可以选择自动或自定义设置特殊的错误类型报告给Sentry服务端。Sentry支持的语言类型很多,大体如下图所示,基本上主流的语言和框架都是支持的:
二、注册与登陆
1. 用户测试
用户在sentry登陆页面,点击注册按钮,使用自己的公司邮箱注册账号,完成后通知管理员将自己添加到对应的团队和项目当中。
2. 激活用户
管理员登陆到Sentry在“Admin/Users”界面中点击对应的用户
进到用户详情页面,勾选“激活/Active”以及其它授权,点击“保存更改”即可
3. 添加member
项目管理员可以将用户添加到团队/team,左菜单栏点击“Settings"-“Teams”-"Add Members”中添加已有用户到Team,如果用户不在系统中也可以点击“Add Member”邀请用户注册
输入新成员的行内邮箱,设置角色,并设置要加入的Team,点击“Add Member”即可
被邀请用户会收到邀请邮件,如下图所示,点击“Join your team”
并在浏览器弹出窗口中点击“创建新账号“,并在登录页面点击”注册”使用被邀请的邮箱注册账户即可
三、创建项目及配置告警
1. 创建项目
在设置或者主页当中都可以找到创建项目按钮,在创建项目页面输入项目名称和所属的团队Team,点击”创建项目即可
为项目选择对应的语言或框架,并输入项目的名称、注册到所在的团队Team,点击“Create Project"即可
进入项目配置页面,系统会给出接入指引
2. 应用告警配置
接下来,我们按照上一页指引,在自己的项目当中配置Sentry告警机制即可,大家可以自行建项目测试。这里几个建议:
(1)Sentry DSN配置从环境变量读取,线上配置DSN环境变量,避免线下开发调试模式频繁触发告警;
(2)配置项目的运行环境,方便线上将告警按照环境区分,环境配置规则:DEV/FAT/UAT/PROD。
以python flask应用为例:
import os
import sentry_sdk
from flask import Flask
from sentry_sdk.integrations.flask import FlaskIntegration
app = Flask(__name__)
sentry_sdk.init(
dsn=os.environ.get('SENTRY_DSN'),
environment=os.environ.get('RUNTIME_ENV', 'DEV'),
integrations=[FlaskIntegration()],
)
如果不小心关闭了指引页面也没关系,指引可以在项目的”Settings"-"Error Tracking"中再次看到
3. 告警邮件
一旦线上触发了应用程序的报错,相关责任人会收到告警邮件,在邮件中会有该报错的一些基础信息,并可以点击”View on Sentry"在浏览器中进入Sentry页面查看详细信息
四、Sentry WEB使用
1. 查看项目列表
进入Sentry主页中点击左边栏”Project/项目“菜单,进入到项目列表
2. 查看报错Issue列表
上图中点击对应的Project项目,或者顶部下拉选择对应的项目,进入告警list页面,默认是Unresolved Issue List,可以筛选,也可以勾选对应的Issue设置是否解决、告警忽略等功能,并可以在右上角选择不同环境下的告警(如FAT/UAT)
3. 设置已解决及告警忽略
- 如果某个Issue已经处理解决,在上图Issue列表中选择Issue并点击顶部栏”Resolved“按钮即可;
- 如果某类型的告警频繁触发而你想要忽略它,在上图Issue列表中选择Issue并点击顶部栏的"Ignore"即可。
4. 查看Issue报错详情
点击Issue可以进去报错详情,可以看到详细的报错信息,如报错代码、Runtime信息以及一些Tag信息
5. 设置中文显示
用户登录系统后可以在右上角点开”Sentry“-”User Settings“,默认就是Account Detail页面,在Language栏下拉框中选择”Simplified Chinese“,提示成功后刷新页面即可。
6. 用户反馈
Sentry提供了在遇到错误时收集来自用户的其他反馈的功能。这在通常可能呈现简单错误页面(经典的500.html)的情况下尤其有用,这样可以将该反馈和报错Issue结合起来更有利于分析解决该报错。要收集反馈,可以使用可嵌入的JavaScript小部件,然后可以根据需要向用户显示,效果如下图所示:
在项目Project页面顶部选择“User-Feedback"的Tab页面,按照提示操作即可,需要对前后端代码都做一小点改动即可完成:
7. 集成GitLab
Sentry的GitLab集成可通过使用GitLab提交中的数据来帮助您更快地发现和修复错误。另外,您可以通过直接从Sentry创建GitLab Issue来简化分类过程。
(1)选择Issue
(2)进入到Issue报错页面右侧面板上的“链接的问题/Linked Issues”,然后单击“Link GitLab Issue”
(3)创建GitLab Issue事件
- 方法一:在弹出窗口“Create”选项卡中填写详细信息,然后单击“Create Issue”
- 方法二:在弹出窗口单击“Link”选项卡,按名称搜索问题,然后单击“链接问题”。目前无法按号码搜索问题
(4)解除与GitLab Issue关联
在Issue报错页面右边栏Linked Issues中点击X 即与GitLab Issue解除关联Unlink
8. 集成JIRA
Sentry可以集成JIRA,将Sentry中的错误与您的Jira问题联系起来。
具体可以参考文档:https://docs.sentry.io/workflow/integrations/global-integrations/#jira
9. 项目周报
每周Sentry会发送周报Weekly Report给到管理员邮箱,提供一些数据支持,也都可以在Sentry的Dashboard中查看。
参考资料: