Logstash 输出设置

编辑

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

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

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

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

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

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

以下 Logstash pipeline 定义只是一个示例。在 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 指南中的预配置设置了解更多信息。

代理

选择 Elastic Agent 用于连接到 Logstash 的代理 URL。要了解有关代理配置的信息,请参阅将代理服务器与 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 达成所需的最大等待时间。如果设置为 0s,事件会立即提供给输出。

默认值: 10s

slow_start

(boolean) 如果设置为 true,则每次事务只传输一批事件中的一个子集。如果未遇到错误,要发送的事件数量会增加到 bulk_max_size。发生错误时,每次事务的事件数量会再次减少。

默认值: false

timeout

(string) 在超时之前等待来自 Logstash 服务器的响应的秒数。

默认值: 30s

ttl

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

默认值: 0(关闭此功能)

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

worker

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

默认值: 1