【问题标题】:How to use logstash plugin - logstash-input-http如何使用logstash插件-logstash-input-http
【发布时间】:2016-09-22 21:59:37
【问题描述】:

我正在探索 Logstash 以接收 HTTP 上的输入。我已经使用以下方式安装了 http 插件:

插件安装 logstash-input-http

安装成功。然后我尝试使用以下命令运行logstash:

logstash -e '输入 {http {port => 8900}} 输出 {stdout{codec => ruby​​debug}}'

但是 logstash 终止时没有给出任何错误。

不知道如何验证插件是否安装正确。以及如何使用 http 插件来测试一个示例请求。

提前致谢!

【问题讨论】:

  • 该配置在 Logstash 2.3.2 上对我来说很好用。尝试使用--debug 标志启动logstash,然后您可以查看HTTP 输入是否被正确初始化。同时运行plugin list 以查看http 插件是否出现在列表中。
  • @Val - 运行插件列表显示可用的 http 插件。但是,虽然使用--debug 选项启动logstash 不会导致任何结果,但它仍然会终止而没有任何错误。我正在使用 Logstash 2.3.1 版本。我尝试下载 2.3.2 zip 版本,但看不到“bin”文件夹。这两个版本有没有结构上的变化。
  • 不,据我所知,2.3.2 版本具有相同的结构。你能用你看到的--debug 日志更新你的问题吗?您的端口 8900 是否可能已经绑定到其他进程?

标签: logstash


【解决方案1】:

如果您从同一个域执行以下操作就足够了。

input {
    http {
    port => 5043
  }
}
output {
    file {
        path => "/log_streaming/my_app/app.log"
    }
}

如果你想在网站的不同域上执行请求,那么你需要设置一些响应头

input {
    http {
    port => 5043
    response_headers => {
      "Access-Control-Allow-Origin" => "*"
      "Content-Type" => "text/plain"
      "Access-Control-Allow-Headers" => "Origin, X-Requested-With, Content-Type, 
       Accept"
    }
  }
}
output {
    file {
       path => "/log_streaming/my_app/app.log"
    }
}

【讨论】:

    【解决方案2】:

    我能够通过使用 .conf 文件而不是命令行参数来解决问题。

    我创建了一个类似于下面的 http-pipeline.conf 文件:

    input {
     http {
        host => "0.0.0.0"
        port => "8080"
      }
    }
    
    output {
        stdout {}
    }
    

    然后像这样执行Logstash:

    logstash -f http-pipeline.conf
    

    使用 POSTMAN 工具,我向 Logstash 发送了一个带有示例字符串的 POST 请求 (http://localhost:8080),瞧,它出现在 Logstash 控制台上。

    【讨论】:

      猜你喜欢
      • 2020-05-06
      • 2017-06-29
      • 2017-07-26
      • 1970-01-01
      • 2016-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多