Elastic Serverless Forwarder 输入插件

编辑

Elastic Serverless Forwarder 输入插件

编辑
  • 插件版本:v0.1.5
  • 发布日期:2024-09-12
  • 更新日志

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

获取帮助

编辑

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

描述

编辑

使用此输入,您可以通过 http(s) 连接从 Elastic Serverless Forwarder 接收事件到配置的 port

最小配置

编辑
启用 SSL 禁用 SSL
input {
  elastic_serverless_forwarder {
    port => 8080
    ssl_certificate => "/path/to/logstash.crt"
    ssl_key => "/path/to/logstash.key"
  }
}
input {
  elastic_serverless_forwarder {
    port => 8080
    ssl_enabled => false
  }
}

丰富化

编辑

此输入提供事件的最小丰富化,并避免包含有关自身、接收数据的客户端或从请求解码的原始事件的信息。

建议发送者注意 在 Logstash 中保留的字段。ESF 默认发送 Logstash 要求的 @timestamp 字段,但如果此值缺失,则会填充当前时间。

安全性

编辑

此插件默认启用 SSL。

至少,您需要配置插件以呈现其身份,或禁用 SSL。

此外,您可能希望使用 SSL 客户端身份验证来验证客户端,和/或使用下面描述的 HTTP 基本身份验证来验证请求。

SSL 身份

编辑

为了与客户端建立 SSL 连接,此输入插件需要提供客户端信任的 SSL 证书,并有权访问关联的密钥。这些可以通过 ssl_certificatessl_key 和可选的 ssl_key_passphrase 进行配置。

SSL 客户端身份验证

编辑

默认情况下,此插件在 SSL 协商期间不会向客户端请求证书。

可以使用 ssl_client_authentication 将其配置为请求或要求客户端证书,这通常还需要使用受信任的 ssl_certificate_authorities 列表进行配置。验证提供的证书时,ssl_verification_mode 控制证书的验证方式。

ESF 目前不支持呈现客户端证书,因此,仅当与 SSL 终止代理结合使用时,请求或要求客户端呈现身份才有用。

SSL 高级配置

编辑

此插件公开了几个高级 SSL 配置

HTTP 基本身份验证

编辑

您可以通过配置 auth_basic_usernameauth_basic_password 来配置此插件以使用 HTTP 基本身份验证来验证请求。

基本身份验证不能替代 SSL,因为它本身既不提供保密性也不提供安全性。当禁用 SSL 时,HTTP 基本凭据实际上以明文传输,并且很容易被攻击者恢复。

将 Elastic Serverless Forwarder 与 Elasticsearch 输出一起使用

编辑

以下是将 Elastic Serverless Forwarder 输入配置为与 elasticsearch 输出一起使用的一些技巧

  • 将 Elastic Serverless Forwarder 输入与 Elasticsearch 输出插件 一起使用时,请在输出配置中设置 document_id

    output {
      elasticsearch {
          ...
          document_id => "%{[@metadata][_id]}"
          ...
      }
    }
  • 从 Elastic Serverless Forwarder 的 1.10.0 版本开始,配置如上例所示的 document_id 就足够了(_id 字段不再可用,而是 Logstash 现在接收 @metadata._id 字段)。
  • 对于 Elastic Serverless Forwarder v1.9.0 及更早版本,使用过滤器将字段 _id 重命名为 @metadata._id

    filter {
        # support ESF < 1.10
        if [_id] and ![@metadata][_id] {
          mutate { rename => { "_id" => "[@metadata][_id]" } }
        }
    }

Elastic Serverless Forwarder 输入配置选项

编辑

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

 

ssl_enabled

编辑
  • 布尔值

ssl_key

有效的文件系统路径

编辑

ssl_key_passphrase

字符串

编辑

ssl_verification_mode

字符串["certificate"] 中的一个

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

auth_basic_password

值类型为密码

编辑

此设置没有默认值。

HTTP 基本授权的密码。需要 auth_basic_username

基本授权的用户名。需要 auth_basic_password

host

