2014-10-02 2 views
0

각 파일 로그가 특정 컴퓨터에 대한 로그 파일 집합이 있습니다.logstash 개별 로그를 여러 줄로 구문 분석

나는 각 파일에 대해 @timestamp을 하나 갖고 싶기 때문에 multiline{} 필터를 사용하여 각 파일의 여러 줄 메시지에 가입하는 방법을 사용합니다. 로그 파일

예 데이터

표제

설명

TEST1

테스트 통과

테스트 단부

,
filter { 
    multiline { 
    pattern => "from_start_line to end of line" 
    what => "previous" 
    negate => true 
    } 
} 

패턴을 사용하지 않고 로그 파일의 모든 데이터를 단일 이벤트로 만들고 싶습니다.

많은 사람들이 logstash에게 EOF까지 여러 줄짜리 이벤트를 만들기를 좋아합니다.

답변

0

이렇게하면 안됩니다. logstash는 항상 파일을 계속 모니터링합니다. 따라서 EOF는 의미가 없습니다.

다른 방법으로 로그 끝 부분에 패턴을 추가 할 수 있습니다. 예를 들어, 각 로그 출력의 끝에 log_end을 추가하십시오.

title 

description 

test1 

test pass 

test end-log_end 

그런 다음이 패턴을 사용하여 모든 로그를 여러 줄로 표시 할 수 있습니다.

multiline { 
    pattern => "log_end$" 
    negate => true 
    what => "next" 
} 

희망이 도움이 될 수 있습니다.

+0

나는 단지 다중 행 앞에 mutate {gsub => [ 'message', "any word", "replace to word"]}를 사용하여 메시지 내용을 바꿀 수 있다는 것을 알고 있지만 마지막 줄에만 log_end를 추가하는 방법 너 제안 했니? –

+0

즉, 로그를 출력하는 프로그램/코드를 추가해야합니다. –

+1

로그에만 액세스 할 수 있으므로 서버에서 모든 로그를 다운로드하고 logstash에 패턴을 보내기 전에 로그에 패턴을 추가하는 데 C++/python 스크립트를 사용해야한다는 것을 알 수 있습니다. = / –

관련 문제