我尝试运行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
也没有选择权。我如何使用代理?
答案 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