3

Я прихожу сюда после прочтения How to reference environment variables in logstash configuration file?.Переменная окружения в Logstash не анализируется правильно

К сожалению, это не сработало для меня. Я бегу:

bin/logstash -f my_filters.conf --debug 

И мой конфигурационный файл является:

input { 
file { 
     path => "/tmp/${RUN_ID}/*.txt" 
     start_position => beginning 
     sincedb_path => "/dev/null" 
     ignore_older => 0 
    } 
} 

output { 
elasticsearch { 
     hosts => [ "localhost:9200" ] 
     index => "${RUN_ID}" 
    } 
} 

И никакой новый индекс не создается. Это после настройки:

export RUN_ID=500 

Например.
Если я изменил свою конфигурацию на твердое значение (например, 500), тогда индекс создается без проблем.

Я прочитал documentation и упоминает именно то, что я делаю сейчас ...
Что я делаю не так, как я могу получить переменную рабочую среду?

+0

Какую версию logstash вы используете? Как вы запускаете logstash после установки переменной окружения? – Alcanzar

+0

Logstash 2.5, и я показал, как я начинаю logstash в самом вопросе. – Idos

+0

Согласно веб-сайту ES, он не показывает, что 2.5 является допустимым номером версии ... они идут от 2,4 до 5,0. Если вы используете 1.5, у него не было этой функции, так как она была введена в 2.3. – Alcanzar

ответ

4

Для выполнения замещений в среде Logstash 2.4 требуется аргумент командной строки --allow-env.

Без флага он не жалуется (но не работает)

bin/logstash -f test.conf 
Settings: Default pipeline workers: 8 
Pipeline main started 

С флагом, он будет жаловаться, если вы не установите его:

bin/logstash --allow-env -f test.conf 
fetched an invalid config {:config=>"input {\n file {\n  path => \"/tmp/${RUN_ID}/*.txt\"\n  start_position => beginning\n  sincedb_path => \"/dev/null\"\n  ignore_older => 0\n }\n}\n\noutput {\nstdout { codec=>rubydebug}\n elasticsearch {\n  hosts => [ \"localhost:9200\" ]\n  index => \"${RUN_ID}\"\n }\n}\n\n\n", :reason=>"Cannot evaluate `${RUN_ID}`. Environment variable `RUN_ID` is not set and there is no default value given.", :level=>:error} 

И из курс с аргументом и флагом, все работает правильно:

export RUN_ID=10 
bin/logstash --allow-env -f test.conf 
Pipeline main started 
{ 
     "message" => "asdfasdf", 
     "@version" => "1", 
    "@timestamp" => "2016-11-01T21:10:15.964Z", 
      "path" => "/tmp/10/test.txt", 
      "host" => "XXXXXXXXX.local" 
} 
+1

спасибо ** so ** много! Не могу поверить, что они явно не упоминают об этом в [docs] (https://www.elastic.co/guide/en/logstash/current/environment-variables.html)! – Idos

+0

Это также относится к logstash 5.2? – Vinod

+1

Флаг командной строки не нужен на 5.x – Alcanzar

 Смежные вопросы

  • Нет связанных вопросов^_^