图片来源于网络
警报提供对代码问题和对用户的影响的实时可见性。有多种类型的警报可用于自定义阈值和集成。
从 sentry.io
的 Alerts
页面,您可以创建新的警报规则并管理现有规则。“警报规则(Alert Rules
)”选项卡显示您现有的警报规则,以及它们的当前状态、项目、团队和创建日期。默认情况下,该列表经过筛选,以便仅显示与您所属的团队以及与任何团队无关的警报。您可以使用过滤器按钮更改此设置。
警报(Alerts)
页面还显示一个 “历史(History)”
选项卡,您可以在其中找到指标警报列表,其中包含触发时间和活动时间等信息。
只要项目中的任何问题符合指定标准,就会触发 Issue
警报。您可以为 Issue
级别的更改创建警报,例如:
Issue
Issue
频率增加Issue
变成未解决(unresolved
)您可以在 issue
警报配置中找到 Issue
警报触发器的完整列表。
当 error
或 transaction
事件违反了指标时,指标警报就会触发。使用指标警报来监控您关心的一组有限且已知的指标和组件,例如整个项目中、重要页面上或具有特定标签的错误频率或性能指标。
创建警报以监控指标,例如:
Total errors
)Latency
):最小值(min
)、最大值(max
)、平均值(average
)、百分位数(percentile
)Failure rate
)您可以在指标警报中找到可用指标警报的完整列表。
在 sentry.io
中创建新项目时,您可以选择默认的 issue
警报。但是,您也可以使用这些最佳实践作为指南,创建自己的警报以满足团队的需求。
除了警报之外,Sentry 还会向您发送有关各种事项的通知,例如 issue
状态更改、发布部署和配额使用情况。您可以在用户设置 > 通知(User Settings > Notifications)
中微调这些通知以及您的个人警报设置。在完整文档中了解有关通知和调整其关联设置的更多信息。
您可以创建两种类型的警报:
issue
(一组错误事件)符合特定条件时触发。error
或 transaction
事件的宏观指标超过特定阈值时触发。只要项目中的任何 issue
符合指定标准,就会触发 Issue
警报。例如,这些标准可能是重新出现的已解决 issue
或影响许多用户的 issue
。
在“警报规则(Alert Rules)”
选项卡中,这些警报由 issues
图标标识,默认情况下,它们显示在警报列表的底部。(如果您有多个指标警报,这可能会将您的 issue
警报从列表的第一页推出。)
在问题警报中,Sentry
每次收到新事件时都会评估配置的警报条件。警报条件包括三个部分:
Triggers
)指定您想要监控的活动类型,或何时(When
)应触发警报。Filters
)通过仅在 issue
符合指定标准时触发警报来帮助控制 issue
噪音。Actions
指定当满足触发条件并且过滤器匹配时应该发生什么。指标警报会告诉您指标何时超过阈值,例如项目中错误数量的激增,或性能指标的变化,例如延迟(latency
)、Apdex、故障率(failure rate
)或吞吐量(throughput
)。
指标警报监控 error
和 transaction
事件的宏观指标。指标获取一组事件并使用函数(例如 count()
或 avg()
)计算一段时间内应用于事件属性的聚合值。创建指标警报时,您可以按属性(attributes
)和标签(tags
)过滤事件,这对于聚合未分组为单个 issue
的事件特别有用。
这些警报使用 Critical
和 Warning
触发器来衡量严重性。警报的当前状态是处于活动状态的最高严重性触发器(highest severity trigger)
,可以是以下三个值之一:警告(Warning)
、严重(Critical)
或已解决(Resolved)
。每当警报的状态发生变化时,Sentry
都会通知您。
创建警报时,所有显示的警报类型(“Issues”
除外)均可用于创建指标警报:
警报详细信息(Alert Details
)页面默认显示过去 24
小时的指标警报规则的历史记录,但可以使用“显示(Display)”
下拉菜单修改时间段。触发警报时,单击您收到的通知会将您带到此页面,该页面显示警报处于活动状态的时间段。该页面还包括详细信息,例如警报规则条件、警报的当前状态以及警报在每种状态(Critical
、``Warning或
Resolved`)中花费的时间摘要。
警报详细信息(Alert Details)
页面还包括与指标相关的可疑 issue
或 transaction
的列表,以帮助更快地查明根本问题。您可以查看可能导致触发警报的原因,然后在 Discover
中打开该指标以查找更多信息。
创建警报所需的最低角色是
member
。具有manager
或owner
权限的Sentry
用户可以在设置 > 常规设置 > 让成员创建和编辑警报(Settings > General Settings > Let Members Create and Edit Alerts)
中更改最低角色要求。
要创建警报:
警报(Alerts)
并单击 “Create Alert Rule”
。“Issues”
会创建 issue
警报,而选择任何其他选项会创建 metric
警报。 “设置条件(Set Conditions)”
。Sentry 提供了多个配置选项来根据您组织的需要创建 issue
警报。
指定哪些环境(environment
)将使用此特定警报规则。此控件过滤事件中的环境标签。例如,此过滤器很有用,因为您应用于生产警报的紧迫性和工作流程可能不同于您应用于源自 QA
环境的警报的紧急程度和工作流程。
此处的 “Environment”
下拉列表具有与全局 “Environment”
下拉列表中所选项目可用的相同环境(不包括隐藏环境)。选择 “All Environments”
相当于没有环境过滤器。
您可以选择要与警报关联的团队,以便该团队的成员可以编辑警报。请注意,只有当您是团队成员时才能进行此关联。如果未选择任何团队,则任何人都可以编辑警报。
为您的警报指定一个描述性名称,例如受影响的团队和警报的主题。例如,“前端延迟(Frontend Latency
)”、“后端故障率(Backend Failure Rate
)”或“计费 Apdex(Billing Apdex
)”。
“When”
条件或触发器指定您希望针对该 issue
监控哪种类型的活动:
resolved
)更改为未解决(unresolved
)ignored
)更改为未解决(unresolved
)issue
在 {time}
内影响了超过 {X}%
的会话issue
频率与项目中会话数的比率50
时才会触发基于百分比的警报触发器(Triggers
)是可选的。如果不选择触发器,则默认认为满足 “When”
条件。也就是说,所有的事件都满足这个条件。
在 Issue States & Triage
中了解有关 issue
状态的更多信息。
Sentry
在满足 “When”
条件后检查 “if conditions”
或过滤器,这些通过过滤掉不符合您指定标准的问题来帮助控制 noise
。您可以过滤issue
或事件属性。如果指定了事件过滤器,它只会检查触发警报的事件,例如:
issue
比特定持续时间更旧或新。issue
至少发生了 {X}
次。issue
已分配给{no one/a team/a member
}。release
。{attribute} {matches} {value}
。匹配类型:等于(equals
)、不等于(does not equal
)、开始于(starts with
)、结束于(ends with
)、包含(contains
)、不包含(does not contain
)、已设置(is set
)或未设置(is not set
)。{tag} {matches} {value}
。匹配类型:等于(equals
)、不等于(does not equal
)、开始于(starts with
)、结束于(ends with
)、包含(contains
)、不包含(does not contain
)、已设置(is set
)或未设置(is not set
)。{matches} {level}
。匹配类型:等于(equal to
)、小于(less than
)或等于(equal to
)、或大于(greater than
)或等于(equal to
)。了解更多关于标签(tags
)和事件属性(event attributes
)的信息。
“Then conditions”或动作,指定满足触发器和过滤条件时应该发生的事情:
Issue Owners
)、团队(a team
)或成员(a member
)发送通知。Slack
通知PagerDuty
通知Microsoft Teams
通知issue
,其中包括:了解有关通过集成路由警报的更多信息。
Issue 所有者可以在触发警报时收到通知(仅限电子邮件)。
对于早期采用者,这些通知是通过电子邮件或 Slack 接收的,具体取决于问题所有者的通知设置。
如果未配置或未找到 issue
所有者,则不会发送通知或将其发送给所有项目成员,具体取决于 [项目]>设置>问题所有者([Project]>Settings>Issue Owners)
中的以下设置。
团队可以配置 Slack channel
来接收警报通知。这可以通过在所需的 Slack channel
中键入 /sentry link team
来完成。要在 sentry.io
中查看团队关联的 Slack 频道,请导航到 设置>团队>[团队]>通知(Settings>Teams>[Team]>Notifications)
。
动作间隔(action interval
)或速率限制(rate limit
)控制针对特定问题触发警报规则的频率。如果警报条件与问题匹配,Sentry 只执行在速率限制期限内尚未针对该问题执行的动作。例如,如果一个问题在一分钟的时间内多次满足警报条件,但是您的频率阈值是一分钟,那么您只会收到一次警报。
可用的间隔是:
5
, 10
, 30
, 60
3
, 12
, 24
7
, 30
在 [项目] > 设置 > 警报([Project] > Settings > Alerts)
中,您可以配置警报电子邮件主题模板和摘要设置。拥有 owner
、manager
或管理员权限(admin permissions
)及以上权限的 Sentry
用户可以更改这些默认通知设置。
摘要功能仅适用于 issue
警报电子邮件(不是通过集成发送的通知),并且与动作间隔(action interval)
不同,它限制为项目发送的警报电子邮件总数。此项目级设置允许您控制警报的最小和最大交付间隔。
Sentry 提供了多个配置选项来根据您组织的需要创建指标警报。
以下过滤器组转换为 Discover 查询,显示在警报配置页面顶部的图表中。
指定哪些环境将使用此特定警报规则。此控件过滤事件中的 environment
标签。例如,此过滤器很有用,因为您应用于生产警报的紧迫性和工作流程可能不同于您应用于源自 QA
环境的警报的紧急程度和工作流程。
此处的 “Env:”
下拉列表与全局 “Environment”
下拉列表中所选项目的可用环境相同(不包括隐藏环境)。选择 “全部(All)”
相当于没有环境过滤器。
对于某些指标警报,您可以在“事件(Events)”
下拉列表中设置要收到警报的事件类型:
event.type:error
OR event.type:default
event.type:default
event.type:error
event.type:transaction
在提供的字段中添加过滤器以缩小您将收到警报的范围,例如 URL、标签或其他事件属性。
根据您选择的警报类型,您可以选择要应用的函数和参数。在其他情况下,该功能内置于警报中,并且不显示设置。例如,如果您选择“受影响的用户数(Number of Users Affected)”
,则转换为函数 count_unique(user.id)
。由于编辑此函数会改变警报的性质,因此它不可编辑,因此被隐藏。
count()
count_unique(...)
avg(...)
percentile(...)
failure_rate()
apdex(...)
count()
p50()
p75()
p95()
p99()
p100()
选择评估指标的时间段。您的选择范围从一分钟到一天。 Sentry
每分钟评估指定的窗口。例如,如果您指定一个小时时间窗口,Sentry
会评估:
阈值是帮助定义警报触发器的数值。这些数值被标记为:
您必须设置 “Warning”
阈值,使其在 “Critical”
阈值之前触发。当 Sentry
评估警报时,警报的状态会更新为匹配的最高严重性触发器。如果您未设置 “Resolved”
阈值,警报将在不再违反 “Critical”
或 “Warning”
条件时自动解决。您还可以手动解决警报。
默认情况下,当指定的指标不再违反 “Critical”
或 “Warning”
条件时,会自动解决指标警报。但是,您可以设置不同的分辨率阈值。例如,假设您的应用程序的正常错误级别低于 2000/分钟
,并且您希望在超过 5000/分钟
时收到警报。您可能希望警报仅在错误级别回到 2000/分钟
以下时 resolve
,而不是 5000/分钟
。通过以这种方式设置 “Resolved”
阈值,如果错误级别回落到仅 4000/分钟
,即使它低于警报阈值,您也会认为这是有问题的,警报将不会 resolve
。
动作定义了您和您的团队将如何收到警报:
member
)或团队(team
)发送电子邮件。如果发送给成员(team
),则成员(team
)的个人项目警报选择退出设置(opt-out settings
)将被覆盖。Slack
通知PagerDuty
通知Microsoft Teams
通知了解有关通过集成路由警报的更多信息。
为您的警报指定一个描述性名称,例如受影响的团队和警报的主题。例如,“前端延迟(Frontend Latency)”
、“后端故障率(Backend Failure Rate)”
或“计费 Apdex(Billing Apdex)”
。
您可以选择要与警报关联的团队,以便该团队的成员可以编辑此警报。请注意,只有当您是团队成员时才能进行此关联。如果未选择任何团队,则任何人都可以编辑警报。
通过定制警报规则并集成您已经使用的工具,您可以在需要的时候when
、地点where
(以及是否if
)收到警报,而不会受到干扰。警报通知可以路由到 Slack
,多个支持的集成,以及通过 webhooks
定制集成。在创建警报规则时,您可以使用这些集成来配置通知谁以及如何通知。
Sentry
的集成为您提供了通过 Slack
、PagerDuty
和 Microsoft Teams
等常用应用程序路由警报的选项。您可以在 设置 > 集成(Settings > Integrations) 中找到这些集成,并为整个组织安装它们。
Sentry
组织 owner
或 manager
可以在其 Sentry
帐户中安装和配置 Slack
集成。配置集成后,issue
警报规则中将提供以下动作:向 {workspace} Slack
工作区发送通知至 {channel}
并在通知中显示标签 {tags}
。在指标警报中,您的 Slack
团队将在 action
下拉列表之一中可用。
此 alert action
允许您将警报通知路由到 Slack
工作区中的选定频道(使用 #
前缀)或直接消息中的特定用户(使用 @
前缀)。
然后,一旦您收到 Slack
通知,您可以使用 “Resolve”
、“Ignore”
或 “Assign”
按钮直接从 Slack
更新 sentry.io
中的问题。
Sentry
组织 owner
或 manager
可以在其 Sentry
帐户中安装和配置 PagerDuty
集成。配置集成后,issue
警报规则中将提供以下动作:向 PagerDuty
帐户 {account}
和服务 {service}
发送通知。在指标警报中,您的 PagerDuty
帐户将在 action
下拉列表之一中可用。
Sentry
组织 owner
或 manager
可以在其 Sentry
帐户中安装和配置 Microsoft Teams
。配置集成后,issue
警报规则中将提供以下动作:向 {team}
团队发送通知至 {channel(s)}
。在指标警报中,您的 Microsoft
团队将在 action
下拉列表之一中可用。
如果您想将警报通知路由到 Sentry
没有开箱即用集成的其他解决方案,您可以使用 Integration Platform
。集成平台为外部服务提供了一种使用 REST API
和 Webhook
与 Sentry SaaS
服务交互的方法。
如果您想从不同的监控系统汇总警报或编写自定义规则以更智能地路由警报,则向 webhook
发送警报也很有帮助。
当您创建新的集成并在其上启用“Alert Rule Action”
选项时,当您选择在 issue
警报规则创建期间通过集成 action
发送通知时,您的集成将显示为服务。在指标警报中,您的集成在 action
下拉列表之一中可用。
遗留集成(也称为插件)是 Sentry
的扩展,打包为 Python
库,并在项目级进行配置。要向遗留集成发送警报,请选择 “Send a notification via an integration”
或 “Send a notification to all legacy integrations”
动作。您不能将指标警报路由到遗留集成。
警报在正确的时间通知正确的人非常重要。向太多人发送太多通知可能会导致这些通知被忽略。以下最佳实践将帮助您创建或微调警报以最大程度地减少警报噪音,同时仍会告诉您需要了解的内容。
频率(Frequency) :通常,您会设置警报以在错误超过特定频率时触发,但频率并不是一切:如果低频错误位于应用程序的更重要部分,则它可能比高频错误更重要。
受影响的用户(Users affected):有时极少数用户会产生大量错误,因此提醒受影响的用户可能比错误频率更重要。然而,并非所有在 Sentry
中有用户计数的错误实际上都可能是面向用户的,反之亦然。如果您过滤这些类型的问题,您就可以避免收到非用户面临的错误的警报。
标签(Tags):使用标签对错误进行分类。例如,您可以过滤自动捕获的 url
标签以识别关键业务页面,或过滤自定义标签(如 customer_type
)以更重要地处理这些警报。您可以在 [项目] > 设置 > 标签([Project] > Settings > Tags) 下找到项目中可用的标签列表。该列表是该项目事件中遇到的所有标签 key
(默认和自定义)的聚合。
这些最佳实践可帮助您减少 issue 警报可能产生的噪音,但不适用于指标警报。
看到相同的警报(Seeing the same alerts
):如果您反复看到以前看过的警报,请尝试将您的 issue
警报过滤为过去几天创建的问题,使用 The issue is older or newer than...
过滤器。
瞬态警报(Transient alerts
):要过滤掉仅快速连续发生几次且不再发生的 transient issues
,请在您的 issue
警报中使用 Issue has happened at least {X} times
过滤器。
限制为最新版本(Limit to latest release
):使用 The event is from the latest release
过滤器将您的 issue
警报仅应用于最新版本。
使用“For Review”列表(Use the “For Review” list
):新 issue
和未解决的 issue
通常是您想知道的,但它们会产生很多噪音。Sentry
问题列表中的 “For Review”
选项卡会显示这些问题,因此您可以使用电子邮件和集成来发出更高紧急性的警报,同时确保这些低紧急性问题不会被忽视。我们建议每天查看一次 “For Review”
列表。此列表显示:
issue
从 “Resolved”->“Unresolved”
更改状态)issue
(issue
状态从 Ignored
-> Unresolved
)您可以忽略 issue
以减少噪音,但是,当满足警报条件时,忽略的问题不会触发警报;它们反而变成 unresolved
并出现在“For Review”
列表中。因此,如果您担心遗漏这些问题,请使用 An issue changes state from ignore to unresolved
触发器创建问题警报。
问题所有者(Issue owners
) :使用 issue owners
让 Sentry 自动向合适的人发送警报,并减轻配置负担。您可以在 [项目] > 设置 > 问题所有者( [Project] > Settings > Issue Owners)
中配置所有权规则。当没有匹配的所有者时,警报默认发送给所有项目成员。如果这太宽泛,并且您希望特定所有者作为后备,请以 *:<owner>
之类的规则结束您的所有权规则。
不同优先级的发送方式(Delivery methods for different priorities
) :使用不同的发送方式来区分不同优先级的告警。例如,您可以像这样从最高优先级路由到最低优先级:
PagerDuty
或 OpsGenie
)Slack
)Email
问题列表中的 “For Review”
选项卡是您可以在不接收任何警报的情况下检查优先级最低的问题的位置。
构建集成:如果您想将警报通知路由到 Sentry
还没有开箱即用集成的解决方案,您可以使用 Integration Platform
。创建集成时,它将在 alert actions
菜单中可用。您可能希望将自己的集成用于:
webhook
处理程序中编写自定义规则以更智能地路由警报Sentry 向您发送有关工作流活动、发布部署和配额使用情况的通知,以及每周报告。这些通知让您了解:
Workflow
):涉及用户操作和 issue
状态更改的活动。这包括 issue
解决、分配、评论和回归等活动。Deploy
):当您提交的版本被部署时。Quota
):接近配额、超出配额和尖峰保护。Weekly Reports
):您组织的 Sentry
活动摘要。您可以在 用户设置 > 通知(User Settings > Notifications)
中管理这些通知。
Sentry
发送工作流通知,让您了解 issue
状态更改。工作流与帮助您管理问题的动作相关,例如更改 issue
的状态或对其发表评论。默认情况下,Sentry
通过电子邮件将这些通知发送给订阅该问题的成员(有关如何确定订阅,请参见下文)。发送工作流通知:
issue
时,它处于 Unresolved
状态。当项目团队成员通过在 sentry.io
中手动更改其状态或提交修复程序或由于项目的自动解决功能(如果已配置)解决 issue
时,issue
状态将更改为已解决。issue
的状态从 “Resolved”
变回 “Unresolved”
时,就会发生回归。将向所有项目团队成员发送一封电子邮件。issue
详细信息页面的 “Activity”
选项卡中添加新评论时。issue
有新的用户反馈时。Sentry
的错误事件处理出现问题时。当您订阅 issue
时,您会收到工作流通知,并且您通过以下方式订阅问题:
issue
上的订阅铃铛(subscribe bell
)图标issue
相关的提交issue
发表评论或添加书签issue
中提及您或您的团队issue
这些通知可能与为项目配置的警报有一些重叠。
Sentry
向已提交已部署版本的用户发送部署通知。在部署文档中了解更多信息。
在以下情况下,Sentry
会向组织的所有所有者发送配额通知:
您无法更改或禁用这些通知。在完整的配额文档中了解更多信息。
Sentry
每周一通过电子邮件发送每周报告。报告包含您组织在上周的 Sentry
活动摘要。
您可以在您的帐户设置中调整您的个人工作流程并部署通知以及您的个人 issue
警报设置。通过导航到 用户设置 > 通知(User Settings > Notifications) 来管理您的通知。您无法配置配额通知。
此设置不会影响配置为明确发送到您的电子邮件的警报。
在通知中,您可以全局打开和关闭 issue
警报通知。
您还可以通过选择 “Default”
、“On”
或 “Off”
来对每个项目的警报通知进行微调。如果您选择 “Default”
,项目的设置将与您的全局设置相同。
您可以通过从以下选项中进行选择来决定在何处接收个人警报通知:
Email
Slack
Email
和 Slack
如果您的组织安装了 integration
并且您的 Slack
身份已链接到您的 Sentry
帐户,则 Slack
仅可用作交付方式。
工作流通知的全局设置是:
您可以通过选择以上三个选项之一或 “Default”
来针对每个项目微调您的工作流程通知。如果您选择 “Default”
,项目的设置将与您的全局设置相同。
您可以通过从以下选项中进行选择来决定在何处接收个人工作流通知:
Email
Slack
Email
和 Slack
如果您的组织安装了集成并且您的 Slack 身份已链接到您的 Sentry 帐户,则 Slack 仅可用作交付方式。
要退出特定问题的工作流通知,请单击问题页面顶部的订阅铃铛图标。
电子邮件路由控制每个项目的通知发送到的电子邮件地址。这些通知默认为您在设置 Sentry 帐户时提供的电子邮件地址。此设置允许您基于每个项目将电子邮件路由到备用电子邮件地址。
报告包含您组织在上周的 Sentry
活动摘要。您可以通过为每个组织打开或关闭报告来微调您的每周报告。
部署通知的全局设置是:
On
Only On Deploys With My Commits
(仅在我提交的部署上)Off
您可以通过选择上述三个选项之一或 “Default”
来对每个组织的部署通知进行微调。如果您选择 “Default”
,组织的设置将与您的全局设置相同。
您可以通过从以下选项中进行选择来决定在何处接收个人工作流通知:
Email
Slack
Email
和 Slack
如果您的组织安装了集成并且您的 Slack 身份已链接到您的 Sentry 帐户,则 Slack 仅可用作交付方式。
使用切换开关来控制您是否收到有关以下内容的通知:
sentry.io
时的动作issue
的任何更改