正在加载

Webhook 操作

Elastic Stack Serverless

使用 webhook 操作向任何 Web 服务发送请求。 Webhook 操作同时支持 HTTP 和 HTTPS 连接。 有关支持的属性,请参见 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}}"
    }
  }
}
  1. 操作的 ID
  2. 一个可选的 转换,用于在执行 webhook 操作之前转换有效负载
  3. 操作的可选 节流周期(在本例中为 5 分钟)
  4. 连接到主机时要使用的 HTTP 方法
  5. 要连接的主机
  6. 要连接的端口
  7. HTTP 请求中要使用的路径 (URI)
  8. 与请求一起发送的正文

您可以将基本身份验证用于向安全 Web 服务发送请求。 例如,以下 webhook 操作在 GitHub 中创建一个新 issue

"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>"
        }
      }
    }
  }
}
  1. 用于创建 issue 的用户的用户名和密码
注意

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

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

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

"actions" : {
  "my_webhook" : {
    "webhook" : {
      "method" : "POST",
      "host" : "mylisteningserver",
      "port" : 9200,
      "path": "/alert",
      "params" : {
        "watch_id" : "{{ctx.watch_id}}"
      }
    }
  }
}
  1. 参数值可以包含模板化的字符串。

您可以使用 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}}"
    }
  }
}
  1. 标头值可以包含模板化的字符串。

名称 必需 默认 描述
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
© . All rights reserved.