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

3xiyfsfu  于 2022-12-09  发布在  Logstash
关注(0)|答案(1)|浏览(289)

最近在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配置文件时,我通过the official 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",但仍然...这真的很烦人。

yhxst69z

yhxst69z1#

好吧,我想明白了......在某种程度上。这个问题在错误行中被间接地提到:

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版本使用的是jRuby 2.4.x版。显然,JRuby 2.4.x中的fileutils.rb在不存在设备(如/dev/null)的情况下处理touch的方式与JRuby 2.5.x不同。因此,Logstash在我的macOS开发设置中失败。
所以这似乎都是一个自制(或macOS?)的问题,而不是一个Logstash的问题。

相关问题