默认值为 "0.0.0.0" (所有可用接口)

编辑
  • 要绑定的主机或 IP

port

值类型为数字

编辑
  • 默认值为 8080
  • 要绑定的 TCP 端口

ssl

在 0.1.3 中已弃用。

已替换为 ssl_enabled

编辑

默认值为 true

事件默认通过 SSL 发送,这需要配置此插件以使用 ssl_certificate 呈现身份证书,并使用 ssl_key 呈现密钥。

您可以使用 +ssl => false+ 禁用 SSL。

ssl_certificate

编辑
  • 值类型为路径

    • 要使用的 SSL 证书。此证书必须为 PEM 格式,并且可以包含一个证书链,该证书链从标识自身的证书开始,后跟零个或多个有序的中间证书,可以选择以根签名机构结束。如果客户端的配置允许他们信任我们的中间证书之一,则提供完整的链允许客户端信任我们的证书。
    • ssl_certificate_authorities
    • 值类型为数组
  • 默认值为 []

默认情况下,服务器不执行任何客户端身份验证。这意味着,当启用 SSL 时,来自客户端的连接是私有的,但这种输入将允许来自任何客户端的 SSL 连接。如果您希望配置此插件以拒绝来自不受信任主机的连接,则需要配置此插件以验证客户端身份,并且可能还需要使用 ssl_certificate_authorities 列表进行配置。

ssl_enabled

编辑

默认情况下,事件通过 SSL 发送,这需要配置此插件以使用 ssl_certificate 提供身份证书,并使用 ssl_key 提供密钥。

您可以使用 +ssl_enabled => false+ 禁用 SSL。

ssl_handshake_timeout

编辑
  • 默认值为 10000

不完整的 SSL 握手超时时间(以毫秒为单位)

事件默认通过 SSL 发送,这需要配置此插件以使用 ssl_certificate 呈现身份证书,并使用 ssl_key 呈现密钥。

ssl_key

编辑
  • 要绑定的主机或 IP

要使用的 SSL 密钥。

此密钥需要采用 PKCS8 格式,您可以使用 OpenSSL 进行转换,以获取更多信息。

ssl_key_passphrase

编辑
  • 布尔值

要使用的 SSL 密钥密码。

ssl_supported_protocols

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

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

事件默认通过 SSL 发送,这需要配置此插件以使用 ssl_certificate 呈现身份证书,并使用 ssl_key 呈现密钥。

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

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

ssl_verification_mode

编辑
  • 目前仅支持一种模式

    • certificate:验证客户端提供的证书是否由受信任的机构 (CA) 签名、是否在其有效日期范围内,以及客户端是否拥有相关密钥,但执行主机名验证。
  • 默认值为 certificate

ssl_client_authentication 导致客户端出示证书时,此设置控制如何验证该证书。

客户端身份通常不使用 SSL 进行验证,因为接收服务器只能访问客户端的出站 IP,该 IP 并不总是恒定的,并且通常不以证书的主题或 subjectAltNames 扩展的形式表示。有关更多信息,请参阅 RFC2818 § 3.2 (HTTP over TLS — Client Identity)

通用选项

编辑

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

设置 输入类型 必需

add_field

hash

enable_metric

数字

id

字符串

tags

ssl_certificate

type

字符串

add_field

编辑
  • 值类型是 hash
  • 默认值为 {}

向事件添加一个字段

enable_metric

编辑

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

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

input {
  elastic_serverless_forwarder {
    id => "my_plugin_id"
  }
}

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

tags

编辑

向事件添加任意数量的标签。

这可以帮助稍后进行处理。

type

编辑

向此输入处理的所有事件添加一个 type 字段。

类型主要用于过滤器激活。

类型作为事件本身的一部分存储,因此您也可以使用类型在 Kibana 中搜索它。

如果您尝试在已经有类型的事件上设置类型(例如,当您将事件从 shipper 发送到 indexer 时),则新的输入不会覆盖现有类型。在 shipper 设置的类型会保留在事件的整个生命周期中,即使发送到另一个 Logstash 服务器也是如此。