最近在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"
在进行本地开发工作时会注意到将其注释掉,但是……这确实很烦人。
好吧,我想通了……某种程度上。在错误行中倾斜提到了该问题:
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] 删除。
我来说两句