2014-06-10 13 views
3

stdin을 입력 스트림으로 사용할 때 올바른 출력을 얻었습니다. 그러나 파일을 입력으로 사용할 때마다 다음 메시지 이후에 출력이 멈 춥니 다.logstash에 대해 파일 입력이 작동하지 않습니다.

"Using milestone 2 input plugin 'file'. This plugin should be stable but if you see strange behavior, please let us know." 

여기에 제 설정 파일이 있습니다.

input { 
    file { 
    path => ["c:/users/a/b/c/logstash-1.4.1/bin/logs/logfile.log"] 
    start_position => beginning 
    } 
} 

filter { 
    grok { 
       patterns_dir => "./patterns" 
       break_on_match => "false" 
       match => ["message", "%{MY_DATE:my_date}"] 
     } 
    grok { 
       patterns_dir => "./patterns" 
       break_on_match => "false" 
       match => ["message", "%{DATE:date}"] 
     } 
    grok { 
       patterns_dir => "./patterns" 
       break_on_match => "false" 
       match => ["message", "%{TIME:time}"] 
     } 
    grok { 
       patterns_dir => "./patterns" 
       break_on_match => "false" 
       match => ["message", "%{LOG_LEVEL:log_level}"] 
     } 
    grok { 
       patterns_dir => "./patterns" 
       break_on_match => "false" 
       match => ["message", "%{SERVER:server}"] 
     } 
    grok { 
       patterns_dir => "./patterns" 
       break_on_match => "false" 
       match => ["message", "%{CLASS_NAME:class_name}"] 
     } 

} 

output { 
    stdout { codec => rubydebug } 
    elasticsearch { host => localhost } 
} 

내 파일 경로의 형식이 잘못 되었습니까?

+0

이 문제를 해결할 수 있었습니까? –

답변

5

로그 파일에 새 로그를 기록 하시겠습니까?

start_position 옵션은 a file is new and not seen before 인 "첫 번째 연락처"상황 만 수정합니다. Logstash가 각 파일에 대해 sincedb을 저장하여 모니터링되는 로그 파일의 현재 위치를 추적하기 때문입니다. 그러면 다음에 Logstash를 다시 시작하면 Logstash가 sincedb 레코드를 기반으로 파일 모니터링을 시작하고 start_position이 작동하지 않습니다.

이전 로그를 가져 오려면 logstash를 시작하고 start_position 옵션을 추가하기 전에 모든 .sincedb 파일을 삭제해야합니다. 여기

+0

홈 디렉토리에서 이전의 모든 sincedb 파일을 삭제하고 grok 필터 만 사용하여 구성 파일을 단순화했습니다. 그러나 이정표 메시지를 보여준 후에도 여전히 얼어 붙어 있습니다. – anshk9

+0

저는 리눅스로 전환했고 여전히 동일한 문제가 있습니다. – anshk9

4

두 가지 문제 :

  1. sincedb의 processs 파일에서 읽기 위치를 추적하기 위해 현재 Windows에서 분류됩니다 https://logstash.jira.com/browse/LOGSTASH-429. 패치가 있지만 다른 사람들이 이것이 버전 1.4.1에서 여전히 깨진 것을 확인했습니다.
  2. 설명서에 따라 "end"로 기본 설정되어있는 따옴표가 필요하다고 생각합니다. start_position입니다. 그래서 나는 당신의 지시어를 무시하고있는 것으로 생각합니다.

경우 start_position Logstash 처음에 파일을 읽기 시작하는 위치를

Value can be any of: "beginning", "end" 
Default value is "end" 

가 선택 시작 또는 끝에. 기본 비헤이비어에서는 라이브 스트림과 같은 파일을 처리하므로 이 끝나면 시작됩니다. 가져올 오래된 데이터가있는 경우 을 '시작'으로 설정하십시오.

조합을 사용하면 항상 파일의 끝에서 시작할 수 있습니다.

지금은 직장에서 액세스 할 수 없지만 지금은 테스트 할 수 없습니다.

0

Mac에서는 logstash-1.5.4를 사용하고 있습니다. 비슷한 문제가 발생하여 conf 파일에 sincedb_path를 명시 적으로 설정하여 해결했습니다.

sincedb_path => "your sincedb path"

나는 우리가 logstash 다른 운영 체제의 다른 버전을 사용하고 있기 때문에이 솔루션이 문제를 해결할 것인지 모르겠습니다.

디버그 모드로 명령을 실행하면 어떤 일이 일어나고 있는지 확인할 수 있습니다.

./bin/logstash -f my_logstash.conf --debug