【问题标题】:How do you get logstash to output to elasticsearch on a private ip?你如何让logstash输出到私有IP上的elasticsearch?
【发布时间】:2016-02-08 22:41:06
【问题描述】:

很遗憾,Logstash 没有尝试通过正确的 IP 地址输出到 Elasticsearch。 Elasticsearch 配置在端口 9200 上的私有 IP 地址。Logstash 正在尝试在 localhost:9200 输出到 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 以在 PRIVATE_IP_ADDRESS:9200 而不是 localhost:92000 输出到 Elasticsearch?

【问题讨论】:

  • 您能否指出您是如何安装logstash(rpm、deb、tarball)以及如何启动它的?顺便说一句,我强烈建议您更改 elasticsearch 集群名称,因为连接到同一个 LAN 的任何伙伴都可能加入您的集群。
  • 我使用 rpm 安装 Logstash。谢谢你的建议。我现在就这样做。

标签: curl elasticsearch configuration logstash elastic-stack


【解决方案1】:

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

【讨论】:

  • 你会怎么做呢?我将 /etc/sysconfig/logstash 更改为如下所示:# Set a home directory LS_HOME=/opt/logstash # Arguments to pass to logstash agent LS_OPTS="" # logstash configuration directory LS_CONF_DIR=/opt/logstash/conf.d KILL_ON_STOP_TIMEOUT=0 我还从 /opt/logstash 目录运行了 bin/logstash -f /opt/logstash/conf.d/logstash.conf --debug,并且没有错误。
  • 你可以在你知道应该失败的错误配置中验证logstash是否仍在运行。
【解决方案2】:

只需对您的 conf 文件使用以下 sn-p 即可。

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

【讨论】:

  • hosts 字段是一个表,我怀疑这是正确的语法。
【解决方案3】:

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

以下是我为解决此问题而运行的命令: ps -ef | grep logstash sudo kill EACH_PID sudo kill -9 PID_THAT_WASNT_KILLED_BEFORE sudo /etc/init.d/logstash start

【讨论】:

    【解决方案4】:

    如果您使用 RPM 安装,那么您的配置应该位于 /etc/logstash/conf.d/ 下。

    所以试着把你提到的文件(opt/logstash/conf.d/logstash.conf)移动到/etc/logstash/conf.d目录然后重启你的logstash服务并检查一下。

    【讨论】:

      猜你喜欢
      • 2012-12-09
      • 2017-09-06
      • 2022-09-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多