Logsta sh: TypeError: нет неявного преобразования nil в строку - PullRequest
0 голосов
/ 18 марта 2020

Я новичок в ELK и пытаюсь ввести сторонний REST API в Logsta sh для подачи данных в него. Я получаю TypeError: нет явного преобразования nil в строку.

Я использую плагин http_input_poller для подачи данных. Вот конфигурация для этого.

input {
  http_poller {
    urls => {
      test1 => "https://example.com/api/now/table/sys_user?sysparm_limit=1"
    }
    request_timeout => 60
    # Supports "cron", "every", "at" and "in" schedules by rufus scheduler
    schedule => { cron => "* * * * * UTC"}
    codec => "json"
    # A hash of request metadata info (timing, response headers, etc.) will be sent here
    metadata_target => "http_poller_metadata"
  }
}

output {
  stdout {
    codec => rubydebug
  }
}

Я использую эту команду для запуска

sudo ./logstash -f logstash_http_poller.conf --path.settings /etc/logstash/ --path.data

Я получаю это сообщение об ошибке

masteradmin@usr:/usr/share/logstash/bin$ sudo ./logstash -f logstash_http_poller.conf --path.settings /etc/logstash/ --path.data
[FATAL] 2020-03-18 07:07:07.377 [main] runner - An unexpected error occurred! {:error=>#<TypeError: no implicit conversion of nil into String>, :backtrace=>["org/jruby/RubyFileTest.java:96:in `directory?'", "org/jruby/RubyFileTest.java:88:in `directory?'", "/usr/share/logstash/logstash-core/lib/logstash/settings.rb:510:in `block in value'", "org/jruby/RubyKernel.java:1906:in `tap'", "/usr/share/logstash/logstash-core/lib/logstash/settings.rb:509:in `value'", "/usr/share/logstash/logstash-core/lib/logstash/settings.rb:97:in `get_value'", "/usr/share/logstash/logstash-core/lib/logstash/environment.rb:94:in `block in LogStash'", "/usr/share/logstash/logstash-core/lib/logstash/settings.rb:167:in `block in post_process'", "org/jruby/RubyArray.java:1814:in `each'", "/usr/share/logstash/logstash-core/lib/logstash/settings.rb:166:in `post_process'", "/usr/share/logstash/logstash-core/lib/logstash/util/settings_helper.rb:26:in `post_process'", "/usr/share/logstash/logstash-core/lib/logstash/runner.rb:246:in `execute'", "/usr/share/logstash/vendor/bundle/jruby/2.5.0/gems/clamp-0.6.5/lib/clamp/command.rb:67:in `run'", "/usr/share/logstash/logstash-core/lib/logstash/runner.rb:242:in `run'", "/usr/share/logstash/vendor/bundle/jruby/2.5.0/gems/clamp-0.6.5/lib/clamp/command.rb:132:in `run'", "/usr/share/logstash/lib/bootstrap/environment.rb:73:in `<main>'"]}
[ERROR] 2020-03-18 07:07:07.386 [main] Logstash - java.lang.IllegalStateException: Logstash stopped processing because of an error: (SystemExit) exit

Нужна помощь , Спасибо

1 Ответ

0 голосов
/ 25 марта 2020

После некоторого анализа сообщения об ошибке я твердо убежден, что эта ошибка возникает из-за того, что не указано значение для аргумента --path.data.

  • TypeError: no implicit conversion of nil into String> может указывать на то, что nil (несуществующий путь) не может быть преобразован в строку (каким должно быть значение пути / аргумента)

  • RubyFileTest.java:96:in ``directory?'" указывает, что класс ruby ожидал допустимый каталог

Поэтому, пожалуйста, укажите значение для аргумента в вашей команде run и дайте мне знать, если это решена проблема.

РЕДАКТИРОВАТЬ:

Аргумент path.data не является обязательным, поэтому вы можете удалить его. Тогда местоположением по умолчанию будет папка данных внутри каталога, в который вы извлекли двоичные файлы. (См. https://www.elastic.co/guide/en/logstash/current/dir-layout.html для справки)

...