当前位置: 首页 > 工具软件 > Gmail Watcher > 使用案例 >

7.ElasticSearch预警服务-Watcher详解-Action设置

上官淮晨
2023-12-01

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}}"
      }
    }
  }
}

 

 类似资料: