创建自定义阈值规则
编辑创建自定义阈值规则编辑
创建自定义阈值规则,以便在可观测性数据类型达到或超过给定值时触发警报。
- 要访问此页面,请转到 可观测性 → 警报。
- 点击 管理规则 → 创建规则。
- 在 选择规则类型 下,选择 自定义阈值。
定义规则数据编辑
指定以下设置以定义规则应用到的数据
- 选择数据视图: 点击数据视图字段以搜索并选择一个数据视图,该视图指向您要为其创建规则的索引或数据流。您也可以通过点击 创建数据视图 来创建新数据视图。有关创建数据视图的更多信息,请参阅 创建数据视图。
-
定义查询过滤器(可选): 使用查询过滤器缩小规则应用到的数据范围。例如,使用查询过滤器
host.name:host-1
将查询过滤器设置为特定的主机名,以仅将规则应用于该主机。
设置规则条件编辑
使用聚合、公式和阈值设置规则要检测的条件。
设置聚合编辑
聚合对数据进行汇总,以便于分析。设置以下任何聚合类型以收集数据来创建规则:平均值
、最大值
、最小值
、基数
、计数
、总和
、百分位数
或 速率
。有关这些选项的更多信息,请参阅 聚合选项。
例如,要收集日志级别为 warn
的日志文档总数
- 将 聚合 设置为 文档计数,并将 KQL 过滤器 设置为
log.level: "warn"
。 - 将阈值设置为
高于 100
,以便在日志级别为warn
的日志文档数量达到 100 时触发警报。
设置公式和阈值编辑
使用您的聚合设置公式。根据公式的结果,设置阈值以定义何时触发警报。公式使用基本数学或布尔逻辑。有关可能的用例,请参阅以下示例。
基本数学公式编辑
对您的聚合进行加、减、乘或除运算,以定义警报条件。
示例
设置公式和阈值,以便在指标高于阈值时触发警报。在本例中,我们将使用平均 CPU 使用率(CPU 时间花费在 idle
或 IOWait
以外的状态的百分比,并根据 CPU 核心数进行标准化),并在 CPU 使用率高于特定百分比时触发警报。为此,请设置以下聚合、公式和阈值
-
设置以下聚合
-
聚合 A:
system.cpu.user.pct
的平均值 -
聚合 B:
system.cpu.system.pct
的平均值 -
聚合 C:
system.cpu.cores
的最大值。
-
聚合 A:
- 将公式设置为
(A + B) / C * 100
- 将阈值设置为
高于 95
,以便在 CPU 使用率高于 95% 时发出警报。
布尔逻辑编辑
将条件运算符和比较运算符与您的聚合一起使用,以定义警报条件。
示例
设置公式和阈值,以便在有状态 Pod 的数量与所需 Pod 的数量不同时触发警报。在本例中,我们将使用 kubernetes.statefulset.ready
和 kubernetes.statefulset.desired
,并在它们的值不同时触发警报。为此,请设置以下聚合、公式和阈值
-
设置以下聚合
-
聚合 A:
kubernetes.statefulset.ready
的总和 -
聚合 B:
kubernetes.statefulset.desired
的总和
-
聚合 A:
- 将公式设置为
A == B ? 1 : 0
。如果 A 和 B 相等,则结果为1
。如果它们不相等,则结果为0
。 - 将阈值设置为
低于 1
,以便在结果为0
且字段值不匹配时触发警报。
预览图表编辑
预览图表提供了一个可视化视图,显示有多少条目与您的配置相匹配。阴影区域显示您设置的阈值。
按以下项分组警报(可选)编辑
为自定义阈值规则设置一个或多个 按以下项分组警报 字段,以针对所选字段执行复合聚合。当这些组中的任何一个与所选规则条件匹配时,将按组触发警报。
当您选择多个分组时,组名用逗号分隔。
例如,如果您按 host.name
和 host.architecture
字段对警报进行分组,并且有两个主机(主机 A
和 主机 B
)和两种体系结构(体系结构 A
和 体系结构 B
),则复合聚合将形成多个组。
如果 主机 A,体系结构 A
组与规则条件匹配,但 主机 B,体系结构 B
组不匹配,则会为 主机 A,体系结构 A
触发一个警报。
如果您选择一个字段(例如,host.name
),并且 主机 A
与条件匹配,但 主机 B
不匹配,则会为 主机 A
触发一个警报。如果两个组都与条件匹配,则会为两个组触发警报。
当您选择 如果组停止报告数据,请向我发出警报 时,如果先前报告指标的组在预期时间段内不再报告指标,则会触发规则。
选择角色可见性编辑
您必须选择一个范围值(日志
或 指标
),这会影响访问规则所需的 Kibana 功能权限。例如,当它设置为 日志
时,您必须具有相应的 可观测性 > 日志 功能权限才能查看或编辑规则。
操作类型编辑
通过将规则连接到使用以下受支持的内置集成的操作来扩展您的规则。
某些连接器类型是付费商业功能,而其他则是免费的。有关 Elastic 订阅级别的比较,请访问 订阅页面。
选择连接器后,您必须设置操作频率。您可以选择在每个检查间隔或自定义间隔上创建警报摘要。或者,您可以设置操作频率,以便选择操作运行的频率(例如,在每个检查间隔、仅当警报状态更改时或在自定义操作间隔)。在这种情况下,您还必须选择影响操作何时运行的特定阈值条件:警报
、无数据
或 已恢复
。
您还可以通过指定操作仅在与 KQL 查询匹配或在特定时间范围内发生警报时才运行,来进一步优化操作运行的条件
- 如果警报与查询匹配:输入一个 KQL 查询,该查询定义字段值对或必须满足的查询条件才能发送通知。该查询仅搜索为规则指定的索引中的警报文档。
- 如果警报是在时间范围内生成的:设置时间范围详细信息。仅当在您定义的时间范围内生成警报时,才会发送通知。
操作变量编辑
使用默认通知消息或自定义它。您可以通过点击消息文本框上方的图标并从可用变量列表中进行选择,来为消息添加更多上下文。
以下变量特定于此规则类型。您还可以指定 所有规则共有的变量。
-
context.alertDetailsUrl
- 指向警报故障排除视图的链接,以获取更多上下文和详细信息。如果未配置
server.publicBaseUrl
,则此项为空字符串。 -
context.cloud
- 如果源中提供了 ECS 定义的云对象。
-
context.container
- 如果源中提供了 ECS 定义的容器对象。
-
context.group
- 包含报告数据的组的对象。
-
context.host
- 如果源中提供了 ECS 定义的主机对象。
-
context.labels
- 与此警报触发的实体关联的标签列表。
-
context.orchestrator
- 如果源中提供了 ECS 定义的编排器对象。
-
context.reason
- 有关警报原因的简要说明。
-
context.tags
- 与此警报触发的实体关联的标签列表。
-
context.timestamp
- 检测到警报的时间戳。
-
context.value
- 条件值列表。
-
context.viewInAppUrl
- 指向警报来源的链接。