警报生产注意事项编辑

警报运行规则检查和操作,作为由任务管理器管理的持久后台任务。

当依赖规则和操作作为关键任务服务时,请确保您遵循任务管理器的生产注意事项

运行后台规则检查和操作编辑

Kibana 使用后台任务来运行规则和操作,这些任务分布在集群中的所有 Kibana 实例上。

默认情况下,每个 Kibana 实例每隔三秒轮询一次工作,并且可以运行最多十个并发任务。然后在 Kibana 服务器上运行这些任务。

规则是重复的后台任务,这些任务在完成时会根据检查间隔重新安排。操作是非重复的后台任务,这些任务在完成时会删除。

有关任务管理器的更多详细信息,请参阅运行后台任务

规则和操作任务可能会延迟运行或以不一致的计划运行。这通常是特定集群使用情况的症状。

您可以通过调整任务管理器设置或扩展部署以更好地适应您的用例来解决此类问题。

有关详细指南,请参阅警报故障排除

扩展指南编辑

由于规则和操作利用后台任务来执行大部分工作,因此可以通过遵循任务管理器扩展指南来扩展警报。

在估计所需的任务吞吐量时,请牢记以下几点

  • 每个规则使用一个单一的重复任务,该任务被安排在其检查间隔定义的节奏下运行。
  • 每个操作使用一个单一任务。但是,由于操作是针对每个实例执行的,因此警报可能会生成大量非重复任务。

很难预测需要多少吞吐量才能确保所有规则和操作都以一致的计划执行。通过将规则计为重复任务,将操作计为非重复任务,可以粗略地估计吞吐量可以估计每分钟任务测量。

预测用于处理操作的缓冲区在很大程度上取决于您使用的规则类型、它们可能检测到的警报数量以及您可能选择分配给操作组的操作数量。考虑到这一点,定期监控任务管理器实例的运行状况

事件日志索引生命周期管理编辑

此功能处于技术预览阶段,可能会在将来的版本中更改或删除。Elastic 将努力解决任何问题,但技术预览中的功能不受官方 GA 功能的支持 SLA 的约束。

警报和操作在“事件日志”数据流集中记录活动,每个 Kibana 版本一个,名为.kibana-event-log-{VERSION}。这些数据流配置为具有 90 天的生命周期数据保留期。这可以通过标准数据流生命周期 API 更新为其他值。请注意,事件日志数据包含 Kibana 中警报页面显示的数据,因此缩短数据保留期将导致可查看的数据减少。

有关数据流生命周期管理的更多信息,请参阅:数据流生命周期

断路器编辑

在某些情况下,运行警报规则和操作可能会开始对 Kibana 实例的整体运行状况产生负面影响,无论是通过阻塞任务管理器吞吐量,还是通过消耗如此多的 CPU/内存以至于其他操作无法在合理的时间内完成。有几个可配置的断路器来帮助最大程度地减少这些影响。

间隔非常短的规则编辑

以非常短的间隔运行大量规则会很快阻塞任务管理器吞吐量,从而导致更高的计划漂移。使用xpack.alerting.rules.minimumScheduleInterval.value为规则设置最小计划间隔。此配置的默认值(也是推荐值)为1m。使用xpack.alerting.rules.minimumScheduleInterval.enforce指定是否严格执行此最小值。虽然此设置的默认值为false以保持与现有规则的向后兼容性,但将其设置为true以防止新规则和更新的规则以低于最小值的间隔运行。

另一个相关的设置是xpack.alerting.rules.maxScheduledPerMinute,它限制了每分钟可以运行的规则数量。例如,如果将其设置为400,则可以有 400 个规则,其检查间隔为一分钟,或者 2,000 个规则,其检查间隔为 5 分钟。如果规则的检查间隔会导致此设置被超过,则无法创建或编辑该规则。要保持在此限制内,请删除或禁用某些规则,或更新检查间隔,以便您的规则不那么频繁地运行。

运行时间很长的规则编辑

运行时间很长的规则通常是因为它们正在发出资源密集型 Elasticsearch 查询或执行 CPU 密集型处理。这会阻塞事件循环,使 Kibana 在规则运行时无法访问。默认情况下,规则处理会在5m后取消,但可以使用xpack.alerting.rules.run.timeout配置覆盖此设置。此值也可以使用xpack.alerting.rules.run.ruleTypeOverrides按规则类型配置。例如,以下配置将全局超时值设置为1m,同时允许索引阈值规则运行10m,然后才取消。

xpack.alerting.rules.run:
  timeout: '1m'
  ruleTypeOverrides:
    - id: '.index-threshold'
      timeout: '10m'

当规则运行被取消时,在运行期间生成的任何警报和操作都会被丢弃。此行为由xpack.alerting.cancelAlertsOnRuleTimeout配置控制,该配置默认为true。将其设置为false以在超时后接收警报和操作,但请注意,这些警报和操作可能不完整且可能不准确。

生成过多操作的规则编辑

生成过多操作的规则会很快阻塞任务管理器吞吐量。这可能发生在以下情况下

  • 配置为单个操作的规则生成许多警报。例如,如果配置为运行单个电子邮件操作的规则生成 100,000 个警报,那么在运行期间将安排 100,000 个操作。
  • 配置为多个操作的规则生成警报。例如,如果配置为运行电子邮件操作、服务器日志操作和 Webhook 操作的规则生成 30,000 个警报,那么在运行期间将安排 90,000 个操作。

使用xpack.alerting.rules.run.actions.max限制规则每次运行可以生成的最多操作数。此值也可以通过连接器类型使用xpack.alerting.rules.run.actions.connectorTypeOverrides配置。例如,以下配置将全局最大操作数设置为 100,同时允许具有电子邮件操作的规则生成最多 200 个操作。

xpack.alerting.rules.run:
  actions:
    max: 100
    connectorTypeOverrides:
      - id: '.email'
        max: 200