创建或更新 Watch API
编辑创建或更新 Watch API
编辑在 Watcher 中注册新的 watch 或更新现有的 watch。
请求
编辑PUT _watcher/watch/<watch_id>
描述
编辑注册 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 具有以下字段
名称 | 描述 |
---|---|
|
触发器,定义何时应运行 watch。 |
|
输入,定义加载 watch 数据所需的输入。 |
|
条件,定义是否应运行操作。 |
|
如果条件匹配,将运行的操作列表 |
|
转换,处理 watch payload 以便为 watch 操作做准备。 |
|
将复制到历史记录条目中的元数据 json。 |
|
运行操作之间的最短时间,默认值为 5 秒。可以使用设置 |
|
运行操作之间的最短时间(以毫秒为单位)。默认为 |
示例
编辑以下示例添加了一个 ID 为 my-watch
的 watch,该 watch 具有以下特性
- watch 计划每分钟触发一次。
- watch 搜索输入查找过去五分钟内发生的任何 404 HTTP 响应。
- watch 条件检查是否找到了任何搜索命中。
- 当找到时,watch 操作会向管理员发送电子邮件。
resp = client.watcher.put_watch( id="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" } } }, ) print(resp)
const response = await client.watcher.putWatch({ id: "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", }, }, }, }); console.log(response);
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 默认处于活动状态。