《Elastic Stack 实战手册》——三、产品能力——3.5 进阶篇——3.5.14.Watcher(1) https://developer.aliyun.com/article/1228143
Watch 定义
Watch 由 Trigger、Input、Condition 、Transform 和在满足 Watch Condition 时希望执行的 Actions 组成。
l Trigger
l 确定何时检查 watch,watch 必须有触发器。
l Input
l 将数据加载到 watch 中。
l Condition
l 控制是否执行 watch 操作,如果没有指定条件,条件默认为 always。
l Transform
l 处理监视有效负载,使其为监视操作做好准备。你可以在监视级别定义转换或定义特定于操作的转换。可选的。
l Action
l 指定在满足监视条件时发生的动作。
例如,下面的代码片段显示了 Put Watch 请求,它定义了查找日志错误事件的监视:
PUT _watcher/watch/log_error_watch { "trigger": { "schedule": { "interval": "1m" } }, "input": { "search": { "request": { "indices": [ "logs" ], "body": { "query": { "bool": { "must": [ { "match": { "message": "error" } } ], "filter": [ { "range": { "@timestamp": { "from": "{{ctx.trigger.scheduled_time}}||-5m", "to": "{{ctx.trigger.triggered_time}}" } } } ] } } } } } }, "condition": { "compare": { "ctx.payload.hits.total": { "gt": 3 } } }, "actions": { "log_error": { "logging": { "text": "Found {{ctx.payload.hits.total}} errors in the logs" } } } }
1、Metadata
元数据——可以将可选的静态元数据附加到 watch 上。
2、Trigger
触发器——这个调度触发器每5分钟执行一次 watch。
3、Input
输入—检索 log-events 索引中的错误。
4、Condition
条件——这个条件检查是否有超过5个错误事件,如果满足条件,将触发 actions。
5、Actions
动作-这个 watch 有两个动作。my_webhook 动作将问题通知给第三方系统。 email_administrator 动作向系统管理员发送邮件。
测试Watcher
在上面,我们每隔 1 分钟检查一次,但是在实际的实践中,我们的这个 interval 可能会是1个小时,或者是1天的实践。我们不可能去等这么长的时间来测试这个 watcher。Elastic 为了方便我们的测试,提供了 _execute 接口:
PUT _watcher/watch/log_error_watch/_execute
通过上面的接口,我们不需要等在 schedule 中设置的那么久的时间才运行一下我们的 watcher。上面的命令可以直接帮我们运行 watcher。
我们连续运行如下的命令4次:
POST logs/event?pipeline=add-timestamp { "request": "GET index.html", "status_code": 404, "message": "Error: File not found" }
然后接着运行:
PUT _watcher/watch/log_error_watch/_execute
这样,我们就不用等每隔1分钟才可以看到输出的结果。我们立马在 Elasticsearch Server 的日志中看到输出:
至此,我们已经完整地创建并测试了我们的 Watcher。
《Elastic Stack 实战手册》——三、产品能力——3.5 进阶篇——3.5.14.Watcher(3) https://developer.aliyun.com/article/1228141