Watcher HTTP 输入
编辑Watcher HTTP 输入编辑
使用 http
输入向 HTTP 端点提交请求,并在触发监视时将响应加载到监视执行上下文中。有关所有支持的属性,请参阅 HTTP 输入属性。
使用 http
输入,您可以
查询外部 Elasticsearch 集群编辑
要查询外部 Elasticsearch 集群,请指定集群的 host
和 port
属性,并将索引的搜索端点指定为 path
。如果省略搜索主体,则请求将返回指定索引中的所有文档
"input" : { "http" : { "request" : { "host" : "example.com", "port" : 9200, "path" : "/idx/_search" } } }
您可以使用完整的 Elasticsearch 查询 DSL 来执行更复杂的搜索。例如,以下 http
输入检索 category
字段中包含 event
的所有文档
"input" : { "http" : { "request" : { "host" : "host.domain", "port" : 9200, "path" : "/idx/_search", "body" : "{\"query\" : { \"match\" : { \"category\" : \"event\"}}}" } } }
调用 Elasticsearch API编辑
要从其他 Elasticsearch API 加载数据,请将 API 端点指定为 path
属性。使用 params
属性指定查询字符串参数。例如,以下 http
输入调用 集群统计信息 API 并启用 human
属性
调用外部 Web 服务编辑
您可以使用 http
输入从任何外部 Web 服务获取数据。http
输入支持基本身份验证。例如,以下输入提供用户名和密码来访问 myservice
"input" : { "http" : { "request" : { "host" : "host.domain", "port" : 9200, "path" : "/myservice", "auth" : { "basic" : { "username" : "user", "password" : "pass" } } } } }
您还可以通过 params
属性传递特定于服务的 API 密钥和其他信息。例如,以下 http
输入从 OpenWeatherMap 服务加载阿姆斯特丹的当前天气预报
"input" : { "http" : { "request" : { "url" : "http://api.openweathermap.org/data/2.5/weather", "params" : { "lat" : "52.374031", "lon" : "4.88969", "appid" : "<your openweathermap appid>" } } } }
使用基于令牌的身份验证编辑
您还可以使用 Bearer 令牌
而不是基本身份验证来调用 API。request.headers
对象包含 HTTP 标头
"input" : { "http" : { "request" : { "url": "https://api.example.com/v1/something", "headers": { "authorization" : "Bearer ABCD1234...", "content-type": "application/json" # other headers params.. }, "connection_timeout": "30s" } } }
使用模板编辑
http
输入支持模板化。您可以在指定 path
、body
、标头值和参数值时使用 模板。
例如,以下代码段使用模板来指定要查询的索引,并将结果限制为在过去五分钟内添加的文档
"input" : { "http" : { "request" : { "host" : "host.domain", "port" : 9200, "path" : "/{{ctx.watch_id}}/_search", "body" : "{\"query\" : {\"range\": {\"@timestamp\" : {\"from\": \"{{ctx.trigger.triggered_time}}||-5m\",\"to\": \"{{ctx.trigger.triggered_time}}\"}}}}" } } }
访问 HTTP 响应编辑
如果响应主体采用 JSON 或 YAML 格式,则会对其进行解析并加载到执行上下文中。如果响应主体未采用 JSON 或 YAML 格式,则会将其加载到负载的 _value
字段中。
条件、转换和操作通过执行上下文访问响应数据。例如,如果响应包含 message
对象,则可以使用 ctx.payload.message
访问消息数据。
此外,可以使用 ctx.payload._headers
字段访问响应中的所有标头,并使用 ctx.payload._status_code
访问响应的 HTTP 状态代码。
HTTP 输入属性编辑
名称 | 必需 | 默认 | 描述 |
---|---|---|---|
|
否 |
http |
URL 方案。有效值为: |
|
是 |
- |
要连接到的主机。 |
|
是 |
- |
http 服务正在侦听的端口。 |
|
否 |
- |
URL 路径。路径可以是静态文本,也可以包含 |
|
否 |
get |
HTTP 方法。支持的值为: |
|
否 |
- |
HTTP 请求标头。标头值可以是静态文本,也可以包含 |
|
否 |
- |
URL 查询字符串参数。参数值可以是静态文本,也可以包含 |
|
否 |
- |
允许您通过指定真实的 URL(例如 |
|
否 |
- |
HTTP 基本身份验证用户名 |
|
否 |
- |
HTTP 基本身份验证密码 |
|
否 |
- |
连接到主机时要使用的代理主机。 |
|
否 |
- |
连接到主机时要使用的代理端口。 |
|
否 |
10 秒 |
建立 http 连接的超时时间。如果在此时间内无法建立连接,则输入将超时并失败。 |
|
否 |
10 秒 |
从 http 连接读取数据的超时时间。如果在此时间内未收到任何响应,则输入将超时并失败。 |
|
否 |
- |
HTTP 请求正文。正文可以是静态文本,也可以包含 |
|
否 |
- |
要从输入响应中提取并用作负载的 JSON 键数组。在输入生成大量响应的情况下,可以使用它来过滤要用作负载的相关响应部分。 |
|
否 |
json |
响应正文将包含的预期内容类型。支持的值为 |
在指定 path
、params
、headers
和 body
值时,您可以在执行上下文中引用以下变量
名称 | 描述 |
---|---|
|
当前正在执行的监视的 ID。 |
|
此监视开始执行的时间。 |
|
触发此监视的时间。 |
|
此监视应该被触发的时间。 |
|
与监视关联的任何元数据。 |