4
votes

I'm currently trying to run Lostash with the following config file:

input { 
    stdin { } 
} 
output { 
    rabbitmq { 
        exchange => "test_exchange" 
        exchange_type => "fanout" 
        host => "172.17.x.x" 
    } 
}

I do however get an error:

logstash agent --configtest -f -config.conf

gives me:

Error: Expected one of #, } at line 1, column 105 (byte 105) after output { rabbitmq { exchange => test_exchange exchange_type => fanout host => 172.17

It seems that logstash has the problem when I put an IP-like address in the host field. What is wrong with my config?

2
You probably have some garbage character at the end of your file (or wherever offset 105 ends up). If I copy the config file snippet above into a new file Logstash is happy with it. Feeding your file to hexdump -C should make the mistake easy to spot. - Magnus Bäck
Nop, I still have the same problem, even after having recreated the file from scratch or used the -e option. - Heschoon
Okay, seems that it had something to do with the way I created the config.conf; I was using an echo "content" > config.conf, but the problem is that I surround a text containing double quotes with double quotes... Surrounding the contents by single quotes when creating the config.conf file did solve my problem. - Heschoon

2 Answers

6
votes

The whole problem was in the method you used when created the config.conf file.

You were using the following command:

echo "input {stdin{}} output{rabbitmq{exchange=>"test_exchange" exchange_type =>"fanout" host=>"172.17.x.x"}}"

Surrounding a string containing double quotes with double quotes isn't a good idea...

By using single quotes around the string, the problem is solved...

echo 'input {stdin{}} output{rabbitmq{exchange=>"test_exchange" exchange_type =>"fanout" host=>"172.17.x.x"}}'
0
votes

The real problem is that logstash doesn't report access problems to the configuration file correctly. Here is the issue on github:

https://github.com/elastic/logstash/issues/2571

Simply check access permissions and you'll be set.