Watcher Webhook 操作

编辑

使用 webhook 操作向任何 Web 服务发送请求。Webhook 操作支持 HTTP 和 HTTPS 连接。有关支持的属性,请参见 Webhook 操作属性

配置 Webhook 操作

编辑

actions 数组中配置 Webhook 操作。使用 webhook 关键字指定特定于操作的属性。

以下代码片段显示了一个简单的 Webhook 操作定义

"actions" : {
  "my_webhook" : { 
    "transform" : { ... }, 
    "throttle_period" : "5m", 
    "webhook" : {
      "method" : "POST", 
      "host" : "mylisteningserver", 
      "port" : 9200, 
      "path": "/{{ctx.watch_id}}", 
      "body" : "{{ctx.watch_id}}:{{ctx.payload.hits.total}}" 
    }
  }
}

操作的 ID

一个可选的 转换,用于在执行 webhook 操作之前转换有效负载

操作的可选 节流周期(在此示例中为 5 分钟)

连接到主机时使用的 HTTP 方法

要连接的主机

要连接的端口

HTTP 请求中使用的路径(URI)

要与请求一起发送的主体

向受保护的 Web 服务发送请求时,可以使用基本身份验证。例如,以下 webhook 操作在 GitHub 中创建了一个新问题

"actions" : {
  "create_github_issue" : {
    "transform": {
      "script": "return ['title':'Found errors in \\'contact.html\\'', 'body' : 'Found ' + ctx.payload.hits.total + ' errors in the last 5 minutes', 'assignee' : 'web-admin', 'labels' : ['bug','sev2']]"
    },
    "webhook" : {
      "method" : "POST",
      "url" : "https://api.github.com/repos/<owner>/<repo>/issues",
      "body": "{{#toJson}}ctx.payload{{/toJson}}",
      "auth" : {
        "basic" : {
          "username" : "<username>", 
          "password" : "<password>"
        }
      }
    }
  }
}

创建问题的用户的用户名和密码

默认情况下,用户名和密码都以纯文本形式存储在 .watches 索引中。启用 Elasticsearch 安全功能后,Watcher 可以在存储密码之前对其进行加密。

在向启用了 Elasticsearch 安全功能的集群提交请求时,也可以使用基于 PKI 的身份验证。当使用基于 PKI 的身份验证而不是 HTTP 基本身份验证时,无需在监视器本身中存储任何身份验证信息。要使用基于 PKI 的身份验证,请 配置 Watcher 的 SSL 密钥设置(在 elasticsearch.yml 中)。

查询参数

编辑

可以使用 params 字段指定要与请求一起发送的查询参数。此字段仅保存一个对象,其中键用作参数名称,值用作参数值

"actions" : {
  "my_webhook" : {
    "webhook" : {
      "method" : "POST",
      "host" : "mylisteningserver",
      "port" : 9200,
      "path": "/alert",
      "params" : {
        "watch_id" : "{{ctx.watch_id}}" 
      }
    }
  }
}

参数值可以包含模板字符串。

自定义请求头

编辑

可以使用 headers 字段指定要与请求一起发送的请求头。此字段仅保存一个对象,其中键用作标头名称,值用作标头值

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

标头值可以包含模板字符串。

Webhook 操作属性

编辑
名称 必需 默认值 描述

scheme

http

连接方案。有效值为:httphttps

host

-

要连接的主机。

port

-

HTTP 服务正在侦听的端口。

path

-

URL 路径。路径可以是静态文本或包含 Mustache 模板。URL 查询字符串参数必须通过 request.params 属性指定。

method

get

HTTP 方法。有效值为:headgetpostputdelete

headers

-

HTTP 请求头。标头值可以是静态文本或包含 Mustache 模板

params

-

URL 查询字符串参数。参数值可以是静态文本或包含 Mustache 模板

auth

-

与身份验证相关的 HTTP 标头。目前,仅支持基本身份验证。

body

-

HTTP 请求正文。正文可以是静态文本或包含 Mustache 模板。如果未指定,则发送空正文。

proxy.host

-

连接到主机时使用的代理主机。

proxy.port

-

连接到主机时使用的代理端口。

connection_timeout

10s

建立 HTTP 连接的超时时间。如果在此时间内无法建立连接,则操作将超时并失败。

read_timeout

10s

从 HTTP 连接读取数据的超时时间。如果在此时间内未收到响应,则操作将超时并失败。

url

-

用于将请求方案、主机、端口和路径指定为单个字符串的快捷方式。例如,http://example.org/foo/my-service