在docker中使用-f标志运行logstash的问题

时间:2016-05-05 12:07:58

标签: docker logstash redhat

我正在尝试使用以下命令运行redst 7中的logstash容器:

docker run -v /home/logstash/config:/conf -v /home/docker/logs:/logs logstash logstash -f /conf/logstash.conf --verbose

并收到的回复是:

{:timestamp=>"2016-05-05T10:21:20.765000+0000", :message=>"translation missing: en.logstash.runner.configuration.file-not-found", :level=>:error}
{:timestamp=>"2016-05-05T10:21:20.770000+0000", :message=>"starting agent", :level=>:info}

并且logstash容器未运行。

如果我执行以下命令:

docker run -dit -v /home/logstash/config:/conf -v /home/docker/logs:/logs --name=logstash2 logstash logstash -e 'input { stdin { } } output { stdout { } }'

使用以下命令输入容器:

docker exec -ti bash

并执行:

logstash -f /conf/logstash.conf

新的logstash进程现在正在容器中运行,我可以管理在配置文件中设置的日志文件。

我知道为什么会有这种奇怪的行为?

谢谢大家。

2 个答案:

答案 0 :(得分:1)

问题解决了。它是主机中的目录权限。感谢帮助@NOTtardy

答案 1 :(得分:0)

尝试围绕logstash -f /conf/logstash.conf --verbose

制作双引号

编辑:只是试过你命令自己,它工作正常。可能是你的logstash.conf是错误的原因。

我使用了一个非常简单的logstash.conf

input {
    udp {
        port => 5000
        type => syslog
    }
}
output {
    stdout {
        codec => rubydebug
    }
}

获得以下输出

{:timestamp=>"2016-05-05T18:24:26.294000+0000", :message=>"starting agent", :level=>:info}
{:timestamp=>"2016-05-05T18:24:26.332000+0000", :message=>"starting pipeline", :id=>"main", :level=>:info}
{:timestamp=>"2016-05-05T18:24:26.370000+0000", :message=>"Starting UDP listener", :address=>"0.0.0.0:5000", :level=>:info}
{:timestamp=>"2016-05-05T18:24:26.435000+0000", :message=>"Starting pipeline", :id=>"main", :pipeline_workers=>1, :batch_size=>125, :batch_delay=>5, :max_inflight=>125, :level=>:info}
{:timestamp=>"2016-05-05T18:24:26.441000+0000", :message=>"Pipeline main started"}