Logstash 6.7.0 не запускается с ошибкой «Ошибка: разрешение отклонено - разрешение отклонено» в macOS Mojave (10.14.4) - PullRequest
0 голосов
/ 26 апреля 2019

Недавно обновленный Logstash (который был установлен через Homebrew) в MacOS Mojave (10.14.4) до версии 6.7.0, и все работает не так, как ожидалось.Когда я пытаюсь запустить его вручную через командную строку - для локальных целей разработки - я постоянно получаю эту ошибку:

  Error: Permission denied - Permission denied
  Exception: Errno::EACCES
  Stack: org/jruby/RubyFile.java:1263:in `utime'
uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/fileutils.rb:1133:in `block in touch'

Что удивляет, когда на рабочем сервере RedHat 7 используются одни и те же точные файлы конфигурации Logstashгде у меня установлен Logstash 6.7.0 в качестве системной службы - через официальные репозитории Elastic - все работает как положено.

Мой входной файл конфигурации выглядит следующим образом:

input {

  file {
    path => "/opt/logstash/coolapp/access_log*"
    exclude => "*.gz"
    start_position => "beginning"
    sincedb_path => "/dev/null"
    close_older => "1 hour"
    stat_interval => "1 second"
    discover_interval => 15
  }

}

Эта штука довольно проста в том, что касается конфигурации, и все мои настройки соответствуют действительным / принятым настройкам в соответствии с официальным справочным руководством Logstash.Но если я закомментирую строку sincedb_path => "/dev/null", моя установка Logstash на macOS будет работать как положено.

Какого черта происходит эта проблема?Я имею в виду, что могу знать о комментировании sincedb_path => "/dev/null", когда я занимаюсь локальной разработкой, но все же ... Это действительно раздражает.

1 Ответ

1 голос
/ 26 апреля 2019

Хорошо, я понял это ... В некотором смысле. Проблема косвенно упоминается в строке ошибки:

uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/fileutils.rb:1133:in `block in touch'

И единственное временное решение, которое я нашел, это закомментировать эту строку в моей конфигурации:

sincedb_path => "/dev/null"

Похоже, что на производственном сервере, на котором я запускаю Logstash, используется JRuby версии 2.5.x, а моя локальная версия macOS, установленная через Homebrew, использует jRuby версии 2.4.x. И, очевидно, fileutils.rb в JRuby 2.4.x обрабатывает touch в случаях для несуществующих устройств (таких как /dev/null) иначе, чем JRuby 2.5.x. И, таким образом, Logstash дает сбой в моей настройке разработки macOS.

Так что, похоже, это была проблема Homebrew (или macOS?), А не проблема Logstash.

...