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 token
而不是基本身份验证来调用 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。 |
|
此监视开始执行的时间。 |
|
触发此监视的时间。 |
|
此监视应该被触发的时间。 |
|
与监视关联的任何元数据。 |