配置 Logstash 输出编辑

Logstash 输出通过使用基于 TCP 的 lumberjack 协议将事件直接发送到 Logstash。Logstash 允许对生成的事件进行额外的处理和路由。

先决条件

要将事件发送到 Logstash,您还需要创建一个 Logstash 配置管道,该管道监听来自 Beats 的传入连接并将接收到的事件索引到 Elasticsearch 中。有关更多信息,请参阅Logstash 入门。另请参阅 Beats 输入Elasticsearch 输出 插件的文档。

如果希望使用 Logstash 对 Packetbeat 收集的数据进行额外处理,则需要将 Packetbeat 配置为使用 Logstash。

为此,请编辑 Packetbeat 配置文件以通过注释掉 Elasticsearch 输出来禁用它,并通过取消注释 Logstash 部分来启用 Logstash 输出

output.logstash:
  hosts: ["127.0.0.1:5044"]

The hosts option specifies the Logstash server and the port (5044) where Logstash is configured to listen for incoming Beats connections.

对于此配置,您必须 手动将索引模板加载到 Elasticsearch 中,因为自动加载模板的选项仅适用于 Elasticsearch 输出。

访问元数据字段编辑

发送到 Logstash 的每个事件都包含以下元数据字段,您可以在 Logstash 中使用它们进行索引和过滤

{
    ...
    "@metadata": { 
      "beat": "packetbeat", 
      "version": "8.14.3" 
    }
}

Packetbeat 使用 @metadata 字段将元数据发送到 Logstash。有关 @metadata 字段的更多信息,请参阅Logstash 文档

默认值为 packetbeat。若要更改此值,请在 Packetbeat 配置文件中设置index 选项。

Packetbeat 的当前版本。

您可以从 Logstash 配置文件内部访问此元数据,以根据元数据内容动态设置值。

例如,以下 Logstash 配置文件告诉 Logstash 使用 Packetbeat 报告的索引将事件索引到 Elasticsearch 中

input {
  beats {
    port => 5044
  }
}

output {
  elasticsearch {
    hosts => ["https://127.0.0.1:9200"]
    index => "%{[@metadata][beat]}-%{[@metadata][version]}" 
    action => "create"
  }
}

%{[@metadata][beat]} 将索引名称的第一部分设置为 beat 元数据字段的值,而 %{[@metadata][version]} 将第二部分设置为 Beat 的版本。例如:packetbeat-8.14.3

使用此处所示的 Logstash 配置索引到 Elasticsearch 的事件将类似于 Packetbeat 直接索引到 Elasticsearch 的事件。

如果未使用 ILM,请将 index 设置为 %{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd},以便 Logstash 根据来自 Beats 的事件的 @timestamp 值每天创建一个索引。

兼容性编辑

此输出适用于所有与之兼容的 Logstash 版本。请参阅Elastic 支持矩阵

配置选项编辑

您可以在 packetbeat.yml 配置文件的 logstash 部分指定以下选项

enabled编辑

enabled 配置是一个布尔值设置,用于启用或禁用输出。如果设置为 false,则输出将被禁用。

默认值为 true

hosts编辑

要连接到的已知 Logstash 服务器列表。如果禁用负载均衡,但配置了多个主机,则会随机选择一个主机(没有优先级)。如果一个主机变得不可达,则会随机选择另一个主机。

此列表中的所有条目都可以包含端口号。如果没有给出数字,则将使用默认端口号 5044。

compression_level编辑

gzip 压缩级别。将此值设置为 0 将禁用压缩。压缩级别必须在 1(最佳速度)到 9(最佳压缩)之间。

提高压缩级别会减少网络使用量,但会增加 CPU 使用量。

默认值为 3。

escape_html编辑

配置对字符串中 HTML 的转义。设置为 true 以启用转义。

默认值为 false

workerworkers编辑

每个配置的主机向 Logstash 发布事件的工作进程数。这最好与负载均衡模式一起使用。示例:如果您有 2 个主机和 3 个工作进程,则总共启动 6 个工作进程(每个主机 3 个)。

loadbalance编辑

loadbalance: true 设置时,Packetbeat 将连接到所有配置的主机并通过所有连接并行发送数据。如果连接失败,数据将发送到剩余的主机,直到可以重新建立连接。只要 Packetbeat 可以连接到至少一个配置的主机,数据就会继续发送。

