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 ' #设置默认属性
bcc: [email protected] #设置默认属性
smtp:
auth: true
starttls.enable: true
host: smtp.gmail.com
port: 587
user:
password:
使用account属性配置多个发送邮件,如果只有一个邮箱,可以不配置改属性。
来看一个完成的EMail Action配置例子:
$ curl -XPUT 'http://localhost:9200/_watcher/watch/my-watch' -d '{
"actions" : {
"email_admin" : {
"transform" : {
},
"email": {
"account":"gmail",#如不设置,则为默认邮箱,
"to": "'John Doe '", #如果没有设置,则从ElasticSearch.yml默认配置中读取。
#收件人列表可以是多个,
#可是'Personal Name , [email protected]'
#或者 [ 'Personal Name ', '[email protected]' ]
"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" : "", #用户名
"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}}"
}
}
}
}