常见问题编辑

本页介绍如何解决您在使用警报时可能遇到的常见问题。

检查间隔短的规则运行延迟编辑

问题

检查间隔短的规则(例如每两秒一次)运行时间晚于计划时间。

解决方案

规则作为后台任务运行,其节奏由其检查间隔定义。当规则检查间隔小于任务管理器poll_interval时,规则将延迟运行。

调整Kibana 任务管理器设置或增加相关规则的检查间隔

有关更多详细信息,请参阅计划间隔短的任务运行延迟

节奏不一致的规则编辑

问题

计划规则以不一致的节奏运行,通常会延迟运行。

操作在规则状态更改后很长时间才运行,导致更改通知发送得太晚。

解决方案

规则和操作由每个 Kibana 实例作为后台任务运行,默认速率为每三秒十个任务。诊断与警报相关的问题时,请重点关注以alerting:actions:开头的任务。

警报任务始终以alerting:开头。例如,alerting:.index-threshold任务支持索引阈值堆栈规则。操作任务始终以actions:开头。例如,actions:.index任务支持索引操作

有关在任务管理器中监控和诊断任务的更多详细信息,请参阅运行状况监控

连接器在运行操作时出现 TLS 错误编辑

问题

连接器在连接到服务器以运行操作时遇到 TLS 套接字错误。

解决方案

配置选项可用于专门连接到 TLS 服务器,包括忽略服务器证书验证以及提供证书颁发机构数据以使用自定义证书验证服务器。有关更多详细信息,请参阅操作设置

规则运行时间过长编辑

问题

规则运行时间过长,并且正在影响部署的整体运行状况。

默认情况下,只有具有superuser角色的用户才能查询 [预览] 此功能处于技术预览阶段,可能会在未来版本中更改或删除。Elastic 将努力解决任何问题,但技术预览版中的功能不受官方 GA 功能的支持 SLA 的约束。 Kibana 事件日志,因为它是系统索引。要使其他用户能够运行此查询,请为.kibana-event-log*索引分配read权限。

解决方案

默认情况下,规则的超时时间为5 分钟。运行时间超过此超时时间的规则将自动取消,以防止它们消耗过多的 Kibana 资源。在规则超时之前可能已计划的警报和操作将被丢弃。当规则超时时,您将在 Kibana 日志中看到以下错误

[2022-03-28T13:14:04.062-04:00][WARN ][plugins.taskManager] Cancelling task alerting:.index-threshold "a6ea0070-aec0-11ec-9985-dd576a3fe205" as it expired at 2022-03-28T17:14:03.980Z after running for 05m 10s (with timeout set at 5m).

以及在详细信息页面

Rule details page with timeout error

如果希望规则运行更长时间,请在警报设置中更新xpack.alerting.rules.run.timeout配置。您还可以使用xpack.alerting.rules.run.ruleTypeOverrides来定位特定的规则类型。

持续运行时间超过其检查间隔的规则可能会产生意外结果。如果在详细信息页面上可见的平均运行持续时间大于检查间隔,请考虑增加检查间隔。

要获取所有长时间运行的规则,您可以查询按运行时间分组的规则 ID 列表

GET /.kibana-event-log*/_search
{
  "size": 0,
  "query": {
    "bool": {
      "filter": [
        {
          "range": {
            "@timestamp": {
              "gte": "now-1d", 
              "lte": "now"
            }
          }
        },
        {
          "term": {
            "event.action": {
              "value": "execute"
            }
          }
        },
        {
          "term": {
            "event.provider": {
              "value": "alerting" 
            }
          }
        }
      ]
    }
  },
  "runtime_mappings": { 
    "event.duration_in_seconds": {
      "type": "double",
      "script": {
        "source": "emit(doc['event.duration'].value / 1E9)"
      }
    }
  },
  "aggs": {
    "ruleIdsByExecutionDuration": {
      "histogram": {
        "field": "event.duration_in_seconds",
        "min_doc_count": 1,
        "interval": 1 
      },
      "aggs": {
        "ruleId": {
          "nested": {
            "path": "kibana.saved_objects"
          },
          "aggs": {
            "ruleId": {
              "terms": {
                "field": "kibana.saved_objects.id",
                "size": 10 
              }
            }
          }
        }
      }
    }
  }
}