loadbalance: false 设置时,Packetbeat 将一次发送数据到一个主机。目标主机是随机从配置的主机列表中选择的,所有数据都会发送到该目标主机,直到连接失败,才会选择新的目标主机。只要 Packetbeat 可以连接到至少一个配置的主机,数据就会继续发送。若要随时间推移在配置的主机列表中轮换,请将此选项与 ttl 设置一起使用,以便在配置的时间间隔内关闭连接并选择新的目标主机。

默认值为 false

output.logstash:
  hosts: ["localhost:5044", "localhost:5045"]
  loadbalance: true
  index: packetbeat

ttl编辑

与 Logstash 建立连接的生存时间,在此时间之后连接将重新建立。在 Logstash 主机代表负载均衡器时很有用。由于与 Logstash 主机的连接是粘性的,因此在负载均衡器后运行可能会导致实例之间负载分配不均。在连接上指定 TTL 允许在实例之间实现平等的连接分配。指定 TTL 为 0 将禁用此功能。

默认值为 0。此设置接受持续时间 数据类型值。

“ttl” 选项在异步 Logstash 客户端(具有“pipelining”选项设置的客户端)上尚不支持。

pipelining编辑

配置异步发送到 Logstash 的批次数量,同时等待来自 Logstash 的 ACK。输出仅在写入 pipelining 批次的数量后才变为阻塞。如果配置的值为 0,则管道将被禁用。默认值为 2。

proxy_url编辑

连接到 Logstash 服务器时要使用的 SOCKS5 代理的 URL。该值必须是方案为 socks5:// 的 URL。与 Logstash 通信的协议不是基于 HTTP 的,因此无法使用 Web 代理。

如果 SOCKS5 代理服务器需要客户端身份验证,则可以将用户名和密码嵌入到 URL 中,如示例所示。

使用代理时,主机名将在代理服务器上解析,而不是在客户端上解析。您可以通过设置proxy_use_local_resolver 选项来更改此行为。

output.logstash:
  hosts: ["remote-host:5044"]
  proxy_url: socks5://user:password@socks5-proxy:2233

proxy_use_local_resolver编辑

The proxy_use_local_resolver option determines if Logstash hostnames are resolved locally when using a proxy. The default value is false, which means that when a proxy is used the name resolution occurs on the proxy server.

index编辑

要写入事件的索引根名称。默认值为 Beat 名称。例如,"packetbeat" 会生成 "[packetbeat-]8.14.3-YYYY.MM.DD" 索引(例如,"packetbeat-8.14.3-2017.04.26")。

此参数的值将被分配给 metadata.beat 字段。然后可以在 Logstash 的输出部分以 %{[@metadata][beat]} 的形式访问它。

ssl编辑

SSL 参数的配置选项,例如 Logstash 连接的根 CA。有关更多信息,请参阅SSL。要使用 SSL,您还必须将Logstash 的 Beats 输入插件 配置为使用 SSL/TLS。

timeout编辑

等待 Logstash 服务器响应的秒数,超时之前。默认值为 30(秒)。

max_retries编辑

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

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

默认值为 3。

bulk_max_size编辑

在一个 Logstash 请求中批量包含的最大事件数。默认值为 2048。

事件可以收集到批次中。Packetbeat 将分割从队列中读取的比 bulk_max_size 更大的批次,分成多个批次。

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

bulk_max_size 设置为小于或等于 0 的值将禁用批处理的拆分。当禁用拆分时,队列会决定批处理中包含的事件数量。

slow_start编辑

如果启用,每次事务只会传输一批事件中的部分事件。如果未遇到错误,将要发送的事件数量将增加到 bulk_max_size。出现错误时,每次事务的事件数量将再次减少。

默认值为 false

backoff.init编辑

网络错误后尝试重新连接到 Logstash 之前等待的秒数。等待 backoff.init 秒后,Packetbeat 会尝试重新连接。如果尝试失败,则回退计时器将指数级增加到 backoff.max。成功连接后,回退计时器将重置。默认值为 1 秒。

backoff.max编辑

网络错误后尝试连接到 Logstash 之前等待的最大秒数。默认值为 60 秒。