我试图运行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对此也没有选择。我如何使用代理?
发布于 2014-10-01 12:39:40
事情很简单,一旦你知道最后一切都是简单的Java.
换句话说,Logstash使用Java的系统属性来完成这项工作。那么剩下的唯一一部分就是知道如何指定它。使用环境变量LS_JAVA_OPTS可以完成以下任务:
SET LS_JAVA_OPTS=-Dhttp.proxyHost=proxy.local -Dhttp.proxyPort=1337
logstash ...这种方法的缺点是,所有输出只能有一个代理。不可能只对一个输出使用代理,也不可能对不同的输出使用不同的代理。
发布于 2020-01-13 13:47:38
LS_JAVA_OPTS="-Dhttp.proxyHost=... -Dhttp.proxyPort=..."将使用java.net堆栈产生任何效果(ES输出碰巧使用的是apache的http客户端--并不总是这样,可能会发生变化)
对于输出,人们应该更喜欢在插件上设置proxy => ...:
output {
elasticsearch {
hosts => 'es.host:9300'
proxy => "${ES_PROXY:}"
}
}https://stackoverflow.com/questions/26136461
复制相似问题