Logstash 输出设置

编辑

指定这些设置以通过安全连接将数据发送到 Logstash。您还必须配置一个 Logstash 管道,该管道从 Elastic Agent 读取加密数据并将数据发送到 Elasticsearch。按照产品内的步骤配置 Logstash 管道。

在 Fleet 输出设置中,确保选择 Logstash 输出类型。

在使用 Logstash 输出之前,您需要确保对于任何已添加到您的 Elastic Agent 策略的集成,集成资产已安装在目标集群上。请参阅安装和卸载 Elastic Agent 集成资产,了解添加集成资产的步骤。

要了解如何生成证书,请参阅为 Logstash 输出配置 SSL/TLS

要在 Logstash 中接收事件,您还需要创建一个 Logstash 配置管道。Logstash 配置管道侦听传入的 Elastic Agent 连接,处理接收到的事件,然后将事件发送到 Elasticsearch。

以下示例配置了一个 Logstash 管道,该管道在端口 5044 上侦听传入的 Elastic Agent 连接,并将接收到的事件路由到 Elasticsearch。

下面的 Logstash 管道定义是一个示例。在 Fleet 输出页面中创建 Logstash 输出时,请参阅 需要额外的 Logstash 配置步骤。

input {
  elastic_agent {
    port => 5044
    enrich => none # don't modify the events' schema at all
    ssl => true
    ssl_certificate_authorities => ["<ca_path>"]
    ssl_certificate => "<server_cert_path>"
    ssl_key => "<server_cert_key_in_pkcs8>"
    ssl_verify_mode => "force_peer"
  }
}
output {
  elasticsearch {
    hosts => ["https://127.0.0.1:9200"] 
    # cloud_id => "..."
    data_stream => "true"
    api_key => "<api_key>" 
    data_stream => true
    ssl => true
    # cacert => "<elasticsearch_ca_path>"
  }
}

Elasticsearch 服务器和 Elasticsearch 运行的端口(9200)。

从 Fleet 中 Logstash 输出创建步骤获得的 API 密钥。

Logstash 主机

您的 Elastic Agent 将用于连接到 Logstash 的地址。使用 host:port 格式。单击 添加 行以指定其他 Logstash 地址。

示例

  • 192.0.2.0:5044
  • mylogstashhost:5044

有关默认端口和其他配置详细信息,请参阅Fleet Server 文档。

服务器 SSL 证书颁发机构

用于连接到 Logstash 的 CA 证书。这是用于为 Logstash 生成证书和密钥的 CA。复制并粘贴 CA 证书的全部内容。

此设置是可选的。

客户端 SSL 证书

为客户端生成的证书。复制并粘贴证书的全部内容。这是所有代理将用于连接到 Logstash 的证书。

在每个客户端都有唯一证书的情况下,可以将该证书的本地路径放置在此处。代理将在建立与 Logstash 的连接时选择该位置的证书。

客户端 SSL 证书密钥

为客户端生成的私钥。这必须是 PKCS 8 密钥。复制并粘贴证书密钥的全部内容。这是所有代理将用于连接到 Logstash 的证书密钥。

在每个客户端都有唯一证书密钥的情况下,可以将该证书密钥的本地路径放置在此处。代理将在建立与 Logstash 的连接时选择该位置的证书密钥。

为了防止未经授权的访问,证书密钥存储为秘密值。虽然建议使用秘密存储,但您可以选择覆盖此设置并将密钥作为纯文本存储在代理策略定义中。秘密存储需要 Fleet Server 版本 8.12 或更高版本。

请注意,此设置也可以存储为秘密值或纯文本,用于预配置的输出。请参阅 Kibana 指南中的预配置设置,了解更多信息。

代理

选择一个代理 URL,以便 Elastic Agent 连接到 Logstash。要了解代理配置,请参阅将代理服务器与 Elastic Agent 和 Fleet 结合使用

高级 YAML 配置

将添加到使用此输出的每个策略的 Logstash 输出部分的 YAML 设置。确保您指定有效的 YAML。UI 当前不提供验证。

有关可用设置的描述,请参阅高级 YAML 配置

使此输出成为代理集成的默认值

当此设置打开时,如果代理策略中没有设置其他输出,则 Elastic Agent 将使用此输出发送数据。

Fleet Server 或 APM 使用的策略中的代理集成不支持输出到 Logstash。

使此输出成为代理监控的默认值

当此设置打开时,如果代理策略中没有设置其他输出,则 Elastic Agent 将使用此输出发送代理监控数据

Fleet Server 或 APM 使用的策略中的代理监控不支持输出到 Logstash。

高级 YAML 配置

编辑
设置 描述

backoff.init

(字符串)在网络错误后尝试重新连接到 Logstash 之前等待的秒数。在等待 backoff.init 秒后,Elastic Agent 会尝试重新连接。如果尝试失败,则退避计时器会呈指数增长,直到 backoff.max。成功连接后,退避计时器将重置。

默认值: 1s

backoff.max

