2016-05-31 4 views
0

elasticstarch 1.3.4 및 kibana 3.1.1과 함께 logstash-1.4.0을 사용하고 있습니다. (구식이라는 것을 알고 있습니다. 지금 당장 할 수 있습니다.) .grok 디버거에서 작동하더라도 Grok 필터가 작동하지 않음

로그 예 :

2016년 5월 31일 16시 5분 33초 RequestManager [INFO]은 수동 플래그 LOLROFLin TRALALA 123456Was 사실

내 grok 수 필터 변경됨

filter { 
    grok { 
     match => { "message" => "%{DATESTAMP:timestamp} %{WORD:clazz} %{NOTSPACE:level} %{GREEDYDATA:content}"} 
    } 

    if (!([stack_trace])) and (!([clazz] == "RequestAsset")) { 
     drop {} 
    } 
} 

내 질문은 :

  1. 왜 kibana의 grok 필드가 보이지 않습니까? 기본 필드 만 볼 수 있지만 내 것은 볼 수 없습니다. Grok Debugger는 성공을 보여 주지만 kibana는 작동하지 않습니다.

  2. 내 목표는 스택 추적이없는 모든 로그 메시지를 삭제하는 것입니다. 또는 클래스 (내 grok 필터에 clazz라고 함)가 아닌 "RequestAsset"입니다. 이게 효과가 있니? 별도의 필터에서 grok 필터로 만든 필드를 사용할 수 있습니까?

편집 : 내가 잘못, 난 이미 그 내용에 로그를 seperates log4j에 플러그인을 사용하고 무슨 일이 있었는지 깨달았다 및 필드 메시지는 이미 자신 만의 메시지였다.

답변

0

나는이 grok debugger에 grok 필터를 테스트했지만 실패했습니다. 그래서 나는 그것을 다시 썼다.

올바른 grok 필터가 있습니다. =>%{YEAR}-%{MONTHNUM}-%{MONTHDAY}[T ]%{HOUR}:?%{MINUTE}(?::?%{SECOND})?%{ISO8601_TIMEZONE}?

당신이 키바에서 "_grokparsefailure"를 참조하면

filter { 
grok { 
    match => { "message" => "%{TIMESTAMP_ISO8601:timestamp} %{WORD:clazz} %{NOTSPACE:level} %{GREEDYDATA:content}"} 
} 

if (!([stack_trace])) and (!([clazz] == "RequestAsset")) { 
    drop {} 
} 

TIMESTAMP_ISO8601, 당신은 grok 수 필터가 실패했음을 알고있다.

두 번째 질문에서 OR 연산자를 사용하면 안됩니까?

+0

둘 사이에 어떤 차이가 보이지 않습니까? 나는 또한 당신이 언급 한 grok 디버거에서 그것들을 시도했지만 둘 다 작동하지 않았다. 나는 이것을 사용하고 둘 다 일한다 : https://grokdebug.herokuapp.com/ – user1137582

+0

나는 미안하다. 나는 틀린 성한 진술을 붙여 넣었다. 편집을 확인해야합니다. –

0

무엇이 잘못되었는지 깨달았습니다. 로그 내용을 이미 구분하고있는 log4j 플러그인을 사용하고 있습니다. 필드 메시지는 이미 메시지 자체였습니다.