HTTP 过滤器插件编辑

  • 插件版本:v1.5.1
  • 发布日期:2024-01-11
  • 变更日志

有关其他版本,请参阅 版本化插件文档.

获取帮助编辑

如果您对插件有任何疑问,请在 Discuss 论坛中发布主题。对于错误或功能请求,请在 Github 中创建问题。有关 Elastic 支持的插件列表,请参阅 Elastic 支持矩阵.

描述编辑

HTTP 过滤器提供与外部 Web 服务/REST API 的集成。

与 Elastic Common Schema (ECS) 的兼容性编辑

该插件包含根据 ECS 兼容性模式 更改的合理默认值。当针对 ECS 版本时,标头设置为 @metadata,并且 target_body 是一个必需选项。请参阅 target_bodytarget_headers.

HTTP 过滤器配置选项编辑

此插件支持以下配置选项,以及后面描述的 通用选项

设置 输入类型 必需

body

字符串、数组或哈希

body_format

字符串

ecs_compatibility

字符串

headers

哈希

query

哈希

target_body

字符串

target_headers

字符串

url

字符串

verb

字符串

还有一些与 HTTP 连接相关的配置选项

设置 输入类型 必需

automatic_retries

数字

cacert

有效的文件系统路径

已弃用

client_cert

有效的文件系统路径

已弃用

client_key

有效的文件系统路径

已弃用

connect_timeout

数字

cookies

布尔值

follow_redirects

布尔值

keepalive

布尔值

keystore

有效的文件系统路径

已弃用

keystore_password

password

已弃用

keystore_type

字符串

已弃用

password

password

pool_max

数字

pool_max_per_route

数字

proxy

字符串

request_timeout

数字

retry_non_idempotent

布尔值

socket_timeout

数字

ssl_certificate

路径

ssl_certificate_authorities

路径列表

ssl_cipher_suites

字符串列表

ssl_keystore_password

password

ssl_keystore_path

路径

ssl_keystore_type

字符串

ssl_supported_protocols

字符串

ssl_truststore_password

password

ssl_truststore_path

路径

ssl_truststore_type

字符串

ssl_verification_mode

字符串,其中之一为 ["full", "none"]

truststore

有效的文件系统路径

已弃用

truststore_password

password

已弃用

truststore_type

字符串

已弃用

user

字符串

validate_after_inactivity

数字

另请参阅 通用选项,了解所有过滤器插件支持的选项列表。

 

body编辑

要发送的 HTTP 请求的主体。

body 作为 json 发送的示例

http {
  body => {
    "key1" => "constant_value"
    "key2" => "%{[field][reference]}"
  }
  body_format => "json"
}

body_format编辑

  • 值类型可以是 "json""text"
  • 默认值为 "text"

如果设置为 "json" 并且 body数组哈希 类型,则主体将被序列化为 JSON。否则,它将按原样发送。

ecs_compatibility编辑

  • 值类型是 字符串
  • 支持的值为

    • disabled:不使用与 ECS 兼容的字段名称(例如,响应标头默认情况下会针对 headers 字段)
    • v1v8:避免可能与 Elastic Common Schema (ECS) 冲突的字段名称(例如,标头将作为元数据添加)
  • 默认值取决于运行的 Logstash 版本

    • 当 Logstash 提供 pipeline.ecs_compatibility 设置时,其值将用作默认值
    • 否则,默认值为 disabled

控制此插件与 Elastic Common Schema (ECS) 的兼容性。此设置的值会影响 target_bodytarget_headers默认值。

headers编辑

  • 值类型是 哈希
  • 没有默认值

要在请求中发送的 HTTP 标头。标头名称及其值都可以引用事件字段中的值。

query编辑

  • 值类型是 哈希
  • 没有默认值

定义要在 HTTP 请求中发送的查询字符串参数(键值对)。

