Problem with Logstash 2.4 with elasticsearch output

Hey guys,

I'm just getting started with the ELK stack and have some problems testing Logstash with Elasticsearch.

I run a fresh fedora 24 installation and already installed Elasticsearch 2.4 on it. The curl test on localhost looks good.
Now I installed Logstash 2.4 through dnf.
I used https://packages.elastic.co/logstash/2.4/centos for the repo.

The first test worked:

bin/logstash -e 'input { stdin { } } output { stdout {} }'

The test with codec => rubydebug worked as well.

But when I'm trying to run it with elasticsearch

bin/logstash -e 'input { stdin { } } output { elasticsearch { host = localhost } }'

I get the following error message:

fetched an invalid config {:config=>"input { stdin { } } output { elasticsearch { host = localhost } }", :reason=>"Expected one of #, => at line 1, column 51 (byte 51) after output { elasticsearch { host ", :level=>:error}

When I run tail on the /var/log/logstash/logstash.log I can see the following message

:timestamp=>"2016-09-07T12:05:34.408000+0200", :message=>"No config files found: /etc/logstash/conf.d/*\nCan you make sure this path is a logstash config file?", :level=>:error

Which is true, /etc/logstash/conf.d has no configuration files at all and there is no configuration folder in /opt/logstash either.

Am I supposed to create the configuration files my self or am I doing something wrong here? Any ideas?

Should be host => "localhost".

I tried this too.

The version with only "host = localhost" is out of the book I'm currently using.

with => the error message looks like this:

Settings: Default pipeline workers: 4
Pipeline aborted due to error {:exception=>"LogStash::ConfigurationError", :backtrace=>["/opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-core-2.4.0-java/lib/logstash/config/mixin.rb:88:in config_init'", "org/jruby/RubyHash.java:1342:in each'", "/opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-core-2.4.0-java/lib/logstash/config/mixin.rb:72:in config_init'", "/opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-core-2.4.0-java/lib/logstash/outputs/base.rb:79:in initialize'", "/opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-core-2.4.0-java/lib/logstash/output_delegator.rb:74:in register'", "/opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-core-2.4.0-java/lib/logstash/pipeline.rb:181:in start_workers'", "org/jruby/RubyArray.java:1613:in each'", "/opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-core-2.4.0-java/lib/logstash/pipeline.rb:181:in start_workers'", "/opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-core-2.4.0-java/lib/logstash/pipeline.rb:136:in run'", "/opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-core-2.4.0-java/lib/logstash/agent.rb:491:in start_pipeline'"], :level=>:error}
stopping pipeline {:id=>"main"}

Should be host => "localhost".

Actually, either is fine. However, as of Logstash 2.0 it's hosts and not host.

That worked, I'm only on page 15 and already that's the second function that doesn't even work any more, maybe I should stick to the online reference.

Anyway thanks for the help guys :slight_smile:

Then it's wrong. You should always cross check with the docs :slight_smile: