Logstash의 grok 패턴은 일련의 정규 표현식 규칙으로 구성된 텍스트 매칭 및 변환 시스템입니다. grok 패턴은 Logstash에서 로그 데이터를 추출하고 구문 분석하는 데 사용됩니다.
grok 패턴은 %{} 사이에 정의되며, 이는 필드로 인식될 텍스트의 시작과 끝을 나타냅니다. 이러한 필드는 Logstash에서 다른 필드와 함께 통합되어 키-값 쌍으로 표시되며, Elasticsearch 또는 다른 출력 플러그인으로 전송됩니다.
예를 들어, Apache 웹 서버의 액세스 로그에서 IP 주소, 날짜, 시간, 요청 및 응답 코드를 추출하려면 다음과 같은 grok 패턴을 사용할 수 있습니다.
%{IP:client} %{USER:ident} %{USER:auth} \[%{HTTPDATE:timestamp}\] "%{WORD:verb} %{URIPATHPARAM:request} HTTP/%{NUMBER:httpversion}" %{NUMBER:response} %{NUMBER:bytes} "%{DATA:referrer}" "%{DATA:agent}"
이 grok 패턴은 일반적인 Apache 액세스 로그 라인의 필드에 대한 규칙을 정의합니다. 이 패턴은 IP 주소, 아이덴티티, 인증 정보, 타임스탬프, HTTP 동사, 요청 URI, HTTP 버전, 응답 코드, 응답 크기, 참조자 및 사용자 에이전트를 추출합니다.
다양한 grok 패턴은 다양한 로그 형식 및 데이터 유형에 맞게 사용할 수 있습니다. Logstash에서는 미리 정의된 많은 grok 패턴이 제공되며, 사용자 정의 패턴도 생성할 수 있습니다.
Sample #
(config)
grok_patterns = ['%{TIMESTAMP_ISO8601} \[%{DATA}\] %{DATA:metric} %{DATA:metricname} %{DATA:datatype} %{NUMBER:metricvalue:float} %{GREEDYDATA:unit}']
(log)
2019-12-06 19:52:12.396 [integ-test-1/batch-1575642124-3139/plan-1575642124-1110-pool-3-thread-1191] metric AuroraBasedPlanDataManager_update_success_latency int32 78 milliseconds 2019-12-06 19:52:15.136 [pool-3-thread-1925] metric AuroraBasedPlanDataManager_bestEffortUpdate_error_latency int32 4 milliseconds 2019-12-06 19:52:16.410 [pool-2-thread-1] metric distance_matrix_api_ClientId_integ-test-1 int32 4 count 2019-12-06 19:52:16.410 [pool-2-thread-1] metric Plan_ClientId_integ-test-1 int32 1 count
(추출 결과)
_filed | _value |
datatype | ... |
metric | ... |
metricname | ... |
metricvalue | ... |
unit | ... |
유용한 링크 #
https://github.com/elastic/logstash/blob/v1.4.2/patterns/grok-patterns logstash grok-patterns (패턴 모음)
https://grokdebugger.com/ %{GROK:debugger} (Online Tester)
https://grokdebugger.com/ %{GROK:debugger} (Online Tester)