我有一个 docker logstash 配置如下:
input {
tcp {
port => 5000
}
}
output {
elasticsearch {
hosts => ["https://my-custom-elastic.com:9321"]
预期:
我希望logstash连接到https://my-custom-elastic.com:9321而不是http://elasticsearch:9200/
实际:
100% 可重现,我收到此错误:
[2023-08-18T06:11:35,099][INFO ][logstash.licensechecker.licensereader] Elasticsearch pool URLs updated {:changes=>{:removed=>[], :added=>[http://elasticsearch:9200/]}}
[2023-08-18T06:11:35,409][INFO ][logstash.licensechecker.licensereader] Failed to perform request {:message=>"elasticsearch: Name or service not known", :exception=>Manticore::ResolutionFailure, :cause=>java.net.UnknownHostException: elasticsearch: Name or service not known}
[2023-08-18T06:11:35,415][WARN ][logstash.licensechecker.licensereader] Attempted to resurrect connection to dead ES instance, but got an error {:url=>"http://elasticsearch:9200/", :exception=>LogStash::Outputs::ElasticSearch::HttpClient::Pool::HostUnreachableError, :message=>"Elasticsearch Unreachable: [http://elasticsearch:9200/][Manticore::ResolutionFailure] elasticsearch: Name or service not known"}
[2023-08-18T06:11:35,599][INFO ][logstash.licensechecker.licensereader] Failed to perform request {:message=>"elasticsearch", :exception=>Manticore::ResolutionFailure, :cause=>java.net.UnknownHostException: elasticsearch}
我确信logstash正在选择正确的配置,因为在这个错误之后,几行之后,它确实连接到了我预期的目的地。
问题:
为什么即使我配置了自定义主机,logstash 仍会尝试连接到本地主机?
遇到同样的问题,发现几篇文章表明它来自默认打开的logstash x-pack监控,请参见此处:https://discuss.elastic.co/t/logstash-outputs-elasticsearch-正在尝试连接到另一个elasticsearch/101526/5 对我有用的解决方案是输入 xpack.monitoring.enabled:logstash.yml 中为 false。