创建或更新 Watch API编辑

在 Watcher 中注册新的 Watch 或更新现有的 Watch。

请求编辑

PUT _watcher/watch/<watch_id>

先决条件编辑

  • 您必须具有 manage_watcher 集群权限才能使用此 API。有关更多信息,请参阅 安全权限

描述编辑

注册 Watch 时,会将代表 Watch 的新文档添加到 .watches 索引中,并且其触发器会立即在相关的触发器引擎中注册。通常,对于 schedule 触发器,调度程序是触发器引擎。

您必须使用 Kibana 或此 API 来创建 Watch。请勿使用 Elasticsearch 索引 API 将 Watch 直接添加到 .watches 索引中。如果启用了 Elasticsearch 安全功能,请勿授予用户对 .watches 索引的 write 权限。

添加 Watch 时,您还可以定义其初始 活动状态。您可以通过设置 active 参数来实现。

安全集成编辑

启用 Elasticsearch 安全功能后,您的 Watch 只能对存储 Watch 的用户具有权限的索引进行索引或搜索。如果用户可以读取索引 a,但不能读取索引 b,则在执行 Watch 时,也会适用相同的规则。

路径参数编辑

<watch_id>
(必需,字符串) Watch 的标识符。

查询参数编辑

active
(可选,布尔值) 定义 Watch 默认情况下是处于活动状态还是非活动状态。默认值为 true,这意味着 Watch 默认情况下处于活动状态。

请求正文编辑

Watch 具有以下字段

名称 描述

trigger

定义 Watch 应何时运行的 触发器

input

定义加载 Watch 数据的输入的 输入

condition

定义是否应运行操作的 条件

actions

如果条件匹配,将运行的 操作 列表

transform

处理 Watch 有效负载以将其准备用于 Watch 操作的 转换

metadata

将复制到历史记录条目中的元数据 json。

throttle_period

操作运行之间的最短时间,默认值为 5 秒。此默认值可以在配置文件中使用设置 xpack.watcher.throttle.period.default_period 进行更改。如果同时指定了此值和 throttle_period_in_millis 参数,Watcher 将使用请求中包含的最后一个参数。

throttle_period_in_millis

操作运行之间的最短时间(以毫秒为单位)。默认为 5000。如果同时指定了此值和 throttle_period 参数,Watcher 将使用请求中包含的最后一个参数。

示例编辑

以下示例添加了一个 ID 为 my-watch 的 Watch,它具有以下特征

  • Watch 计划每分钟触发一次。
  • Watch 搜索输入查找过去五分钟内发生的任何 404 HTTP 响应。
  • Watch 条件检查是否找到了任何搜索命中项。
  • 如果找到,Watch 操作会向管理员发送电子邮件。
PUT _watcher/watch/my-watch
{
  "trigger" : {
    "schedule" : { "cron" : "0 0/1 * * * ?" }
  },
  "input" : {
    "search" : {
      "request" : {
        "indices" : [
          "logstash*"
        ],
        "body" : {
          "query" : {
            "bool" : {
              "must" : {
                "match": {
                   "response": 404
                }
              },
              "filter" : {
                "range": {
                  "@timestamp": {
                    "from": "{{ctx.trigger.scheduled_time}}||-5m",
                    "to": "{{ctx.trigger.triggered_time}}"
                  }
                }
              }
            }
          }
        }
      }
    }
  },
  "condition" : {
    "compare" : { "ctx.payload.hits.total" : { "gt" : 0 }}
  },
  "actions" : {
    "email_admin" : {
      "email" : {
        "to" : "[email protected]",
        "subject" : "404 recently encountered"
      }
    }
  }
}

添加 Watch 时,您还可以定义其初始 活动状态。您可以通过设置 active 参数来实现。以下命令添加一个 Watch 并将其设置为默认情况下处于非活动状态

PUT _watcher/watch/my-watch?active=false

如果省略 active 参数,则 Watch 默认情况下处于活动状态。