2016-09-27 58 views
0

我有以下logstash.config文件:无法运行logstash作为服务

input { 
    file { 
     path => "/home/username/log-stream-test.log" 
     start_position => "beginning" 
     sincedb_path => "/dev/null" 
    } 
} 
output { 
    file { 
     path => "/tmp/log-stream-output.log" 
    } 
} 

我可以运行logstash强制配置文件(它会创建输出文件/tmp/log-stream-output.log) : /选择/斌/ logstash -f /etc/logstash/conf.d/logstash.config

但是当我尝试运行logstash作为服务(须藤服务logstash启动)它不工作(没有输出文件被建造)。当我尾部的/ var /日志/ logstash /(与--debug选项激活)我得到这样一些信息:

{:timestamp=>"2016-09-27T19:05:03.898000+0000", :message=>"Reading config file", :config_file=>"/etc/logstash/conf.d/logstash.config", :level=>:debug, :file=>"logstash/config/loader.rb", :line=>"69", :method=>"local_config"} 
{:timestamp=>"2016-09-27T19:05:04.026000+0000", :message=>"Plugin not defined in namespace, checking for plugin file", :type=>"input", :name=>"file", :path=>"logstash/inputs/file", :level=>:debug, :file=>"logstash/plugin.rb", :line=>"86", :method=>"lookup"} 

我缺少的东西?我如何使用此配置文件将logstash作为服务运行?

+0

这些日志调试日志,而不是错误日志,还等什么,让你认为它不工作? – Val

+0

调试日志是日志的最低级别,消息与正常使用应用程序无关。 – baudsp

+0

如果您已经使用Logstash读取了日志文件,并且此文件之后未更新,Logstash将无法读取任何内容,因为它记住它停止的位置(参见https://www.elastic.co/guide/en /logstash/current/plugins-inputs-file.html#_tracking_of_current_position_in_watched_files)。 – baudsp

回答

1

这几乎肯定是一个权限问题。在手动运行logstash时,将其作为用户运行,当它作为服务运行时,它将作为logstash用户运行。

测试您可以访问您的文件:

sudo -u logstash /bin/bash 

这将让您登录到一个shell作为logstash用户。尽量少尝试读取的文件。

如果你有机会,你需要检查你的sincedb文件(路径设置为/ dev/null的),然后重新启动,请参阅:How to force Logstash to reparse a file?

如果你用不上,地方在那里移动文件他们确实有访问权限。或授予对logstash用户/组的读取访问权限。

问候,

阿图尔

+0

没错!我的文件/home/username/log-stream-test.log有权给所有人读取它,但是子目录/ home/username /仅拥有所有者(用户名)的权限。谢谢! – Danilo