【问题标题】:Logstash for Vagrant: Address already in useVagrant 的 Logstash:地址已在使用中
【发布时间】:2017-03-13 15:19:25
【问题描述】:

我有一个 Vagrant 图像,其中有一个应用程序;如果您调用端口2401 并根据您想要的服务调用特定地址(即“curl -X GET http://127.0.0.1:2401/provider/ipfix”),则可以在 Vagrant 映像中访问它。为了在 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}"
  }
}

【问题讨论】:

    标签: vagrant logstash bind vagrantfile elastic-stack


    【解决方案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 URL。

    【讨论】:

    • 你说得对,这就是我想要的。你的提议似乎是一个合法的解决方案。我现在不能尝试,我会尽快尝试,我会更新。非常感谢!
    猜你喜欢
    • 2018-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    • 1970-01-01
    • 1970-01-01
    • 2015-10-30
    相关资源
    最近更新 更多