- Elasticsearch 指南其他版本
- 8.17 中的新功能
- Elasticsearch 基础
- 快速入门
- 设置 Elasticsearch
- 升级 Elasticsearch
- 索引模块
- 映射
- 文本分析
- 索引模板
- 数据流
- 摄取管道
- 别名
- 搜索您的数据
- 重新排名
- 查询 DSL
- 聚合
- 地理空间分析
- 连接器
- EQL
- ES|QL
- SQL
- 脚本
- 数据管理
- 自动缩放
- 监视集群
- 汇总或转换数据
- 设置高可用性集群
- 快照和还原
- 保护 Elastic Stack 的安全
- Watcher
- 命令行工具
- elasticsearch-certgen
- elasticsearch-certutil
- elasticsearch-create-enrollment-token
- elasticsearch-croneval
- elasticsearch-keystore
- elasticsearch-node
- elasticsearch-reconfigure-node
- elasticsearch-reset-password
- elasticsearch-saml-metadata
- elasticsearch-service-tokens
- elasticsearch-setup-passwords
- elasticsearch-shard
- elasticsearch-syskeygen
- elasticsearch-users
- 优化
- 故障排除
- 修复常见的集群问题
- 诊断未分配的分片
- 向系统中添加丢失的层
- 允许 Elasticsearch 在系统中分配数据
- 允许 Elasticsearch 分配索引
- 索引将索引分配过滤器与数据层节点角色混合,以在数据层之间移动
- 没有足够的节点来分配所有分片副本
- 单个节点上索引的分片总数已超过
- 每个节点的分片总数已达到
- 故障排除损坏
- 修复磁盘空间不足的数据节点
- 修复磁盘空间不足的主节点
- 修复磁盘空间不足的其他角色节点
- 启动索引生命周期管理
- 启动快照生命周期管理
- 从快照恢复
- 故障排除损坏的存储库
- 解决重复的快照策略失败问题
- 故障排除不稳定的集群
- 故障排除发现
- 故障排除监控
- 故障排除转换
- 故障排除 Watcher
- 故障排除搜索
- 故障排除分片容量健康问题
- 故障排除不平衡的集群
- 捕获诊断信息
- REST API
- API 约定
- 通用选项
- REST API 兼容性
- 自动缩放 API
- 行为分析 API
- 紧凑和对齐文本 (CAT) API
- 集群 API
- 跨集群复制 API
- 连接器 API
- 数据流 API
- 文档 API
- 丰富 API
- EQL API
- ES|QL API
- 功能 API
- Fleet API
- 图表探索 API
- 索引 API
- 别名是否存在
- 别名
- 分析
- 分析索引磁盘使用量
- 清除缓存
- 克隆索引
- 关闭索引
- 创建索引
- 创建或更新别名
- 创建或更新组件模板
- 创建或更新索引模板
- 创建或更新索引模板(旧版)
- 删除组件模板
- 删除悬挂索引
- 删除别名
- 删除索引
- 删除索引模板
- 删除索引模板(旧版)
- 存在
- 字段使用情况统计信息
- 刷新
- 强制合并
- 获取别名
- 获取组件模板
- 获取字段映射
- 获取索引
- 获取索引设置
- 获取索引模板
- 获取索引模板(旧版)
- 获取映射
- 导入悬挂索引
- 索引恢复
- 索引段
- 索引分片存储
- 索引统计信息
- 索引模板是否存在(旧版)
- 列出悬挂索引
- 打开索引
- 刷新
- 解析索引
- 解析集群
- 翻转
- 收缩索引
- 模拟索引
- 模拟模板
- 拆分索引
- 解冻索引
- 更新索引设置
- 更新映射
- 索引生命周期管理 API
- 推理 API
- 信息 API
- 摄取 API
- 许可 API
- Logstash API
- 机器学习 API
- 机器学习异常检测 API
- 机器学习数据帧分析 API
- 机器学习训练模型 API
- 迁移 API
- 节点生命周期 API
- 查询规则 API
- 重新加载搜索分析器 API
- 存储库计量 API
- 汇总 API
- 根 API
- 脚本 API
- 搜索 API
- 搜索应用程序 API
- 可搜索快照 API
- 安全 API
- 身份验证
- 更改密码
- 清除缓存
- 清除角色缓存
- 清除权限缓存
- 清除 API 密钥缓存
- 清除服务帐户令牌缓存
- 创建 API 密钥
- 创建或更新应用程序权限
- 创建或更新角色映射
- 创建或更新角色
- 批量创建或更新角色 API
- 批量删除角色 API
- 创建或更新用户
- 创建服务帐户令牌
- 委托 PKI 身份验证
- 删除应用程序权限
- 删除角色映射
- 删除角色
- 删除服务帐户令牌
- 删除用户
- 禁用用户
- 启用用户
- 注册 Kibana
- 注册节点
- 获取 API 密钥信息
- 获取应用程序权限
- 获取内置权限
- 获取角色映射
- 获取角色
- 查询角色
- 获取服务帐户
- 获取服务帐户凭据
- 获取安全设置
- 获取令牌
- 获取用户权限
- 获取用户
- 授予 API 密钥
- 具有权限
- 使 API 密钥失效
- 使令牌失效
- OpenID Connect 准备身份验证
- OpenID Connect 身份验证
- OpenID Connect 注销
- 查询 API 密钥信息
- 查询用户
- 更新 API 密钥
- 更新安全设置
- 批量更新 API 密钥
- SAML 准备身份验证
- SAML 身份验证
- SAML 注销
- SAML 失效
- SAML 完成注销
- SAML 服务提供商元数据
- SSL 证书
- 激活用户配置文件
- 禁用用户配置文件
- 启用用户配置文件
- 获取用户配置文件
- 建议用户配置文件
- 更新用户配置文件数据
- 具有用户配置文件权限
- 创建跨集群 API 密钥
- 更新跨集群 API 密钥
- 快照和还原 API
- 快照生命周期管理 API
- SQL API
- 同义词 API
- 文本结构 API
- 转换 API
- 使用情况 API
- Watcher API
- 定义
- 迁移指南
- 发行说明
- Elasticsearch 版本 8.17.0
- Elasticsearch 版本 8.16.1
- Elasticsearch 版本 8.16.0
- Elasticsearch 版本 8.15.5
- Elasticsearch 版本 8.15.4
- Elasticsearch 版本 8.15.3
- Elasticsearch 版本 8.15.2
- Elasticsearch 版本 8.15.1
- Elasticsearch 版本 8.15.0
- Elasticsearch 版本 8.14.3
- Elasticsearch 版本 8.14.2
- Elasticsearch 版本 8.14.1
- Elasticsearch 版本 8.14.0
- Elasticsearch 版本 8.13.4
- Elasticsearch 版本 8.13.3
- Elasticsearch 版本 8.13.2
- Elasticsearch 版本 8.13.1
- Elasticsearch 版本 8.13.0
- Elasticsearch 版本 8.12.2
- Elasticsearch 版本 8.12.1
- Elasticsearch 版本 8.12.0
- Elasticsearch 版本 8.11.4
- Elasticsearch 版本 8.11.3
- Elasticsearch 版本 8.11.2
- Elasticsearch 版本 8.11.1
- Elasticsearch 版本 8.11.0
- Elasticsearch 版本 8.10.4
- Elasticsearch 版本 8.10.3
- Elasticsearch 版本 8.10.2
- Elasticsearch 版本 8.10.1
- Elasticsearch 版本 8.10.0
- Elasticsearch 版本 8.9.2
- Elasticsearch 版本 8.9.1
- Elasticsearch 版本 8.9.0
- Elasticsearch 版本 8.8.2
- Elasticsearch 版本 8.8.1
- Elasticsearch 版本 8.8.0
- Elasticsearch 版本 8.7.1
- Elasticsearch 版本 8.7.0
- Elasticsearch 版本 8.6.2
- Elasticsearch 版本 8.6.1
- Elasticsearch 版本 8.6.0
- Elasticsearch 版本 8.5.3
- Elasticsearch 版本 8.5.2
- Elasticsearch 版本 8.5.1
- Elasticsearch 版本 8.5.0
- Elasticsearch 版本 8.4.3
- Elasticsearch 版本 8.4.2
- Elasticsearch 版本 8.4.1
- Elasticsearch 版本 8.4.0
- Elasticsearch 版本 8.3.3
- Elasticsearch 版本 8.3.2
- Elasticsearch 版本 8.3.1
- Elasticsearch 版本 8.3.0
- Elasticsearch 版本 8.2.3
- Elasticsearch 版本 8.2.2
- Elasticsearch 版本 8.2.1
- Elasticsearch 版本 8.2.0
- Elasticsearch 版本 8.1.3
- Elasticsearch 版本 8.1.2
- Elasticsearch 版本 8.1.1
- Elasticsearch 版本 8.1.0
- Elasticsearch 版本 8.0.1
- Elasticsearch 版本 8.0.0
- Elasticsearch 版本 8.0.0-rc2
- Elasticsearch 版本 8.0.0-rc1
- Elasticsearch 版本 8.0.0-beta1
- Elasticsearch 版本 8.0.0-alpha2
- Elasticsearch 版本 8.0.0-alpha1
- 依赖项和版本
执行监视 API
编辑执行监视 API
编辑强制执行已存储的监视。
描述
编辑此 API 可用于强制执行监视,使其脱离其触发逻辑,或模拟监视执行以进行调试。
为了进行测试和调试,您还可以精细地控制监视的运行方式。您可以执行监视而不执行其所有操作,或者通过模拟它们来执行。您还可以通过忽略监视条件来强制执行,并控制执行后是否将监视记录写入监视历史记录。
内联监视执行
编辑您可以使用执行 API 来执行尚未注册的监视,方法是内联指定监视定义。这对于在将监视添加到 Watcher 之前测试和调试监视非常有用。
路径参数
编辑-
<watch_id>
- (可选,字符串) 监视的标识符。
查询参数
编辑-
debug
- (可选,布尔值) 定义监视是否在调试模式下运行。默认值为
false
。
请求体
编辑此 API 支持以下字段
名称 | 必需 | 默认值 | 描述 |
---|---|---|---|
|
否 |
此结构被解析为触发事件的数据,将在监视执行期间使用 |
|
|
否 |
否 |
设置为 |
|
否 |
null |
如果存在,监视将使用此对象作为有效负载,而不是执行其自己的输入。 |
|
否 |
null |
确定如何在监视执行中处理监视操作。有关更多信息,请参阅 操作执行模式。 |
|
否 |
否 |
设置为 |
|
否 |
null |
如果存在,则使用此 监视,而不是请求中指定的监视。此监视不会持久化到索引中,并且无法设置 record_execution。 |
操作执行模式
编辑操作模式定义在监视执行期间如何处理操作。操作可以关联五种可能的模式
名称 | 描述 |
---|---|
|
模拟操作执行。每个操作类型定义其自己的模拟操作模式。例如, |
|
类似于 |
|
执行操作,就像监视被其自己的触发器触发一样执行。如果监视的当前状态表明应该这样做,则可能会限制执行。 |
|
类似于 |
|
跳过该操作,并且不执行或模拟该操作。有效地强制限制操作。 |
安全集成
编辑在您的集群上启用 Elasticsearch 安全功能时,监视将使用存储监视的用户的权限执行。如果您的用户允许读取索引 a
,但不允许读取索引 b
,则在执行监视期间将应用完全相同的规则集。
当使用执行监视 API 时,将使用调用 API 的用户的授权数据作为基础,而不是存储监视的用户的信息。
示例
编辑以下示例执行 my_watch
监视
resp = client.watcher.execute_watch( id="my_watch", ) print(resp)
const response = await client.watcher.executeWatch({ id: "my_watch", }); console.log(response);
POST _watcher/watch/my_watch/_execute
以下示例显示了执行 my-watch
监视的完整示例
resp = client.watcher.execute_watch( id="my_watch", trigger_data={ "triggered_time": "now", "scheduled_time": "now" }, alternative_input={ "foo": "bar" }, ignore_condition=True, action_modes={ "my-action": "force_simulate" }, record_execution=True, ) print(resp)
const response = await client.watcher.executeWatch({ id: "my_watch", trigger_data: { triggered_time: "now", scheduled_time: "now", }, alternative_input: { foo: "bar", }, ignore_condition: true, action_modes: { "my-action": "force_simulate", }, record_execution: true, }); console.log(response);
POST _watcher/watch/my_watch/_execute { "trigger_data" : { "triggered_time" : "now", "scheduled_time" : "now" }, "alternative_input" : { "foo" : "bar" }, "ignore_condition" : true, "action_modes" : { "my-action" : "force_simulate" }, "record_execution" : true }
提供了触发和计划时间。 |
|
忽略监视定义的输入,而是将提供的输入用作执行有效负载。 |
|
忽略监视定义的条件,并假定其评估为 |
|
强制模拟 |
|
监视的执行将在监视历史记录中创建一个监视记录,并且监视的限制状态可能会相应更新。 |
这是一个输出示例
{ "_id": "my_watch_0-2015-06-02T23:17:55.124Z", "watch_record": { "@timestamp": "2015-06-02T23:17:55.124Z", "watch_id": "my_watch", "node": "my_node", "messages": [], "trigger_event": { "type": "manual", "triggered_time": "2015-06-02T23:17:55.124Z", "manual": { "schedule": { "scheduled_time": "2015-06-02T23:17:55.124Z" } } }, "state": "executed", "status": { "version": 1, "execution_state": "executed", "state": { "active": true, "timestamp": "2015-06-02T23:17:55.111Z" }, "last_checked": "2015-06-02T23:17:55.124Z", "last_met_condition": "2015-06-02T23:17:55.124Z", "actions": { "test_index": { "ack": { "timestamp": "2015-06-02T23:17:55.124Z", "state": "ackable" }, "last_execution": { "timestamp": "2015-06-02T23:17:55.124Z", "successful": true }, "last_successful_execution": { "timestamp": "2015-06-02T23:17:55.124Z", "successful": true } } } }, "input": { "simple": { "payload": { "send": "yes" } } }, "condition": { "always": {} }, "result": { "execution_time": "2015-06-02T23:17:55.124Z", "execution_duration": 12608, "input": { "type": "simple", "payload": { "foo": "bar" }, "status": "success" }, "condition": { "type": "always", "met": true, "status": "success" }, "actions": [ { "id": "test_index", "index": { "response": { "index": "test", "version": 1, "created": true, "result": "created", "id": "AVSHKzPa9zx62AzUzFXY" } }, "status": "success", "type": "index" } ] }, "user": "test_admin" } }
您可以通过将模式名称与操作 ID 相关联,为每个操作设置不同的执行模式
resp = client.watcher.execute_watch( id="my_watch", action_modes={ "action1": "force_simulate", "action2": "skip" }, ) print(resp)
const response = await client.watcher.executeWatch({ id: "my_watch", action_modes: { action1: "force_simulate", action2: "skip", }, }); console.log(response);
POST _watcher/watch/my_watch/_execute { "action_modes" : { "action1" : "force_simulate", "action2" : "skip" } }
您还可以使用 _all
作为操作 ID,将单个执行模式与监视中的所有操作关联
resp = client.watcher.execute_watch( id="my_watch", action_modes={ "_all": "force_execute" }, ) print(resp)
const response = await client.watcher.executeWatch({ id: "my_watch", action_modes: { _all: "force_execute", }, }); console.log(response);
POST _watcher/watch/my_watch/_execute { "action_modes" : { "_all" : "force_execute" } }
以下示例演示如何内联执行监视
resp = client.watcher.execute_watch( watch={ "trigger": { "schedule": { "interval": "10s" } }, "input": { "search": { "request": { "indices": [ "logs" ], "body": { "query": { "match": { "message": "error" } } } } } }, "condition": { "compare": { "ctx.payload.hits.total": { "gt": 0 } } }, "actions": { "log_error": { "logging": { "text": "Found {{ctx.payload.hits.total}} errors in the logs" } } } }, ) print(resp)
const response = await client.watcher.executeWatch({ watch: { trigger: { schedule: { interval: "10s", }, }, input: { search: { request: { indices: ["logs"], body: { query: { match: { message: "error", }, }, }, }, }, }, condition: { compare: { "ctx.payload.hits.total": { gt: 0, }, }, }, actions: { log_error: { logging: { text: "Found {{ctx.payload.hits.total}} errors in the logs", }, }, }, }, }); console.log(response);
POST _watcher/watch/_execute { "watch" : { "trigger" : { "schedule" : { "interval" : "10s" } }, "input" : { "search" : { "request" : { "indices" : [ "logs" ], "body" : { "query" : { "match" : { "message": "error" } } } } } }, "condition" : { "compare" : { "ctx.payload.hits.total" : { "gt" : 0 }} }, "actions" : { "log_error" : { "logging" : { "text" : "Found {{ctx.payload.hits.total}} errors in the logs" } } } } }
内联监视时,此 API 的所有其他设置仍然适用。在以下代码片段中,虽然内联监视定义了 compare
条件,但在执行期间将忽略此条件
resp = client.watcher.execute_watch( ignore_condition=True, watch={ "trigger": { "schedule": { "interval": "10s" } }, "input": { "search": { "request": { "indices": [ "logs" ], "body": { "query": { "match": { "message": "error" } } } } } }, "condition": { "compare": { "ctx.payload.hits.total": { "gt": 0 } } }, "actions": { "log_error": { "logging": { "text": "Found {{ctx.payload.hits.total}} errors in the logs" } } } }, ) print(resp)
const response = await client.watcher.executeWatch({ ignore_condition: true, watch: { trigger: { schedule: { interval: "10s", }, }, input: { search: { request: { indices: ["logs"], body: { query: { match: { message: "error", }, }, }, }, }, }, condition: { compare: { "ctx.payload.hits.total": { gt: 0, }, }, }, actions: { log_error: { logging: { text: "Found {{ctx.payload.hits.total}} errors in the logs", }, }, }, }, }); console.log(response);
POST _watcher/watch/_execute { "ignore_condition" : true, "watch" : { "trigger" : { "schedule" : { "interval" : "10s" } }, "input" : { "search" : { "request" : { "indices" : [ "logs" ], "body" : { "query" : { "match" : { "message": "error" } } } } } }, "condition" : { "compare" : { "ctx.payload.hits.total" : { "gt" : 0 }} }, "actions" : { "log_error" : { "logging" : { "text" : "Found {{ctx.payload.hits.total}} errors in the logs" } } } } }