创建指标阈值规则
基于基础设施应用中**指标浏览器**页面上列出的指标,您可以创建一个阈值规则,以便在特定时间段内指标达到或超过某个值时通知您。
此外,可以使用组合指标和阈值的多个条件来定义每个规则,以创建精确的通知。
当您在**指标浏览器**页面上创建此规则时,该规则会自动填充与该页面相同的参数。如果您选择了**每个图表**值,则您的规则已预先配置为监视和通知页面上显示的每个单独的图表。
您还可以基于单个图表创建规则。在**指标浏览器**页面上,单击**警报和规则** → **创建警报**。阈值规则的条件和筛选器部分会自动填充。
每个规则的条件都可以应用于您选择的特定指标。您可以选择聚合类型(请参阅聚合选项),指标,并且通过包含警告阈值,您可以根据严重性评分收到多个阈值的警报。为了帮助您确定哪些阈值对您有意义,预览图表提供了可视化。
在此示例中,条件说明,如果主机的 CPU 使用率达到或超过 120%,您将收到严重警报;如果 CPU 使用率达到或超过 100%,您将收到警告警报。请注意,只有当内存使用率达到或超过 20% 时,您才会收到警报,如第二个条件所示。

当您选择**如果没有数据则提醒我**时,如果指标在预期的时间段内未报告任何数据,或者如果规则无法查询 Elasticsearch,则会触发该规则。

**筛选器**控制规则的范围。如果使用,该规则将仅评估与此字段中的查询匹配的指标数据。在此示例中,该规则仅会针对来自名为 us-east
的云区域报告的指标发出警报。
**按以下字段对警报进行分组**为添加的每个 field
的唯一值创建一个警报实例。例如,您可以为主机或每个主机的每个挂载点创建一个规则。您还可以添加多个字段。在此示例中,该规则将单独跟踪您的基础设施中每个 host.name
的状态。只有当 host.name: host-1
通过阈值时,您才会收到关于 host-1
的警报,但 host-2
和 host-3
不会。
当您选择**如果某个组停止报告数据则提醒我**时,如果先前报告过指标的组在预期的时间段内没有再次报告指标,则会触发该规则。
如果您在**筛选器**和**分组依据**中包含相同的字段,则您收到的结果可能比预期的少。例如,如果您按 cloud.region: us-east
进行过滤,则按 cloud.region
分组将不起作用,因为筛选器查询只能匹配一个区域。
在**高级选项**中,您可以更改在发生警报之前必须满足规则条件的连续运行次数。默认值为 1
。
通过将规则连接到使用以下支持的内置集成的操作来扩展规则。
- D3 Security
- 电子邮件
- IBM Resilient
- 索引
- Jira
- Microsoft Teams
- 可观测性 AI 助手连接器
- Opsgenie
- PagerDuty
- 服务器日志
- ServiceNow ITOM
- ServiceNow ITSM
- ServiceNow SecOps
- Slack
- Swimlane
- Torq
- Webhook
- xMatters
某些连接器类型是付费商业功能,而另一些则是免费的。有关 Elastic 订阅级别的比较,请转到订阅页面。
选择连接器后,必须设置操作频率。您可以选择在每个检查间隔或自定义间隔创建警报摘要。例如,每小时发送电子邮件通知,其中总结了新的、正在进行的和已恢复的警报

或者,您可以设置操作频率,以便选择操作的运行频率(例如,在每个检查间隔、仅在警报状态更改时或在自定义操作间隔)。在这种情况下,您还必须选择影响操作运行时间的特定阈值条件:Alert
、Warning
、No data
或 Recovered
(曾经高于阈值的值现在已降至阈值以下)。

您还可以通过指定操作仅在它们与 KQL 查询匹配或警报发生在特定的时间范围内运行时才运行,来进一步优化操作运行的条件
- **如果警报与查询匹配**:输入一个 KQL 查询,该查询定义了必须满足才能发送通知的字段-值对或查询条件。该查询仅搜索规则指定的索引中的警报文档。
- **如果在时间范围内生成警报**:设置时间范围详细信息。仅当在您定义的时间范围内生成警报时,才会发送通知。

使用默认通知消息或自定义它。您可以单击消息文本框上方的图标,然后从可用变量列表中进行选择,从而向消息添加更多上下文。

以下变量是此规则类型特有的。您还可以指定所有规则通用的变量。
context.alertDetailsUrl
- 指向警报故障排除视图的链接,以获取更多上下文和详细信息。如果未配置
server.publicBaseUrl
,则这将是一个空字符串。 context.alertState
- 警报的当前状态。
context.cloud
- 如果源中可用,则由 ECS 定义的云对象。
context.container
- 如果源中可用,则由 ECS 定义的容器对象。
context.group
- 报告数据的组的名称。要访问每个组键,请使用
context.groupByKeys
。 context.groupByKeys
- 包含报告数据的组的对象。
context.host
- 如果源中可用,则由 ECS 定义的主机对象。
context.labels
- 与此警报触发的实体关联的标签列表。
context.metric
- 指定条件中的指标名称。用法:(
ctx.metric.condition0
、ctx.metric.condition1
等)。 context.orchestrator
- 如果源中可用,则由 ECS 定义的 orchestrator 对象。
context.originalAlertState
- 警报恢复之前的状态。这仅在恢复上下文中可用。
context.originalAlertStateWasALERT
- 警报恢复之前的状态的布尔值。这可用于模板条件。这仅在恢复上下文中可用。
context.originalAlertStateWasNO_DATA
- 警报恢复之前的状态的布尔值。这可用于模板条件。这仅在恢复上下文中可用。
context.originalAlertStateWasWARNING
- 警报恢复之前的状态的布尔值。这可用于模板条件。这仅在恢复上下文中可用。
context.reason
- 警报原因的简明描述。
context.tags
- 与此警报触发的实体关联的标记列表。
context.threshold
- 指定条件的指标的阈值。用法:(
ctx.threshold.condition0
、ctx.threshold.condition1
等) context.timestamp
- 检测到警报的时间戳。
context.value
- 指定条件下指标的值。 用法:(
ctx.value.condition0
,ctx.value.condition1
, 等等) context.viewInAppUrl
- 指向告警源的链接。
对于指标阈值规则,无法将显式索引模式设置为配置的一部分。 索引模式是从基础设施应用的设置页面上的指标索引推断出来的。
每次执行规则检查时,都会检查指标索引设置,但在创建规则时不会存储该设置。
在设置下设置的时间戳字段决定了查询中使用哪个字段作为时间戳。