(字符串)在网络错误后尝试连接到 Elasticsearch 之前等待的最大秒数。

默认值: 60s

bulk_max_size

(整数)单个 Logstash 请求中要批量处理的最大事件数。

可以将事件收集到批次中。Elastic Agent 会将大于 bulk_max_size 的批次拆分为多个批次。

指定较大的批次大小可以通过降低发送事件的开销来提高性能。但是,较大的批次大小也会增加处理时间,这可能会导致 API 错误、连接被终止、发布请求超时,最终导致吞吐量降低。

将此值设置为 0 可关闭批次拆分。关闭拆分时,队列会确定批次中包含的事件数。

默认值: 2048

compression_level

(整数)gzip 压缩级别。将此值设置为 0 以禁用压缩。压缩级别必须在 1(最佳速度)到 9(最佳压缩)的范围内。

提高压缩级别会降低网络使用率,但会增加 CPU 使用率。

escape_html

(布尔值)配置字符串中 HTML 的转义。设置为 true 以启用转义。

默认值: false

index

(字符串)用于写入事件的索引根名称。

loadbalance

如果 true 且配置了多个 Logstash 主机,则输出插件会将发布的事件负载均衡到所有 Logstash 主机上。如果 false,则输出插件会将所有事件发送到一个主机(随机确定),如果选定的主机无响应,则切换到另一个主机。

启用 loadbalance 的情况下

  • Elastic Agent 读取批次的事件,并基于输出之间共享的工作队列,动态地将每个批次发送到一个 Logstash 工作程序。
  • 如果连接断开,Elastic Agent 会将其池中已断开连接的 Logstash 工作程序取出。
  • Elastic Agent 会尝试重新连接。如果成功,它会将 Logstash 工作程序重新添加到池中。
  • 如果其中一个 Logstash 节点速度较慢但“运行正常”,则它会发送保持活动信号,直到处理完整个批次的数据。这会阻止 Elastic Agent 发送更多数据,直到它收到 Logstash 的确认信号。Elastic Agent 会将所有事件保留在内存中,直到收到确认信号后。

禁用 loadbalance 的情况下

  • Elastic Agent 会随机选择一个 Logstash 主机,并将批次的事件发送到该主机。由于随机算法,Logstash 节点上的负载应该大致相等。
  • 如果发生任何错误,Elastic Agent 也会随机选择另一个 Logstash 节点。如果与主机的连接失败,则仅当新连接出现错误时才会重试该主机。

默认值: false

示例

outputs:
  default:
    type: logstash
    hosts: ["localhost:5044", "localhost:5045"]
    loadbalance: true

max_retries

(整数)在发布失败后重试发布事件的次数。在指定的重试次数之后,事件通常会被丢弃。

max_retries 设置为小于 0 的值,以重试直到发布所有事件。

默认值: 3

pipelining

(整数)在等待 Logstash 的 ACK 时异步发送到 Logstash 的批次数量。在写入指定数量的批次后,输出会变为阻塞。指定 0 可关闭管道。

默认值: 2

proxy_use_ local_resolver

(布尔值)确定在使用代理时是否在本地解析 Logstash 主机名。如果 false 并且使用了代理,则在代理服务器上进行名称解析。

默认值: false

queue.mem.events

队列可以存储的事件数量。此值应能被 queue.mem.flush.min_eventsbulk_max_size 中较小的值整除,以避免将部分批次发送到输出。

默认值: 3200 个事件

queue.mem.flush.min_events

flush.min_events 是一个旧参数,新的配置应优先使用 bulk_max_size 来控制批次大小。从 8.13 版本开始,使用 flush.min_events 而不是 bulk_max_size 来限制批次大小,在性能上没有任何优势。

默认值: 1600 个事件

queue.mem.flush.timeout

(int) 满足 queue.mem.flush.min_events 的最大等待时间。如果设置为 0 秒,事件将立即提供给输出。

默认值: 10 秒

slow_start

(boolean) 如果为 true,则每次事务仅传输一批事件中的一部分事件。如果未遇到错误,则要发送的事件数量将增加到 bulk_max_size。如果发生错误,则每次事务的事件数量将再次减少。

默认值: false

timeout

(string) 等待 Logstash 服务器响应的秒数,超过此时间将超时。

默认值: 30 秒

ttl

(string) 与 Logstash 的连接的生存时间,超过此时间后将重新建立连接。当 Logstash 主机代表负载均衡器时,此设置很有用。由于与 Logstash 主机的连接是粘性的,因此在负载均衡器之后操作可能会导致实例之间的负载分配不均。在连接上指定 TTL,以实现跨实例的均匀连接分配。

默认值: 0 (禁用此功能)

异步 Logstash 客户端(设置了 pipelining 选项的客户端)尚不支持 ttl 选项。

worker

(int) 每个配置的主机用于发布事件的工作线程数。示例:如果您有两个主机和三个工作线程,则总共启动六个工作线程(每个主机三个)。

默认值: 1