为Logstash配置代理服务器

时间:2014-10-01 07:43:00

标签: proxy elasticsearch logstash

我尝试运行Logstash以通过代理将输出发送到Elasticsearch。据我所知,输出没有配置允许我指定代理。目前我使用:

output {
  elasticsearch {
    protocol => "http"
    host => "es-dev.local"
    port => "9200"
    index => "logstash-analysis-%{+YYYY.MM.dd}"
    flush_size => "200"
    workers => "2"
    template_name => "logstash_per_index"
  }
}

elasticsearch_http也没有选择权。我如何使用代理?

2 个答案:

答案 0 :(得分:5)

一旦你知道最终它只是普通的Java ......事情就很简单了......

换句话说,Logstash使用Java的系统属性来实现这一目的。然后唯一剩下的就是知道如何指定它。使用环境变量LS_JAVA_OPTS可以解决问题:

SET LS_JAVA_OPTS=-Dhttp.proxyHost=proxy.local -Dhttp.proxyPort=1337
logstash ...

这种方法的缺点是所有输出只能有一个代理。不能仅将代理用于一个输出,或者对不同的输出使用不同的代理。

答案 1 :(得分:0)

新答案,因为对于LS> = 7.x(6.5),上一个答案不再正确

LS_JAVA_OPTS="-Dhttp.proxyHost=... -Dhttp.proxyPort=..."不适用于ES输出。

对于输出,应该只使用插件上的proxy => ...设置:

output {
  elasticsearch {
    hosts => 'es.host:9300'
    proxy => "${ES_PROXY:}"
  }
}

更新后的 logstash-output-elasticsearch 插件也可能适用于旧版LS