使用 Postman 模拟 ELK Beat 输出到 Logstash

Mock an ELK Beat output to Logstash with Postman

我有将数据发送到 logstash 的 Elastic Beats(如 metricbeat 和 auditbeat)。出于测试目的,我想模拟一些从节拍到 logstash 输入的数据。

我在 beats(yaml 配置文件)中使用 logstash 输出插件:

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

和 logstash 中的 beats 输入插件(.conf 管道配置文件):

input {
    beats {
        port => "5044"
    }
}

我天真地假设 beats 通过 HTTP 请求与 logstash 通信,所以我使用 Postman 向 logstash 发出 POST 请求,但我得到了一个 InvalidFrameProtocolException:无效的 beats 协议版本 logstash 错误。

我试图用 wireshark 检查数据包以查看原始数据包的格式,但我只能看到 TCP 数据包,没有 HTTP 协议。我想插件不会通过 HTTP 请求进行通信。

有没有更专业的人对此发表评论?有没有办法通过邮递员将节拍输出数据模拟到 logstash?

感谢@leandrojmp,我知道节拍和 logstash 通过 lumberjack 协议而不是 HTTP 进行通信。

我最终使用了 http logstash 输入插件,这样我就可以通过邮递员模拟我的节拍事件。虽然我没有修改我原来的管道配置文件,但我使用了 logstash 的能力来加载几个管道配置文件。 所以我用我的 http 插件和一些过滤器创建了另一个 logstash 管道配置文件以删除 http 特定数据,如“header”字段:

input {
    stdin { }
    http {
        port => "8081"
    }
}

filter {
    mutate {
        remove_field => ["headers"]
    }
}

当我想启动 logstash 进行测试时,我可以加载这两个文件,方法是将它们放在同一目录中:

bin/logstash -f logstash.d/*.conf

或者在我不测试时只是原始配置文件:

bin/logstash -f logstash.d/pipeline.conf