使用提取管道进行解析编辑

当您将 Filebeat 模块与 Logstash 一起使用时,您可以使用 Filebeat 提供的提取管道来解析数据。您需要将管道加载到 Elasticsearch 中,并将 Logstash 配置为使用它们。

加载提取管道

在安装了 Filebeat 的系统上,运行带有 --pipelines 选项的 setup 命令,以加载特定模块的提取管道。例如,以下命令加载系统和 nginx 模块的提取管道

filebeat setup --pipelines --modules nginx,system

此设置步骤需要连接到 Elasticsearch,因为 Filebeat 需要将提取管道加载到 Elasticsearch 中。如有必要,您可以在运行命令之前暂时禁用已配置的输出并启用 Elasticsearch 输出。

将 Logstash 配置为使用管道

在安装了 Logstash 的系统上,创建一个 Logstash 管道配置,该配置从 Logstash 输入(例如 Beats 或 Kafka)读取数据并将事件发送到 Elasticsearch 输出。将 Elasticsearch 输出中的 pipeline 选项设置为 %{[@metadata][pipeline]},以使用您之前加载的提取管道。

以下示例配置从 Beats 输入读取数据,并使用 Filebeat 提取管道解析模块收集的数据

input {
  beats {
    port => 5044
  }
}

output {
  if [@metadata][pipeline] {
    elasticsearch {
      hosts => "https://061ab24010a2482e9d64729fdb0fd93a.us-east-1.aws.found.io:9243"
      manage_template => false
      index => "%{[@metadata][beat]}-%{[@metadata][version]}" 
      action => "create" 
      pipeline => "%{[@metadata][pipeline]}" 
      user => "elastic"
      password => "secret"
    }
  } else {
    elasticsearch {
      hosts => "https://061ab24010a2482e9d64729fdb0fd93a.us-east-1.aws.found.io:9243"
      manage_template => false
      index => "%{[@metadata][beat]}-%{[@metadata][version]}" 
      action => "create"
      user => "elastic"
      password => "secret"
    }
  }
}

如果在您的配置中禁用了数据流,请将 index 选项设置为 %{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}。默认情况下启用数据流。

如果您在配置中禁用了数据流的使用,则可以删除此设置,或根据需要将其设置为不同的值。

配置 Logstash 以根据事件中传递的元数据选择正确的提取管道。

有关设置和运行模块的更多信息,请参阅 Filebeat 模块 文档。

有关完整示例,请参阅 示例:设置 Filebeat 模块以使用 Kafka 和 Logstash