sentry是一个基于Django构建的现代化的实时事件日志监控、记录和聚合平台,主要用于如何快速的发现故障。支持几乎所有主流开发语言和平台,并提供了现代化UI,它专门用于监视错误和提取执行适当的事后操作所需的所有信息,而无需使用标准用户反馈循环的任何麻烦。
Sentry 的搜索功能和查询语法
要在 Sentry 中通过 API 获取 culprit
中不包含 "timeout" 字符的 issues 列表,可以使用查询参数来进行过滤。
import requests
url = 'https://sentry.io/api/0/projects/my-org/my-project/issues/'
headers = {
'Authorization': 'Bearer <your_auth_token>',
}
params = {
'query': '!culprit:"timeout"',
}
response = requests.get(url, headers=headers, params=params)
if response.status_code == 200:
issues = response.json()
for issue in issues:
print(issue)
else:
print(f"Error: {response.status_code} - {response.text}")
query
参数 :!culprit:"timeout"
过滤掉culprit
中包含 "timeout" 的 issues。- URL 编码 :在
curl
示例中,我们使用:
和"
对冒号:
和引号"
进行 URL 编码。
sentry.Error捕获哪些异常
1. 未处理的异常
在应用程序中,未捕获的异常通常会导致程序崩溃。这些异常会被 Sentry 自动捕获并记录为 sentry.Error
类型的错误。例如,在 Python 应用程序中,未处理的 ValueError
、TypeError
或 KeyError
等异常。
2. 手动记录的错误
开发者可以使用 Sentry SDK 手动记录错误。例如,遇到特定业务逻辑错误或异常时,开发者可以使用 capture_exception
或 capture_message
方法手动将错误发送到 Sentry。
3. 网络或数据库错误
当应用程序与外部服务(如数据库、API、文件系统)交互时,可能会发生网络超时、连接失败或数据查询错误等问题。这些错误也会被捕获并记录为 sentry.Error
类型。
4. 配置或环境错误
应用程序启动时可能会遇到配置文件缺失、环境变量设置错误或依赖库版本不匹配等问题。这些问题会导致应用程序无法正常运行,Sentry 会将这些错误记录下来。
5. 用户输入错误
用户输入的数据不符合预期(例如表单验证失败)也可能导致应用程序抛出异常。这些异常会被捕获并记录,以帮助开发者改进用户输入的验证和处理逻辑。
6. 资源访问错误
当应用程序尝试访问不存在的文件、目录或其他资源时,会抛出相应的异常。例如,文件系统中的 FileNotFoundError
或权限不足导致的 PermissionError
。
Sentry如何获取激增报错
在 Sentry 中,"激增报错"(Issue Spike)通常是指在短时间内错误数量突然增加的情况。Sentry 提供了一些工具和 API 端点来监控和检测这种情况。
通过 Sentry UI 获取激增报错
- 仪表板和发现视图 :使用 Sentry 仪表板和发现视图可以查看错误的趋势和异常。你可以设置时间范围和过滤器,观察特定错误的数量变化。
- 警报 :设置基于阈值的警报,当某个错误的发生次数超过某个预设值时,Sentry 会发送通知。你可以根据错误的数量激增来配置警报。
使用 Sentry API 获取激增报错
可以使用 Sentry API 来查询特定时间范围内的错误,并监控错误数量的变化。以下是一个示例,通过 /api/0/projects/{organization_slug}/{project_slug}/issues/
端点获取特定时间范围内的错误,然后分析错误数量的变化。
import requests
organization_slug = 'your_organization_slug'
project_slug = 'your_project_slug'
auth_token = 'your_auth_token'
url = f'https://sentry.io/api/0/projects/{organization_slug}/{project_slug}/issues/?statsPeriod=24h'
headers = {'Authorization': f'Bearer {auth_token}'}
response = requests.get(url, headers=headers)
if response.status_code == 200:
issues = response.json()
for issue in issues:
print(issue)
else:
print(f"Error: {response.status_code} - {response.text}")
返回数据
该端点返回的是一个错误组列表,每个错误组包含的字段包括:
- id :错误组的唯一标识符。
- project :错误组所属的项目信息。
- culprit :导致错误的代码位置。
- title :错误组的标题。
- lastSeen :错误组最后一次被看到的时间。
- firstSeen :错误组第一次被看到的时间。
- count :错误组发生的次数。
- userCount :受影响的用户数。
- permalink :错误组的永久链接。
- shortId :错误组的简短 ID。
- logger :记录错误的日志器。
- level :错误级别。
- status :错误组的状态(已解决、未解决等)。
- assignedTo :分配给的用户。
- annotations :注释。
设置警报
你还可以在 Sentry 中设置警报,当错误数量在特定时间段内急剧增加时触发警报:
- 进入项目设置 :在 Sentry 仪表板中,选择你的项目。
- 设置警报 :导航到警报设置,选择创建新的警报规则。
- 配置条件 :设置条件,例如在某个时间段内错误数量增加到特定阈值时触发。
- 配置通知 :设置通知渠道,例如通过电子邮件、Slack、Webhooks 等方式接收通知。
使用 Discover 查询
在 Sentry 的 Discover 功能中,你可以编写自定义查询来分析错误数据,并检测错误数量的激增:
- 进入 Discover :在 Sentry 仪表板中,选择 Discover。
- 编写查询 :编写查询来筛选特定时间范围内的错误,并根据错误数量排序。
- 保存和监控 :保存查询并定期查看,以检测错误数量的变化。