2017-12-02 4 views
3
Stashing your first event에 대한

Logstash 6.0 문서는 단순히 파이프 표준 출력에 stdin을 간단한 파이프 라인 logstash 실행하려면 다음 명령을 보여줍니다 공식 도커 컨테이너에서 logstash를 실행하면 호환되지 않는 명령 행 옵션에 대한 오류 메시지와 함께 실패합니다.고정 표시기와 명령 줄에서 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가 시작될 수 있는지 간단하게 테스트하고 싶다면이 간단한 경우를 위해 노력하십시오. 구성 파일을 마운트하지 않고이 오류를 해결하는 방법은 무엇입니까? logstash 고정 표시기 이미지 내부의 시작 스크립트에 찾고

답변

4

, 하나는 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 변수를 거짓 값으로 설정하십시오. 그리고 실제로 :

$ 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의 다른 설정이 유지됩니다.