常见问题

编辑

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

检查间隔小的规则运行延迟

编辑

问题

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

解决方案

规则作为后台任务运行,其节奏由它们的检查间隔定义。当规则的检查间隔小于任务管理器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 权限。

解决方案

默认情况下,规则的超时时间为 5m。运行时间超过此超时的规则将自动取消,以防止它们消耗 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 密钥

编辑

问题:

规则运行失败,并出现 Unable to decrypt attribute "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 密钥