这将查询过去一天中运行的规则。更新ltegte的值以查询不同的时间范围。

使用event.provider: actions查询长时间运行的操作。

运行持续时间以纳秒为单位存储。这将添加一个运行时字段,用于将该持续时间转换为秒。

此间隔将event.duration_in_seconds运行时字段分组到 1 秒的间隔中。更新此值以更改存储桶的粒度。如果无法使用运行时字段,请确保此聚合以event.duration为目标,并使用纳秒作为间隔。

这将检索此持续时间间隔的前 10 个规则 ID。更新此值以检索更多规则 ID。

此查询返回以下内容

{
  "took" : 322,
  "timed_out" : false,
  "_shards" : {
    "total" : 1,
    "successful" : 1,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : {
      "value" : 326,
      "relation" : "eq"
    },
    "max_score" : null,
    "hits" : [ ]
  },
  "aggregations" : {
    "ruleIdsByExecutionDuration" : {
      "buckets" : [
        {
          "key" : 0.0, 
          "doc_count" : 320,
          "ruleId" : {
            "doc_count" : 320,
            "ruleId" : {
              "doc_count_error_upper_bound" : 0,
              "sum_other_doc_count" : 0,
              "buckets" : [
                {
                  "key" : "1923ada0-a8f3-11eb-a04b-13d723cdfdc5",
                  "doc_count" : 140
                },
                {
                  "key" : "15415ecf-cdb0-4fef-950a-f824bd277fe4",
                  "doc_count" : 130
                },
                {
                  "key" : "dceeb5d0-6b41-11eb-802b-85b0c1bc8ba2",
                  "doc_count" : 50
                }
              ]
            }
          }
        },
        {
          "key" : 30.0, 
          "doc_count" : 6,
          "ruleId" : {
            "doc_count" : 6,
            "ruleId" : {
              "doc_count_error_upper_bound" : 0,
              "sum_other_doc_count" : 0,
              "buckets" : [
                {
                  "key" : "41893910-6bca-11eb-9e0d-85d233e3ee35",
                  "doc_count" : 6
                }
              ]
            }
          }
        }
      ]
    }
  }
}

大多数运行持续时间都在第一个存储桶(0-1 秒)内。

ID 为41893910-6bca-11eb-9e0d-85d233e3ee35的单个规则运行时间在 30 到 31 秒之间。

使用获取规则 API来检索有关运行时间过长的规则的其他信息。

规则无法解密 API 密钥编辑

问题:

规则无法运行,并显示无法解密属性“apiKey”错误。

解决方案:

当用于创建规则的xpack.encryptedSavedObjects.encryptionKey值与规则运行时使用的值不匹配时,就会发生此错误。根据情况,可以通过不同的方式解决此问题

如果手动更改了xpack.encryptedSavedObjects.encryptionKey中的值,并且仍然知道以前的加密密钥。

确保将任何以前的加密密钥包含在用于仅解密的密钥中。

如果另一个具有不同加密密钥的 Kibana 实例连接到集群。

另一个 Kibana 实例可能正在尝试使用与创建规则时不同的加密密钥来运行规则。确保所有 Kibana 实例之间的加密密钥相同,并为以前使用的加密密钥设置仅解密密钥

如果其他情况均不适用。

为规则生成新的 API 密钥。例如,在堆栈管理 > 规则中,从操作菜单中选择更新 API 密钥

规则在升级后停止运行编辑

问题:

在 8.2 中创建或编辑的警报规则在升级到 8.3.0 或 8.3.1 后停止运行。出现以下错误

<rule-type>:<UUID>: execution failed - security_exception: [security_exception] Reason: missing authentication credentials for REST request [/_security/user/_has_privileges], caused by: ""

解决方案:

升级到 8.3.2 或更高版本以避免此问题。要修复失败的规则,请转到堆栈管理 > 规则并多选规则。选择管理规则 > 更新 API 密钥以生成新的 API 密钥。有关 API 密钥授权的更多详细信息,请参阅API 密钥