我编写了一个logstash程序来将一些消息发布到URL。 Logstash 没有错误,但我想知道是否有一种方法可以捕获我们使用 http 输出插件发布的 url 的响应?
output {
stdout {
codec => json_lines
}
http{
url => "Rest URl"
http_method => "post"
format => "json"
headers => {"Authorization" => "%{pass}"}
}
}
我已经浏览了文档,但没有找到与之相关的任何内容。 如果这是一个愚蠢的问题,请原谅我。
最佳答案
没有愚蠢的问题;-)
不幸的是,无法从 http
获得任何响应输出插件。仅当您收到状态代码为 <200
的 HTTP 响应时,它才会记录错误。或>299
或者如果在调用过程中出现异常(例如,因为远程服务器已关闭)。
这样做的原因是因为无论如何都无法使用响应,因为输出是任何 Logstash 管道中的最后一步,并且输出不会相互通信。
您需要的是一个 HTTP 过滤器插件,该插件在输入之后和输出之前执行。您很幸运,因为存在这样的一个,并且在https://github.com/elastic/logstash/issues/3489中有描述。
elastic/logstash 人员已经认识到对此的需求,并且正在开发更多 generic lookup filter不仅仅是 HTTP。
关于Logstash 从 http 输出插件捕获 http 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39897198/