Logstash:HTTP 过滤器介绍

在我们使用 Logstash 的时候,我们有时有没有想到去使用 REST 调用请求另外一个微服务呢?这样我们可以得到更多的数据了。在 Elastic 的官方发布中,我们可以在地址 https://www.elastic.co/guide/en/logstash/current/filter-plugins.html 找到目前所有的过滤器。在这里面有一个叫做 http 的过滤器

在今天的文章中,我将使用一个例子来展示如何使用这个 http 的过滤器。

我将使用如下的 REST API 接口来做展示:

http://api.map.baidu.com/telematics/v3/weather?location=beijing&output=json&ak=DdzwVcsGMoYpeg5xQlAFrXQt

如上所示,它是一个百度天气的接口。在上面我们把 beijing 换成其他的城市,我们就可以得到那个城市的天气情况。

根据以上的接口,我们创建如下的 Logstash 的配置文件:

http.conf

input {
    generator {
       message => "beijing"
       count => 1
    }
}

filter {
    http {
        body_format => "json"
        follow_redirects => false
        url => "http://api.map.baidu.com/telematics/v3/weather?location=%{[message]}&output=json&ak=DdzwVcsGMoYpeg5xQlAFrXQt"
        verb => "GET"
        headers => [ "Content-Type", "application/json" ]
        target_body => "weather"
   }
}

output {
    stdout {
    codec => rubydebug
    }
}

在上面,我们使用 generator 来生产一个事件。我们使用 http 过滤器来发送请求。

使用 Logstash 来运行上面的配置文件:

 ./bin/logstash -f http.conf 

 显示的结果是:

我们接下来可以使用任何其它的 filter 来对这个数据做更进一步的加工。这里就不再详述了。

另外,在社区里,我也看到了一个类似功能的插件 https://github.com/lucashenning/logstash-filter-rest。它也可以完成类似的工作。如果你想试一下的话,请按照上面的步骤进行操作,由于这个插件不是来自 Elastic 的,你需要进行单独的安装。

猜你喜欢

转载自blog.csdn.net/UbuntuTouch/article/details/107906377