gpt4 book ai didi

docker - 使用 docker 在命令行上指定 logstash 配置

转载 作者:行者123 更新时间:2023-11-29 02:49:31 24 4
gpt4 key购买 nike

Stashing your first event 的 Logstash 6.0 文档显示了以下使用简单管道运行 logstash 的命令,该管道简单地将 stdin 传输到 stdout:

$ bin/logstash -e 'input { stdin { } } output { stdout {} }'

然而,这在从官方 docker 容器运行 logstash 时不起作用,并且失败并显示有关不兼容的命令行选项的错误消息:

$ docker run --rm -it docker.elastic.co/logstash/logstash-oss:6.0.0 \
-e 'input { stdin { } } output { stdout {} }'
ERROR: Settings 'path.config' (-f) and 'config.string' (-e) can't be used simultaneously.

我没有指定 -fpath.config。我只是想测试 logstash 是否可以启动并且正在为这个简单的案例工作。如何在不挂载配置文件的情况下解决此错误?

最佳答案

查看 logstash docker 镜像中的启动脚本,可以在 logstash-core/lib/logstash/runner.rb 文件中找到以下函数:

# where can I find the logstash.yml file?
# 1. look for a "--path.settings path"
# 2. look for a "--path.settings=path"
# 3. check if the LS_SETTINGS_DIR environment variable is set
# 4. return nil if not found
def fetch_settings_path(cli_args)
if i=cli_args.find_index("--path.settings")
cli_args[i+1]
elsif settings_arg = cli_args.find {|v| v.match(/--path.settings=/) }
match = settings_arg.match(/--path.settings=(.*)/)
match[1]
elsif ENV['LS_SETTINGS_DIR']
ENV['LS_SETTINGS_DIR']
else
nil
end
end

因此解决方案似乎是通过 --path.settings=(=-空值语法)或设置 LS_SETTINGs_DIR 变量到一个虚假的值(value)。事实上:

$ docker run --rm -it docker.elastic.co/logstash/logstash-oss:6.0.0 \
--path.settings= -e 'input { stdin { } } output { stdout { } }'
The stdin plugin is now waiting for input:

关于docker - 使用 docker 在命令行上指定 logstash 配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47607076/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com