《Elastic Stack 实战手册》——三、产品能力——3.5 进阶篇——3.5.14.Watcher(3) https://developer.aliyun.com/article/1228141
添加条件
条件评估已经装载到 Watch 中的数据是否需要行动决定,由于你已定义将集群状态加载到
watch 中的 input,因此你可以定义检查该状态的条件。例如,你可以添加一个条件来检查状态是否为 RED。
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" } } }, "condition": { "compare": { "ctx.payload.status": { "eq": "red" } } } }'
采取行动
Watcher 的真正强大之处在于能够对警做出响应。watch 的 action 定义了 watch条件为真时要执行的操作——你可以在 watch condition 满足时发送电子邮件、调用第三方 Webhook或将文档写入 Elasticsearch 索引或日志。
例如,当状态为 RED 时,你可以添加一个 action 来索引集群状态信息。
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" } } }, "condition": { "compare": { "ctx.payload.status": { "eq": "red" } } }, "actions": { "send_email": { "email": { "to": "<username>@<domainname>", "subject": "Cluster Status Warning", "body": "Cluster status is RED" } } } }'
要让 Watcher 发送电子邮件,你必须在 elasticsearch.yml 配置文件中配置一个电子邮件帐户并重新启动 Elasticsearch。要添加电子邮件帐户,请设置该 watcher.actions.email.service.account 属性。
例如,以下代码段配置了一个名为 的 qq 帐户 work。
watcher.actions.email.service.account: work: profile: standard email_defaults: from: <email> smtp: auth: true starttls.enable: true host: smtp.exmail.qq.com port: 21 user: <username> password: <password>
删除Watch
由于 cluster_health_watch 被配置为每10秒运行一次,请确保在完成试验后删除它。否则,你将无休止地向自己发送垃圾邮件。
要移除 Watch,请使用 DELETE WATCH API:
curl -XDELETE 'http://localhost:9200/_watcher/watch/cluster_health_watch
创作人简介:
王涛,目前就职于 58 同城信息安全部,高级程序员。喜欢研究大数据、云原生相关技术。