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 基本身份验证密码 |
|
否 |
- |
连接到主机时要使用的代理主机。 |
|
否 |
- |
连接到主机时要使用的代理端口。 |
|
否 |
10s |
建立 HTTP 连接的超时时间。如果在此时间内无法建立连接,则输入将超时并失败。 |
|
否 |
10s |
从 HTTP 连接读取数据的超时时间。如果在此时间内未收到响应,则输入将超时并失败。 |
|
否 |
- |
HTTP 请求正文。正文可以是静态文本或包含 |
|
否 |
- |
要从输入响应中提取并用作有效负载的 JSON 密钥数组。在输入生成大型响应的情况下,这可用于筛选要用作有效负载的响应的相关部分。 |
|
否 |
json |
响应正文将包含的预期内容类型。支持的值为 |
在指定 path
、params
、headers
和 body
值时,您可以引用执行上下文中的以下变量:
名称 | 描述 |
---|---|
|
当前正在执行的监视器的 ID。 |
|
此监视器开始执行的时间。 |
|
此监视器被触发的 时间。 |
|
此监视器应该被触发的 时间。 |
|
与监视器关联的任何元数据。 |