Logstash for Vagrant:地址已在使用中

时间:2017-03-13 15:19:25

标签: vagrant logstash bind vagrantfile elastic-stack

我有一张Vagrant图像,其中有一个应用程序;如果您调用端口2401,则可以在Vagrant映像中访问它,并根据您需要的服务调用特定地址(即“curl -X GET http://127.0.0.1:2401/provider/ipfix”)。要在Vagrant机器外检索输出,我在Vagrant文​​件("config.vm.network :forwarded_port, guest: 2401, host: 8080“)中设置了端口转发,因此使用主机中的命令”curl -X GET http://127.0.0.1:8080/provider/ipfix“获得相同的输出。

我现在正处于安装 Logstash 的阶段。我的问题是,当我使用配置文件运行 Logstash 时,我收到错误“地址已在使用中”。我尝试使用字段来指导特定输出。下面是我的 Logstash 配置文件。你会建议什么解决方法?

input {
 tcp {
    host => localhost
    port => 8080
    add_field => {
     "field1" => "provider"
     "field2" => "ipfix"
        } 
    codec => netflow {
      versions => [10]
      target => ipfix
    }
    type => ipfix
  }
}

output {
 stdout { codec => rubydebug }

  elasticsearch {
    index => "IPFIX-logstash-%{+YYYY.MM.dd}"
  }
}

1 个答案:

答案 0 :(得分:1)

如果我正在读这个,你希望Logstash使用TCP连接到localhost:8080来获取它将处理的信息。

这不是这个输入的作用。这会在127.0.0.1:8080上创建侦听器,因此有关“已在使用中”的错误消息非常正确。

考虑到您使用curl作为获取此数据的示例,我建议the http_poller plugin更适合您想要的内容。

input {
  http_poller {
    urls => {
      IPFIX => "http://127.0.0.1:8080/provider/ipfix"
    }
    request_timeout => 30
    schedule => { "every" => "5s" }
    add_tags => [ 'ipfix' ]
  }
}

这将使用GET请求每隔5秒点击已知工作的CURL网址。