使用 Ingest Pipeline 进行解析

编辑

使用 Ingest Pipeline 进行解析

编辑

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

加载 Ingest Pipeline

在安装 Filebeat 的系统上,使用指定的 --pipelines 选项运行 setup 命令以加载特定模块的 Ingest Pipeline。例如,以下命令加载 system 和 nginx 模块的 Ingest Pipeline:

filebeat setup --pipelines --modules nginx,system

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

配置 Logstash 以使用 Pipeline

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

这是一个示例配置,它从 Beats 输入读取数据并使用 Filebeat Ingest Pipeline 解析模块收集的数据

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 以根据事件中传递的元数据选择正确的 Ingest Pipeline。

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

有关完整示例,请参阅 示例:设置 Filebeat 模块以与 Kafka 和 Logstash 协同工作