예 :Logstash grok 수 일치 2 개 패턴 로그 라인의
내가 원하는 무엇2017-05-04 10:37:22,972 INFO [My.Super.JAVA.CLASS] Outbound Message bla bla
2017-05-04 10:38:22,972 INFO [My.Super.JAVA.CLASS] Inbound Message bla bla
2017-05-04 10:39:22,972 INFO [My.Super.JAVA.CLASS] some other bla bla
, 3 개 패턴, 각 유형을 확인하는 것입니다. 그래서 여기에 내가 무슨 짓을했는지 : 예를 들어
"message", '(?m)%{DATE_TIME:timestamp}\s*%{LOGLEVEL:level}\s*\[%{JAVACLASS:class}\]\s*Outbound Message%{GREEDYDATA:stuff}']
"message", '(?m)%{DATE_TIME:timestamp}\s*%{LOGLEVEL:level}\s*\[%{JAVACLASS:class}\]\s*Inbound Message%{GREEDYDATA:otherstuff}']
"message", '(?m)%{DATE_TIME:timestamp}\s*%{LOGLEVEL:level}\s*\[%{JAVACLASS:class}\]\s*%{GREEDYDATA:messageInfo}'
테이크 첫 번째 로그 메시지, 그것은 때문에 GREEDYDATA 부분의 분명, 제 1 및 제 패턴이 일치합니다. 제 질문은 첫 번째 두 개의 메시지를 첫 번째 두 개의 패턴 (예 : 세 번째 패턴에서 제외)과 만 일치시키는 방법입니다.
업데이트 : (solbed) : 나는 grok에서 'if'를 사용했습니다. 패턴과 일치 할 때마다 태그에 'grokked'태그를 추가하고 바로 그 후 'grokked'가 태그에 있는지 테스트합니다. 그렇지 않으면 두 번째 패턴과 일치합니다. 세부 정보 : https://discuss.elastic.co/t/grok-with-conditional-patterns-and-adding-a-tag/43844/2