《Elastic Stack 实战手册》——三、产品能力——3.5 进阶篇——3.5.14.Watcher(2) https://developer.aliyun.com/article/1228142
Watcher 执行
当你添加一个 watcher 时,Watcher 会立即向 Trigger 引擎注册它的 Trigger。Trigger 引擎负责触发watch的执行,Trigger 引擎在主节点上运行,并使用与用于执行监视的线程池不同的线程池。
当 watch 被触发时,Watcher 将它排队等待执行。一个 watch_record 文档被创建并将其添加到 watch 历史索引中,并将初始状态设置为 awaits_execution。
当执行开始时,Watcher 会为 watch 创建一个 watch 执行上下文。执行上下文提供脚本和模板访问监视 metadata、payload、执行时间和 trigger 信息。
下图展示了 watch 执行过程:
应用—观察集群运行状况
你可以轻松配置一个Watch 来监控 Elasticsearch 集群的健康状况:
l 设置 watch 的触发频率并定义获取集群健康状态的输入。
l 添加评估集群运行状况以确定是否需要操作的条件。
l 如果集群为 RED,则采取措施。
设置 watch 的触发频率并添加输入
Watch schedule 控制触发 watch 的频率,watch input 获取你要评估的数据,要定期搜索日志数据并将结果加载到 watch 中。定义 schedule 的最简单方法是指定时间间隔。例如,以下计划每10秒运行一次:
curl - XPUT 'http://localhost:9200/_watcher/watch/cluster_health_watch' - d '{ "trigger": { "schedule": { "interval": "10s" } } }'
要获取集群的状态,你可以调用 Elasticsearch 集群健康 API:
curl - XGET 'http://localhost:9200/_cluster/health?pretty'
要将健康状态加载到你的 Watch 中,你只需添加一个调用集群健康 API 的 HTTP 输入:
curl -XPUT 'http://localhost:9200/_watcher/watch/cluster_health_watch' -d '{ "trigger": { "schedule": { "interval": "10s" } }, "input": { "http": { "request": { "host": "localhost", "port": 9200, "path": "/_cluster/health" } } } }'
《Elastic Stack 实战手册》——三、产品能力——3.5 进阶篇——3.5.14.Watcher(4) https://developer.aliyun.com/article/1228140