创建异常检测规则
创建异常检测规则需要 Editor(编辑)或更高权限。要了解更多信息,请参考 分配用户角色和权限。
异常检测警报功能处于 Beta 测试阶段
异常检测警报功能目前处于 Beta 测试阶段,可能会发生更改。其设计和代码不如官方正式发布的功能成熟,按“原样”提供,不提供任何担保。
创建异常检测规则以检查一个或多个异常检测作业中的异常。如果满足规则的条件,则会创建一个警报,并触发规则中指定的任何操作。例如,您可以创建一个规则,每十五分钟检查一次严重异常,并在检测到时通过电子邮件向您发送警报。
要创建异常检测规则
在您的 Elastic Observability Serverless 项目中,转到 Machine learning → Jobs。
在异常检测作业列表中,找到您要检查异常的作业。尚未创建作业?立即创建一个。
从作业旁边的 Actions 菜单中,选择 Create alert rule。
为规则指定名称和可选标签。您以后可以使用这些标签来筛选警报。
验证是否选择了正确的作业,或者选择一个新的作业。
选择机器学习结果类型
选择… 根据以下内容生成警报… 桶聚合 (Bucket) 时间桶内异常的不寻常程度 记录 时间范围内存在哪些单个异常 影响因素 时间范围内最不寻常的实体 调整 Severity(严重程度)以匹配将触发操作的异常分数。异常分数表示给定异常与先前异常相比的重要性。默认严重程度阈值为 75,这意味着异常分数大于或等于 75 的每个异常都将触发关联的操作。
(可选)要缩小规则查找的异常列表范围,请添加 Anomaly filter(异常筛选器)。此功能使用 KQL,且仅适用于记录(Record)和影响因素(Influencer)结果类型。 在 Anomaly filter 字段中,输入指定要发出警报的字段或条件的 KQL 查询。您可以设置以下条件
- 异常结果中的一个或多个分区字段或影响因素字段符合指定的条件
- 异常中的实际分数或典型分数符合指定的条件
例如,假设您为带有检测器
partition_field = "response.keyword"的异常检测作业设置了警报。如果您只对response.keyword = 404的警报感兴趣,请在 Anomaly filter 字段中输入partition_field_value: "404"。当规则运行时,它只会对具有partition_field_value: "404"的异常发出警报。注意当您编辑 KQL 查询时,会出现建议的筛选字段。要比较任意字段的实际值和典型值,请使用诸如
>(大于)、<(小于)或=(等于)之类的运算符。(可选)开启 Include interim results(包含临时结果)以包含在桶定稿之前由异常检测作业创建的结果。这些结果可能在桶完全处理完后消失。包含临时结果可以更早地收到潜在异常的通知,即使它们可能是误报。如果您只想接收完全处理完的桶的异常通知,请不要包含临时结果。
(可选)展开并更改 Advanced settings(高级设置)
设置 描述 回溯间隔 在每次条件检查期间用于查询先前异常的时间间隔。将回溯间隔设置得低于默认值可能会导致漏掉异常。 最新桶数 要检查的桶数,以便从回溯间隔期间找到的所有异常中获取最高的异常。将基于最具异常的桶中具有最高异常分数的异常来创建警报。 (可选)在 Check the rule condition with an interval 下,指定一个时间间隔,然后单击 Test 以使用指定的时间间隔检查规则条件。如果数据流未启动,该按钮将呈灰色不可用。要测试规则,请启动数据流。
(可选)如果您想更改条件评估的频率,请调整 Check every 设置。
(可选)设置操作。
保存您的规则。
异常检测规则作为作业的一部分进行定义。由这些规则生成的警报不会显示在 Alerts 页面上。
您可以使用与第三方系统交互、写入日志或索引或发送用户通知的操作来扩展您的规则。您可以随时向规则添加操作。您可以在不添加操作的情况下创建规则,也可以为单个规则定义多个操作。
要向规则添加操作,您必须首先为该服务(例如电子邮件或外部事件管理系统)创建一个连接器,然后您可以将其用于不同的规则,每个规则都可以有其自己的操作频率。
连接器类型
连接器为存储服务连接信息以及与第三方系统集成提供了一个中心位置。在为警报规则定义操作时,可以使用以下连接器
- 案例 (Cases)
- D3 Security
- 电子邮件
- IBM Resilient
- 索引
- Jira
- Microsoft Teams
- 可观测性 AI 助手
- Opsgenie
- PagerDuty
- 服务器日志
- ServiceNow ITOM
- ServiceNow ITSM
- ServiceNow SecOps
- Slack
- Swimlane
- Torq
- Webhook
- xMatters
部分连接器类型是付费商业功能,而其他则是免费的。有关 Elastic 订阅级别的比较,请前往订阅页面。
有关创建连接器的更多信息,请参考连接器。
操作频率
操作变量
使用默认通知消息或对其进行自定义。您可以通过点击“添加变量”图标 并从可用变量列表中进行选择,为消息添加更多上下文。
以下变量特定于此规则类型。您也可以指定适用于所有规则的通用变量。
context.anomalyExplorerUrl- 在异常浏览器中打开的 URL。
context.isInterim- 指示前几条命中结果是否包含临时结果。
context.jobIds- 触发警报的作业 ID 列表。
context.message- 警报信息消息。
context.score- 通知操作发生时的异常分数。
context.timestamp- 异常的桶时间戳。
context.timestampIso8601- ISO8601 格式的异常桶时间戳。
context.topInfluencers-
前几个影响因素的列表。属性包括
influencer_field_name -
影响因素的字段名称。
influencer_field_value -
影响、促成异常或对异常负有责任的实体。
score - 影响因素分数。介于 0-100 之间的归一化分数,显示了影响因素对异常的总体贡献。
context.topRecords-
前几条记录的列表。属性包括
actual -
桶的实际值。
by_field_value -
by 字段的值。
field_name -
某些函数需要一个要对其进行操作的字段,例如
sum()。对于这些函数,此值是要分析的字段的名称。函数 -
异常发生所在的函数,如检测器配置中所指定。例如,
max。over_field_name -
用于拆分数据的字段。
partition_field_value -
用于分段分析的字段。
score -
介于 0-100 之间的归一化分数,基于该记录异常的可能性。
typical -
根据分析建模得出的桶的典型值。
要编辑异常检测规则
- 在您的 Elastic Observability Serverless 项目中,转到 Machine learning → Jobs。
- 展开使用要编辑的规则的作业。
- 在 Job settings 选项卡上,在 Alert rules 下方,单击要编辑的规则。