ElasticSearch预警服务-Watcher详解-Action设置
Watcher中的Action指配置指定的预警动作,在满足触发条件且不节流的情况下执行。
每个Action动作执行一次,Action之间相互独立。执行过程中,发生任何错误都会记录结果,可以在历史记录中查看。Action可以访问Context中的内容。
Watcher支持的Action类型有四种:EMail(邮件),Webhook(第三方对接),Index(索引),Logging(日志记录)
1.EMail
发送通知邮件,可以配置至少一个邮箱账号。
需要在elasticsearch.yml中配置邮箱账号,每个账号需要一个唯一的名称,并配置SMTP相关信息,可以对
账号信息设置默认值。
设置属性:watcher.actions.email.service.account
watcher.actions.email.service.account:
work:
profile: gmail #邮箱账号,要求唯一
email_defaults:
from: 'John Doe <john.doe@host.domain>' #设置默认属性
bcc: archive@host.domain #设置默认属性
smtp:
auth: true
starttls.enable: true
host: smtp.gmail.com
port: 587
user: <username>
password: <password>
使用account属性配置多个发送邮件,如果只有一个邮箱,可以不配置改属性。
来看一个完成的EMail Action配置例子:
$ curl -XPUT 'http://localhost:9200/_watcher/watch/my-watch' -d '{
"actions" : {
"email_admin" : {
"transform" : {
},
"email": {
"account":"gmail",#如不设置,则为默认邮箱,
"to": "'John Doe <john.doe@host.domain>'", #如果没有设置,则从ElasticSearch.yml默认配置中读取。
#收件人列表可以是多个,
#可是'Personal Name <user1@host.domain>, user2@host.domain'
#或者 [ 'Personal Name <user1@host.domain>', 'user2@host.domain' ]
"subject": "{{ctx.watch_id}} executed", #邮件标题
"body": "{{ctx.watch_id}} executed with {{ctx.payload.hits.total}} hits" #邮件内容
}
}
}
...
}
2.WebHook
指连接到某个web服务器并监听指定端口,支持Http及Https。
简单配置如下:
PUT /_watcher/watch/my-watch
{
...
"actions" : {
"my_webhook" : {
"transform" : {
...
},
"webhook" : {
"method" : "POST", #请求方式
"host" : "mylisteningserver", #请求服务器
"port" : 9200, #请求端口
"path": ":/{{ctx.watch_id}", #请求路径
"body" : "{{ctx.watch_id}}:{{ctx.payload.hits.total}}" #消息体
}
}
}
}
需要验证的配置信息
PUT /_watcher/watch/my-watch
{
...
"actions" : {
"my_webhook" : {
"transform" : {
...
},
"webhook" : {
"auth" : {
"basic" : {
"username" : "<username>", #用户名
"password" : "<password>" #密码,默认情况下,改数据会明文存储在索引中,如果安装SHILED服务,可以在存储前进行加密处理
}
}
"method" : "POST",
"host" : "mylisteningserver",
"port" : 9200,
"path": ":/{{ctx.watch_id}",
"body" : "{{ctx.watch_id}}:{{ctx.payload.hits.total}}"
}
}
}
}
通过参数的方式配置
PUT /_watcher/watch/my-watch
{
...
"actions" : {
"my_webhook" : {
"webhook" : {
"method" : "POST",
"host" : "mylisteningserver",
"port" : 9200,
"path": ":/alert",
"params" : { #请求参数
"watch_id" : "{{ctx.watch_id}}"
}
}
}
}
}
自定义头部信息
PUT /_watcher/watch/my-watch
{
...
"actions" : {
"my_webhook" : {
"webhook" : {
"method" : "POST",
"host" : "mylisteningserver",
"port" : 9200,
"path": ":/alert/{{ctx.watch_id}}",
"headers" : { #自定义头部信息
"Content-Type" : "application/yaml"
},
"body" : "count: {{ctx.payload.hits.total}}"
}
}
}
}
3.Index
以ElasticSearch索引的方式处理。
$ curl -XPUT 'http://localhost:9200/_watcher/watch/my-watch' -d '{
...
"actions" : {
"index_payload" : {
"transform: {
},
"index" : {
"index" : "my-index", #索引名称
"doc_type" : "my-type" #索引类型
}
}
}
4.Logging
记录普通的日志文本,常用于开发和调试情况下。
PUT /_watcher/watch/my-watch
{
...
"actions" : {
"log" : {
"transform" : {
...
},
"logging" : {
"text" : "executed at {{ctx.execution_time}}"
}
}
}
}