Logstash 6.7.0无法在macOS Mojave(10.14.4)上启动,并显示错误“错误:权限被拒绝-权限被拒绝”

时间:2019-04-26 02:12:23

标签: macos logstash homebrew

最近在macOS Mojave(10.14.4)上将Logstash(通过Homebrew安装)升级到版本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 6.7.0作为系统服务的RedHat 7生产服务器上使用完全相同的Logstash配置文件时,令人发疯的事情是所有工作都按预期进行。

我的输入配置文件如下:

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"行,则我在macOS上的Logstash设置将按预期工作。

到底是什么引起了这个问题?我的意思是说我在进行本地开发工作时可以注意到将sincedb_path => "/dev/null"注释掉了,但是……这确实很烦人。

1 个答案:

答案 0 :(得分:1)

好吧,我想出了……在某种程度上。错误行中倾斜地提到了该问题:

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,而通过Homebrew安装的本地macOS版本正在使用jRuby2.4.x。显然,对于不存在的设备(例如fileutils.rb),JRuby 2.4.x中的touch处理/dev/null的情况与JRuby 2.5.x不同。因此,Logstash在我的macOS开发设置中失败。

因此,这似乎全是Homebrew(或macOS?)问题,而不是Logstash问题。