示例:设置 Filebeat 模块以与 Kafka 和 Logstash 配合使用

编辑

示例:设置 Filebeat 模块以与 Kafka 和 Logstash 配合使用

编辑

本节介绍如何在发布管道中使用 Kafka 将 Filebeat 和 Logstash 连接起来时,如何设置 Filebeat 模块 以与 Logstash 配合使用。此示例的主要目标是展示如何从 Filebeat 加载 Ingest Pipelines 并将其与 Logstash 一起使用。

本节中的示例显示了使用硬编码主题名称的简单配置。有关配置选项的完整列表,请参阅有关配置 Kafka 输入插件 的文档。另请参阅Filebeat 参考中的配置 Kafka 输出

设置和运行 Filebeat

编辑
  1. 如果您尚未设置 Filebeat 索引模板和 Kibana 示例仪表板,请立即运行 Filebeat setup 命令。

    filebeat -e setup

    -e 标志是可选的,它将输出发送到标准错误而不是 syslog。

    此一次性设置步骤需要连接到 Elasticsearch 和 Kibana,因为 Filebeat 需要在 Elasticsearch 中创建索引模板并将示例仪表板加载到 Kibana 中。有关配置与 Elasticsearch 连接的更多信息,请参阅 Filebeat 快速入门

    加载模板和仪表板后,您将看到消息 INFO {kib} dashboards successfully loaded. Loaded dashboards

  2. 运行 modules enable 命令以启用要运行的模块。例如:

    filebeat modules enable system

    您可以通过编辑 Filebeat modules.d 目录下的配置文件来进一步配置模块。例如,如果日志文件不在模块预期的位置,您可以设置 var.paths 选项。

    您必须在模块中启用至少一个文件集。文件集默认情况下处于禁用状态。

  3. 运行带有 --pipelines--modules 选项的 setup 命令以加载已启用的模块的 Ingest Pipelines。此步骤还需要连接到 Elasticsearch。如果您想使用 Logstash pipeline 而不是 Ingest Node 来解析数据,请跳过此步骤。

    filebeat setup --pipelines --modules system
  4. 配置 Filebeat 将日志行发送到 Kafka。为此,请在 filebeat.yml 配置文件中,通过注释将其禁用 Elasticsearch 输出,并启用 Kafka 输出。例如:

    #output.elasticsearch:
      #hosts: ["localhost:9200"]
    output.kafka:
      hosts: ["kafka:9092"]
      topic: "filebeat"
      codec.json:
        pretty: false
  5. 启动 Filebeat。例如:

    filebeat -e

    Filebeat 将尝试向 Logstash 发送消息,并在 Logstash 可用以接收消息之前继续。

    根据您安装 Filebeat 的方式,在尝试运行 Filebeat 模块时,您可能会看到与文件所有权或权限相关的错误。如果您遇到与文件所有权或权限相关的错误,请参阅Beats 平台参考中的配置文件所有权和权限

创建并启动 Logstash pipeline

编辑
  1. 在安装 Logstash 的系统上,创建一个 Logstash pipeline 配置,该配置从 Kafka 输入读取事件并将事件发送到 Elasticsearch 输出。

    input {
      kafka {
        bootstrap_servers => "myhost:9092"
        topics => ["filebeat"]
        codec => json
      }
    }
    
    output {
      if [@metadata][pipeline] {
        elasticsearch {
          hosts => "https://myEShost:9200"
          manage_template => false
          index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
          pipeline => "%{[@metadata][pipeline]}" 
          user => "elastic"
          password => "secret"
        }
      } else {
        elasticsearch {
          hosts => "https://myEShost:9200"
          manage_template => false
          index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
          user => "elastic"
          password => "secret"
        }
      }
    }

    pipeline 选项设置为 %{[@metadata][pipeline]}。此设置配置 Logstash 根据事件中传递的元数据选择正确的 Ingest Pipeline。

  2. 启动 Logstash,传入您刚刚定义的 pipeline 配置文件。例如:

    bin/logstash -f mypipeline.conf

    Logstash 应该启动一个 pipeline 并开始从 Kafka 输入接收事件。

可视化数据

编辑

要在 Kibana 中可视化数据,请通过将浏览器指向 5601 端口来启动 Kibana Web 界面。例如,http://127.0.0.1:5601。单击仪表板,然后查看 Filebeat 仪表板。