问题 运行 带有 -f 标志的 logstash docker

problems running logstash with -f flag in docker

我正在尝试使用以下命令 运行 red hat 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 容器不是 运行ning。

如果我执行以下命令:

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 进程现在 运行正在容器中,我可以管理在配置文件中设置的日志文件。

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

谢谢大家。

尝试在 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"}

问题已解决。这是主机 machine.Thanks 中的一个目录权限,用于帮助@NOTtardy