target_body编辑

  • 值类型是 哈希
  • 默认值取决于是否启用了 ecs_compatibility

    • ECS 兼容性已禁用:`"[body]"
    • ECS 兼容性已启用:没有默认值,需要显式指定

定义用于放置 HTTP 响应主体的目标字段。

target_headers编辑

  • 值类型是 哈希
  • 默认值取决于是否启用了 ecs_compatibility

    • ECS 兼容性已禁用:"[headers]"
    • ECS 兼容性已启用:"[@metadata][filter][http][response][headers]"

定义用于放置 HTTP 响应标头的目标字段。

url编辑

要发送请求的 URL。该值可以从事件字段中获取。

verb编辑

  • 值类型可以是 "GET""HEAD""PATCH""DELETE""POST""PUT"
  • 默认值为 "GET"

要用于 HTTP 请求的动词。

HTTP 过滤器连接选项编辑

automatic_retries编辑

  • 值类型是 数字
  • 默认值为 1

客户端应重试失败 URL 的次数。我们强烈建议在启用 keepalive 时不要将此值设置为零。某些服务器会错误地过早结束 keepalive,需要重试!注意:如果设置了 retry_non_idempotent,则只重试 GET、HEAD、PUT、DELETE、OPTIONS 和 TRACE 请求。

cacert编辑

在 1.5.0 中已弃用。

已替换为 ssl_certificate_authorities

  • 值类型是 路径
  • 此设置没有默认值。

如果您需要使用自定义 X.509 CA(.pem 证书),请在此处指定该证书的路径

client_cert编辑

在 1.5.0 中已弃用。

已替换为 ssl_certificate

  • 值类型是 路径
  • 此设置没有默认值。

如果您想使用客户端证书(注意,大多数人都不想这样做),请在此处设置 x509 证书的路径

client_key编辑

在 1.5.0 中已弃用。

已替换为 ssl_key

  • 值类型是 路径
  • 此设置没有默认值。

如果您使用的是客户端证书,请在此处指定加密密钥的路径

connect_timeoutedit

  • 值类型是 数字
  • 默认值为 10

建立连接的超时时间(以秒为单位)。默认值为 10s

cookiesedit

  • 值类型为 boolean
  • 默认值为 true

启用 cookie 支持。启用后,客户端将在请求之间保留 cookie,就像普通网页浏览器一样。默认情况下启用

follow_redirectsedit

  • 值类型为 boolean
  • 默认值为 true

是否应跟随重定向?默认值为 true

keepaliveedit

  • 值类型为 boolean
  • 默认值为 true

启用此选项以启用 HTTP keepalive 支持。我们强烈建议将 automatic_retries 设置为至少 1,以修复与损坏的 keepalive 实现的交互。

keystoreedit

在 1.5.0 中已弃用。

已替换为 ssl_keystore_path

  • 值类型是 路径
  • 此设置没有默认值。

如果您需要使用自定义密钥库 (.jks),请在此处指定。这与 .pem 密钥不兼容!

keystore_passwordedit

在 1.5.0 中已弃用。

已替换为 ssl_keystore_password

  • 值类型为 password
  • 此设置没有默认值。

在此处指定密钥库密码。请注意,大多数使用 keytool 创建的 .jks 文件都需要密码!

keystore_typeedit

在 1.5.0 中已弃用。

已替换为 ssl_keystore_type

在此处指定密钥库类型。可以是 JKSPKCS12。默认值为 JKS

passwordedit

  • 值类型为 password
  • 此设置没有默认值。

与用户名一起用于 HTTP 身份验证的密码。

pool_maxedit

  • 值类型是 数字
  • 默认值为 50

最大并发连接数。默认值为 50

pool_max_per_routeedit

  • 值类型是 数字
  • 默认值为 25

到单个主机的最大并发连接数。默认值为 25

proxyedit

  • 值类型是 字符串
  • 此设置没有默认值。

如果您想使用 HTTP 代理。这支持多种配置语法

  1. 代理主机格式:http://proxy.org:1234
  2. 代理主机格式:{host => "proxy.org", port => 80, scheme => 'http', user => 'username@host', password => 'password'}
  3. 代理主机格式:{url => 'http://proxy.org:1234', user => 'username@host', password => 'password'}

request_timeoutedit

  • 值类型是 数字
  • 默认值为 60

整个请求的超时时间(以秒为单位)。

retry_non_idempotentedit

  • 值类型为 boolean
  • 默认值为 false

如果启用了 automatic_retries,这将导致非幂等 HTTP 动词(如 POST)被重试。

socket_timeoutedit

  • 值类型是 数字
  • 默认值为 10

等待套接字上的数据超时时间(以秒为单位)。默认值为 10s

ssl_certificateedit

  • 值类型是 路径
  • 此设置没有默认值。

用于对客户端进行身份验证的 SSL 证书。此证书应为 OpenSSL 风格的 X.509 证书文件。

仅当设置了 ssl_key 时,才能使用此设置。

ssl_certificate_authoritiesedit

  • 值类型为 path 列表
  • 此设置没有默认值

用于验证服务器证书的 .cer 或 .pem CA 文件。

ssl_cipher_suitesedit

  • 值类型为 string 列表
  • 此设置没有默认值

要使用的密码套件列表,按优先级列出。支持的密码套件因 Java 和协议版本而异。

ssl_keyedit

  • 值类型是 路径
  • 此设置没有默认值。

ssl_certificate 对应的 OpenSSL 风格的 RSA 私钥。

仅当设置了 ssl_certificate 时,才能使用此设置。

ssl_keystore_passwordedit

  • 值类型为 password
  • 此设置没有默认值。

设置密钥库密码

ssl_keystore_pathedit

  • 值类型是 路径
  • 此设置没有默认值。

用于向服务器呈现证书的密钥库。它可以是 .jks.p12

ssl_keystore_typeedit

  • 值可以是以下任何一个:jkspkcs12
  • 如果未提供,则将从密钥库文件名推断出该值。

密钥库文件的格式。它必须是 jkspkcs12

ssl_supported_protocolsedit

  • 值类型是 字符串
  • 允许的值为:'TLSv1.1''TLSv1.2''TLSv1.3'
  • 默认值取决于所使用的 JDK。在最新的 Logstash 中,默认值为 ['TLSv1.2', 'TLSv1.3']'TLSv1.1' 不被认为是安全的,仅为旧版应用程序提供。

建立与 HTTP 端点连接时要使用的允许 SSL/TLS 版本列表。

对于 Java 8,'TLSv1.3' 仅从 8u262(AdoptOpenJDK)开始受支持,但要求您在 Logstash 中设置 LS_JAVA_OPTS="-Djdk.tls.client.protocols=TLSv1.3" 系统属性。

如果您将插件配置为在任何最新的 JVM(例如 Logstash 附带的 JVM)上使用 'TLSv1.1',则该协议默认情况下处于禁用状态,需要通过更改 $JDK_HOME/conf/security/java.security 配置文件中的 jdk.tls.disabledAlgorithms 来手动启用。也就是说,需要从列表中删除 TLSv1.1

ssl_truststore_passwordedit

  • 值类型为 password
  • 此设置没有默认值。

设置信任库密码

ssl_truststore_pathedit

  • 值类型是 路径
  • 此设置没有默认值。

用于验证服务器证书的信任库。它可以是 .jks.p12

ssl_truststore_typeedit

  • 值可以是以下任何一个:jkspkcs12
  • 如果未提供,则将从信任库文件名推断出该值。

信任库文件的格式。它必须是 jkspkcs12

ssl_verification_modeedit

  • 值类型是 字符串
  • 支持的值为:fullnone
  • 默认值为 full

控制服务器证书的验证。 full 选项验证提供的证书是否由受信任的颁发机构 (CA) 签名,以及服务器的主机名(或 IP 地址)是否与证书中标识的名称匹配。

none 设置不执行服务器证书的任何验证。此模式会禁用 SSL/TLS 的许多安全优势,应谨慎考虑后才使用。它主要用作尝试解决 TLS 错误时的临时诊断机制。强烈建议不要在生产环境中使用 none

truststoreedit

在 1.5.0 中已弃用。

已替换为 ssl_truststore_path

  • 值类型是 路径
  • 此设置没有默认值。

如果您需要使用自定义信任库 (.jks),请在此处指定。这与 .pem 证书不兼容!

truststore_passwordedit

在 1.5.0 中已弃用。

已替换为 ssl_truststore_password

  • 值类型为 password
  • 此设置没有默认值。

在此指定信任库密码。请注意,大多数使用 keytool 创建的 .jks 文件都需要密码!

truststore_typeedit

在 1.5.0 中已弃用。

已替换为 ssl_truststore_type

在此指定信任库类型。可以选择 JKSPKCS12。默认值为 JKS

useredit

  • 值类型是 字符串
  • 此设置没有默认值。

用于所有请求的 HTTP 身份验证用户名。请注意,您也可以为每个 URL 设置此选项。如果您设置了此选项,则还必须设置 password 选项。

validate_after_inactivityedit

  • 值类型是 数字
  • 默认值为 200

在检查过时连接以确定是否需要保持活动请求之前等待的时间。如果您经常遇到连接错误,请考虑将此值设置为低于默认值,甚至设置为 0。

此客户端基于 Apache Commons。以下是 Apache Commons 文档 对此选项的描述:“定义在将持久连接租赁给消费者之前必须重新验证的非活动时间(以毫秒为单位)。传递给此方法的非正值将禁用连接验证。此检查有助于检测在保持非活动状态时已变得过时的(半关闭)连接。”

通用选项edit

以下配置选项受所有过滤器插件支持

add_fieldedit

  • 值类型为 哈希
  • 默认值为 {}

如果此过滤器成功,则将任何任意字段添加到此事件。字段名称可以是动态的,并使用 %{field} 包含事件的一部分。

示例

    filter {
      http {
        add_field => { "foo_%{somefield}" => "Hello world, from %{host}" }
      }
    }
    # You can also add multiple fields at once:
    filter {
      http {
        add_field => {
          "foo_%{somefield}" => "Hello world, from %{host}"
          "new_field" => "new_static_value"
        }
      }
    }

如果事件具有字段 "somefield" == "hello",则此过滤器在成功时将添加字段 foo_hello(如果存在),其值为上述值,并且 %{host} 部分将替换为事件中的该值。第二个示例还将添加一个硬编码字段。

add_tagedit

  • 值类型为 数组
  • 默认值为 []

如果此过滤器成功,则将任意标签添加到事件。标签可以是动态的,并使用 %{field} 语法包含事件的一部分。

示例

    filter {
      http {
        add_tag => [ "foo_%{somefield}" ]
      }
    }
    # You can also add multiple tags at once:
    filter {
      http {
        add_tag => [ "foo_%{somefield}", "taggedy_tag"]
      }
    }

如果事件具有字段 "somefield" == "hello",则此过滤器在成功时将添加标签 foo_hello(第二个示例当然会添加 taggedy_tag 标签)。

enable_metricedit

禁用或启用此特定插件实例的指标日志记录。默认情况下,我们会记录所有可以记录的指标,但您可以禁用特定插件的指标收集。

idedit

  • 值类型为 字符串
  • 此设置没有默认值。

在插件配置中添加一个唯一的 ID。如果未指定 ID,Logstash 将生成一个。强烈建议您在配置中设置此 ID。当您有两个或多个相同类型的插件时,这尤其有用,例如,如果您有两个 http 过滤器。在这种情况下,添加一个命名 ID 将有助于在使用监控 API 时监控 Logstash。

    filter {
      http {
        id => "ABC"
      }
    }

id 字段中的变量替换仅支持环境变量,不支持使用来自密钥存储的值。

periodic_flushedit

以定期间隔调用过滤器刷新方法。可选。

remove_fieldedit

  • 值类型为 数组
  • 默认值为 []

如果此过滤器成功,则从此事件中删除任意字段。字段名称可以是动态的,并使用 %{field} 示例包含事件的一部分

    filter {
      http {
        remove_field => [ "foo_%{somefield}" ]
      }
    }
    # You can also remove multiple fields at once:
    filter {
      http {
        remove_field => [ "foo_%{somefield}", "my_extraneous_field" ]
      }
    }

如果事件具有字段 "somefield" == "hello",则此过滤器在成功时将删除名为 foo_hello 的字段(如果存在)。第二个示例将删除一个额外的非动态字段。

remove_tagedit

  • 值类型为 数组
  • 默认值为 []

如果此过滤器成功,则从事件中删除任意标签。标签可以是动态的,并使用 %{field} 语法包含事件的一部分。

示例

    filter {
      http {
        remove_tag => [ "foo_%{somefield}" ]
      }
    }
    # You can also remove multiple tags at once:
    filter {
      http {
        remove_tag => [ "foo_%{somefield}", "sad_unwanted_tag"]
      }
    }

如果事件具有字段 "somefield" == "hello",则此过滤器在成功时将删除标签 foo_hello(如果存在)。第二个示例也将删除一个令人沮丧的、不必要的标签。