2016-02-08 142 views
2

不幸的是,Logstash不会尝试在正确的IP地址输出到Elasticsearch。 Elasticsearch配置在端口9200上的私有IP地址.Logstash正尝试在localhost:9200处输出到Elasticsearch。这显示在下面的日志中。如何让logstash输出到privatesearch上的elasticsearch?

{:timestamp=>"2016-02-08T16:27:58.572000-0500", :message=>"Attempted to send a bulk request to Elasticsearch configured at '[\"http://localhost:9200/\"]', but Elasticsearch appears to be unreachable or down!", :client_config=>{:hosts=>["http://localhost:9200/"], :ssl=>nil, :transport_options=>{:socket_timeout=>0, :request_timeout=>0, :proxy=>nil, :ssl=>{}}, :transport_class=>Elasticsearch::Transport::Transport::HTTP::Manticore, :logger=>nil, :tracer=>nil, :reload_connections=>false, :retry_on_failure=>false, :reload_on_failure=>false, :randomize_hosts=>false}, :error_message=>"Connection refused", :class=>"Manticore::SocketException", :level=>:error} 

我的配置文件如下: /etc/elasticsearch/elasticsearch.yml

network.host: PRIVATE_IP_ADDRESS 

/opt/logstash/conf.d/logstash.conf

input { 
    beats { 
    port => 5044 
    } 
} 

output { 
    elasticsearch { 
    hosts => ["PRIVATE_IP_ADDRESS:9200"] 
    manage_template => false 
    index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}" 
    document_type => "%{[@metadata][type]}" 
    } 
} 

我有/etc/logstash/conf.d/logstash.conf中的相同文件,因为我不知道在哪里放置logstash配置文件。

当我运行curl PRIVATE_IP_ADDRESS:9200,我得到下面的输出

{ 
    "name" : "Gabriel Summers", 
    "cluster_name" : "elasticsearch", 
    "version" : { 
    "number" : "2.1.1", 
    "build_hash" : "40e2c53a6b6c2972b3d13846e450e66f4375bd71", 
    "build_timestamp" : "2015-12-15T13:05:55Z", 
    "build_snapshot" : false, 
    "lucene_version" : "5.3.1" 
    }, 
    "tagline" : "You Know, for Search" 
} 

如何配置Logstash输出到Elasticsearch在PRIVATE_IP_ADDRESS:9200不是本地主机:92000?

+0

您能指出您是如何安装logstash(rpm,deb,tarball)以及如何启动它的?顺便说一下,我强烈建议您更改elasticsearch集群名称,因为连接到相同LAN的任何伙伴都可能加入您的集群。 – devlearn

+0

我用rpm来安装Logstash。谢谢你的建议。我现在要做。 –

回答

0

事实证明,当我重新启动logstash时,所有进程都没有被终止。我的配置文件不是问题。

这里是我跑了解决这个命令: ps -ef | grep logstash sudo kill EACH_PID sudo kill -9 PID_THAT_WASNT_KILLED_BEFORE sudo /etc/init.d/logstash start

0

我会仔细检查logstash实际上是否使用该配置文件。

+0

你会怎么做呢? 我改变了我的/ etc/SYSCONFIG/logstash看起来像下面这样: '#设置一个主目录 LS_HOME = /选择/ logstash #参数传递给logstash剂 LS_OPTS = “” #logstash配置目录 LS_CONF_DIR = /选择/ logstash/conf.d KILL_ON_STOP_TIMEOUT = 0' 我也跑'斌/ logstash -f /opt/logstash/conf.d/logstash.conf --debug'从到/ opt/logstash目录并且没有错误。 –

+0

您可以验证logstash在您将一些错误的配置置入之后仍在运行,因为您知道该配置会失败。 – kkwoker

0

只需使用follwing代码片段给你的conf文件,它会工作。

output { 
    elasticsearch { 
    hosts => "PRIVATE_IP_ADDRESS:9200" 
    } 
} 
+0

hosts字段是一个表,我怀疑这是正确的语法。 – devlearn

0

如果使用RPM安装那么你的配置应该/etc/logstash/conf.d/下进行定位。

因此,请尝试将您提到的文件(opt/logstash/conf.d/logstash.conf)移动到/etc/logstash/conf.d目录中,然后重新启动logstash服务并检出它。