Http 输出插件

编辑
  • 插件版本:v5.7.1
  • 发布日期:2024-11-18
  • 更新日志

对于其他版本,请参阅版本化插件文档

获取帮助

编辑

有关插件的问题,请在Discuss论坛中开一个主题。对于错误或功能请求,请在Github中打开一个 issue。有关 Elastic 支持的插件列表,请参阅Elastic 支持矩阵

描述

编辑

此输出插件允许您将事件发送到通用的 HTTP(S) 端点。

此输出插件将并行执行最多 pool_max 个请求以提高性能。在调整此插件以获得最佳性能时,请考虑这一点。

此外,请注意,当使用并行执行时,不能保证事件的严格排序!

请注意,此 gem 尚不支持编解码器。目前请使用 format 选项。

重试策略

编辑

此输出插件具有两个级别的重试:库级别和插件级别。

库级别重试

编辑

库级别重试适用于与 IO 相关的故障。不可重试的错误包括 SSL 相关问题、无法解析的主机、连接问题以及在请求期间发生的 OS/JVM 级别的中断。

库级别重试的选项是

  • automatic_retries。控制插件在库级别发生故障后应重试的次数。
  • retry_non_idempotent。设置为 false 时,将重试 GET、HEAD、PUT、DELETE、OPTIONS 和 TRACE 请求。

插件级别重试

编辑

插件级别重试的选项是

  • retry_failed。设置为 true 时,对于retryable_codes选项中定义的 HTTP 错误响应代码(429、500、502、503、504)和可重试的异常(套接字超时/错误、DNS 解析失败和客户端协议异常),插件将无限期重试。
  • retryable_codes。设置触发重试的 http 响应代码。

retry_failed 选项不控制库级别重试。

Http 输出配置选项

编辑

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

设置 输入类型 必需

automatic_retries

数字

cacert

有效的 文件系统路径

已弃用

client_cert

有效的 文件系统路径

已弃用

client_key

有效的 文件系统路径

已弃用

connect_timeout

数字

content_type

字符串

cookies

布尔值

follow_redirects

布尔值

format

字符串,可以是 ["json", "json_batch", "form", "message"] 中的一个

headers

哈希

http_compression

布尔值

http_method

字符串,可以是 ["put", "post", "patch", "delete", "get", "head"] 中的一个

ignorable_codes

数字

keepalive

布尔值

keystore

有效的 文件系统路径

已弃用

keystore_password

password

已弃用

keystore_type

字符串

已弃用

mapping

哈希

message

字符串

pool_max

数字

pool_max_per_route

数字

proxy

<<,>>

request_timeout

数字

retry_failed

布尔值

retry_non_idempotent

布尔值

retryable_codes

数字

socket_timeout

数字

ssl_certificate

路径

ssl_certificate_authorities

路径列表

ssl_cipher_suites

字符串列表

ssl_enabled

布尔值

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

字符串

已弃用

url

字符串

validate_after_inactivity

数字

另请参阅通用选项,以获取所有输出插件支持的选项列表。

 

automatic_retries

编辑
  • 值类型为数字
  • 默认值为 1

客户端应重试失败的 URL 的次数。如果启用了keepalive 选项,我们建议将此选项设置为零以外的值。某些服务器错误地提前结束了 keepalive,需要重试。有关更多信息,请参阅重试策略

cacert

编辑

在 5.6.0 中已弃用。

ssl_certificate_authorities替换

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

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

client_cert

编辑

在 5.6.0 中已弃用。

ssl_certificate 替换

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

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

client_key

编辑

在 5.6.0 中已弃用。

ssl_key 替换

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

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

connect_timeout

编辑
  • 值类型为数字
  • 默认值为 10

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

content_type

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

内容类型

如果未指定,则默认为以下内容

  • 如果 format 为 “json”,则为 “application/json”
  • 如果 format 为 “json_batch”,则为 “application/json”。每个 Logstash 事件批次将连接成一个数组,并在一个请求中发送。
  • 如果 format 为 “form”,则为 “application/x-www-form-urlencoded”

cookies

编辑

启用 cookie 支持。启用此功能后,客户端将像普通的 Web 浏览器一样在请求之间持久保存 cookie。默认情况下启用

follow_redirects

编辑

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

format

编辑
  • 值可以是以下任意一个:jsonjson_batchformmessage
  • 默认值为 "json"

设置 http 主体的格式。

如果为 json_batch,则此输出接收的每个事件批次都将放入一个 JSON 数组中,并在一个请求中发送。这对于高吞吐量场景(例如在 Logstash 实例之间发送数据)特别有用。

如果为 form,则主体将是将映射(或整个事件)转换为查询参数字符串,例如 foo=bar&baz=fizz...

如果为 message,则主体将是根据消息格式化事件的结果

否则,该事件将作为 json 发送。

headers

编辑
  • 值类型为哈希
  • 此设置没有默认值。

要使用的自定义标头,格式为 headers => ["X-My-Header", "%{host}"]

http_compression

编辑

启用请求压缩支持。启用此功能后,插件将使用 gzip 压缩 http 请求。

http_method

编辑
  • 这是一个必需的设置。
  • 值可以是以下任意一个:putpostpatchdeletegethead
  • 此设置没有默认值。

HTTP 动词。可以是 "put"、"post"、"patch"、"delete"、"get"、"head" 中的一个

