2017-12-02 6 views
3

Logstash 6.0のマニュアルは、単にパイプが標準出力に標準入力、簡単なパイプラインでlogstash実行するには、次のコマンドを示してコマンドラインでlogstash設定を指定します。しかしこれは動作しません<a href="https://www.elastic.co/guide/en/logstash/current/first-event.html#first-event" rel="nofollow noreferrer">Stashing your first event</a>用ドッキングウィンドウ

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

公式ドッキングウィンドウコンテナから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. 

-fまたはpath.configを指定していません。私は単にlogstashを起動できるかどうかをテストし、この単純なケースで作業したいと思っています。設定ファイルをマウントせずにこのエラーを回避するには?

答えて

4

logstash]ドッキングウィンドウの画像内の起動スクリプトを見ると、1は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 

だから、解決策は、(空の値で= -syntax)--path.settings=を渡すためにどちらかと思われますか変数LS_SETTINGs_DIRを偽の値に設定します。そして実際:

$ 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: 
0

Knittlがdocker.elastic.co/logstash/logstashから取られたこのような何かを(に見えるlogstash.ymlファイルであるlogstash設定のために相談されて--path.settingsを述べたように: 6.1.2画像:

http.host: "0.0.0.0" path.config: /usr/share/logstash/pipeline xpack.monitoring.elasticsearch.url: http://elasticsearch:9200 xpack.monitoring.elasticsearch.username: logstash_system xpack.monitoring.elasticsearch.password: changeme

問題がデフォルトlogstash.confを含むディレクトリにpath.config点である

ない副作用を有する溶液である。

$ docker run --rm -it docker.elastic.co/logstash/logstash-oss:6.0.0 \ --path.config="" -e 'input { stdin { } } output { stdout { } }'

このようにして、logstash.ymlの他の設定は維持されます。

関連する問題