【问题标题】:Can't run logstash as service无法将logstash作为服务运行
【发布时间】:2016-09-27 19:32:05
【问题描述】:

我有以下 logstash.config 文件:

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): /opt/bin/logstash -f /etc/logstash/conf.d/logstash.config

但是当我尝试将 logstash 作为服务运行时(sudo service logstash start)它不起作用(没有创建输出文件)。当我尾随 /var/log/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 作为服务运行?

【问题讨论】:

  • 那些日志是调试日志,不是错误日志,那又怎样,让你觉得它不起作用?
  • 调试日志为最低级别的日志,消息与应用的正常使用无关。
  • 如果您已经使用 Logstash 读取了日志文件,并且此后该文件未更新,则 Logstash 将没有任何可读取的内容,因为它会记住它停止的位置(参见 elastic.co/guide/en/logstash/current/…)。
  • 它不起作用,因为没有创建输出文件。现在我强迫它从一开始就读;另外,我编辑了帖子。

标签: logstash


【解决方案1】:

这几乎肯定是权限问题。当手动运行 logstash 时,您以用户身份运行它,当它作为服务运行时,它以 logstash 用户身份运行。

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

sudo -u logstash /bin/bash

这将使您以 logstash 用户身份登录到 shell。尝试减少您尝试阅读的文件。

如果您有访问权限,则需要检查您的 sincedb 文件(将路径设置为 /dev/null)并重新启动,请参阅:How to force Logstash to reparse a file?

如果您没有访问权限,请将您的文件移到他们可以访问的地方。或授予 logstash 用户/组的读取权限。

问候,

阿图尔

【讨论】:

  • 没错!我的文件 /home/username/log-stream-test.log 对每个人都具有读取权限,但子目录 /home/username/ 仅对所有者(用户名)具有权限。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-08
  • 1970-01-01
  • 1970-01-01
  • 2016-05-20
  • 2010-11-18
  • 1970-01-01
相关资源
最近更新 更多