ignorable_codes

编辑
  • 值类型为数字
  • 此设置没有默认值。

如果您希望将某些非 2xx 代码视为成功,请在此处枚举它们。返回这些代码的响应将被视为成功

keepalive

编辑

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

keystore

编辑

在 5.6.0 中已弃用。

ssl_keystore_path 替换

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

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

keystore_password

编辑

在 5.6.0 中已弃用。

ssl_keystore_password 替换

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

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

keystore_type

编辑

在 5.6.0 中已弃用。

已替换为 ssl_keystore_type

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

mapping

编辑
  • 值类型为哈希
  • 此设置没有默认值。

此选项允许您选择发送的事件的结构和部分。

例如

   mapping => {"foo" => "%{host}"
              "bar" => "%{type}"}

message

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

pool_max

编辑
  • 值类型为数字
  • 默认值为 50

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

pool_max_per_route

编辑
  • 值类型为数字
  • 默认值为 25

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

proxy

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

如果您想使用 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_timeout

编辑
  • 值类型为数字
  • 默认值为 60

此模块可以轻松地为 Logstash 添加一个基于 [Manticore](https://github.com/cheald/manticore) 的配置完整的 HTTP 客户端。有关其用法的示例,请参阅 https://github.com/logstash-plugins/logstash-input-http_poller。整个请求的超时时间(以秒为单位)

retry_failed

编辑

请注意,此选项仅控制插件级别的重试。它对库级别的重试没有影响。

如果您想禁用对 retryable_codes 中定义的 HTTP 错误响应代码或可重试的异常(Timeout、SocketException、ClientProtocolException、ResolutionFailure 和 SocketTimeout)的无限次重试,请将此选项设置为 false。有关更多信息,请参阅 重试策略

retry_non_idempotent

编辑

当此选项设置为 falseautomatic_retries 启用时,将重试 GET、HEAD、PUT、DELETE、OPTIONS 和 TRACE 请求。

当设置为 trueautomatic_retries 启用时,这将导致重试非幂等的 HTTP 动词(例如 POST)。有关更多信息,请参阅 重试策略

retryable_codes

编辑
  • 值类型为数字
  • 默认值为 [429, 500, 502, 503, 504]

如果插件遇到这些响应代码,插件将无限期重试。有关更多信息,请参阅 重试策略

socket_timeout

编辑
  • 值类型为数字
  • 默认值为 10

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

ssl_certificate

编辑
  • 值类型为路径
  • 此设置没有默认值。

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

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

ssl_certificate_authorities

编辑
  • 值类型是 路径 的列表
  • 此设置没有默认值

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

ssl_cipher_suites

编辑
  • 值类型是 字符串 的列表
  • 此设置没有默认值

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

ssl_enabled

编辑

启用 SSL/TLS 安全通信。对于其他 ssl_ 选项生效,它必须为 true

ssl_key

编辑
  • 值类型为路径
  • 此设置没有默认值。

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

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

ssl_keystore_password

编辑
  • 值类型为密码
  • 此设置没有默认值。

设置密钥库密码

ssl_keystore_path

编辑
  • 值类型为路径
  • 此设置没有默认值。

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

ssl_keystore_type

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

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

ssl_supported_protocols

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

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

对于 Java 8,仅自 8u262 (AdoptOpenJDK) 起才支持 'TLSv1.3',但需要在 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_password

编辑
  • 值类型为密码
  • 此设置没有默认值。

设置信任库密码

ssl_truststore_path

编辑
  • 值类型为路径
  • 此设置没有默认值。

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

ssl_truststore_type

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

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

ssl_verification_mode

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

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

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

truststore

编辑

在 5.6.0 中已弃用。

已替换为 ssl_truststore_path

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

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

truststore_password

编辑

在 5.6.0 中已弃用。

已替换为 ssl_truststore_password

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

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

truststore_type

编辑

在 5.6.0 中已弃用。

已替换为 ssl_truststore_type

在此处指定信任库类型。可以是 JKSPKCS12 之一。默认为 JKS

  • 这是一个必需的设置。
  • 值类型为字符串
  • 此设置没有默认值。

要使用的 URL

validate_after_inactivity

编辑
  • 值类型为数字
  • 默认值为 200

在使用 keepalive 的连接上执行请求之前,等待多长时间来检查连接是否过时。如果经常遇到连接错误,您可能需要将此值设置得更低,甚至可能设置为 0。引用 Apache commons 文档(此客户端基于 Apache Commmons):定义不活动时间段(以毫秒为单位),在此时间段之后,必须在将持久连接租借给使用者之前重新验证它们。传递给此方法的非正值会禁用连接验证。此检查有助于检测在池中保持不活动状态时已过时(半关闭)的连接。 有关更多信息,请参阅 这些文档

通用选项

编辑

所有输出插件都支持这些配置选项

设置 输入类型 必需

codec

codec

enable_metric

布尔值

id

字符串

codec

编辑
  • 值类型为 codec
  • 默认值为 "plain"

用于输出数据的编解码器。输出编解码器是一种方便的方法,可以在数据离开输出之前对其进行编码,而无需在 Logstash 管道中使用单独的过滤器。

enable_metric

编辑

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

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

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

output {
  http {
    id => "my_plugin_id"
  }
}

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