示例:设置 Filebeat 模块以与 Kafka 和 Logstash 协同工作

编辑

示例:设置 Filebeat 模块以与 Kafka 和 Logstash 协同工作编辑

本节介绍如何在发布管道中使用 Kafka 将 Filebeat 与 Logstash 连接时,如何设置 Filebeat 模块。本示例的主要目标是展示如何从 Filebeat 加载摄取管道并在 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. 运行 setup 命令,并指定 --pipelines--modules 选项以加载您已启用的模块的摄取管道。此步骤还需要连接到 Elasticsearch。如果您想使用 Logstash 管道而不是摄取节点来解析数据,请跳过此步骤。

    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 管道编辑

  1. 在安装了 Logstash 的系统上,创建一个 Logstash 管道配置,该配置从 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 根据事件中传递的元数据选择正确的摄取管道。

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

    bin/logstash -f mypipeline.conf

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

可视化数据编辑

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