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

贾科莫1968

最近在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配置文件时,通过正式的Elastic repos在其中安装了Logstash 6.7.0作为系统服务,一切正常。

我的输入配置文件如下所示:

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"在进行本地开发工作时会注意到将其注释掉,但是……这确实很烦人。

贾科莫1968

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

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问题。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章